package space.nstart.pcp_tgu_service.controller

/** Содержит методы API только на чтение для платформ из внешнего классификатора. */
import space.nstart.pcp_tgu_service.domain.PlatformCatalogItem
import space.nstart.pcp_tgu_service.dto.PlatformResponse
import space.nstart.pcp_tgu_service.service.PlatformService
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

/**
 * REST-контроллер для просмотра списка космических аппаратов.
 */
@RestController
@RequestMapping("/api/platforms")
@Tag(name = "Platforms", description = "Работа со списком космических аппаратов")
class PlatformController(
    private val platformService: PlatformService
) {

    /**
     * Возвращает список космических аппаратов из внешнего классификатора.
     */
    @GetMapping
    @Operation(summary = "Получить список космических аппаратов")
    fun getPlatforms(
        @RequestParam(required = false) status: String?
    ): List<PlatformResponse> =
        platformService.loadPlatforms(status).map { platform -> platform.toResponse() }

    private fun PlatformCatalogItem.toResponse(): PlatformResponse =
        PlatformResponse(
            id = nsiId,
            businessKey = businessKey,
            name = name,
            status = status,
            noradId = noradId,
            mission = mission,
            validFrom = validFrom,
            validTo = validTo
        )
}
