CanListAvailableNests.kt

package de.pflugradts.passbird.application.commandhandling.capabilities
import de.pflugradts.passbird.domain.model.nest.Nest.Companion.DEFAULT
import de.pflugradts.passbird.domain.service.nest.NestService
class CanListAvailableNests constructor(private val nestService: NestService) {
    fun hasCustomNests() = nestService.all().anyMatch { it.isPresent }
    fun getAvailableNests(includeCurrent: Boolean) =
        (if (includeCurrent || nestService.currentNest() != DEFAULT) "\t0: ${DEFAULT.viewNestId().asString()}\n" else "") +
            nestService.all()
                .filter { it.isPresent }
                .map { it.get() }
                .filter { includeCurrent || it != nestService.currentNest() }
                .map { "\t${it.slot.index()}: ${it.viewNestId().asString()}" }
                .toList().joinToString("\n")
}