package space.nstart.pcp_tgu_service.dto

import space.nstart.pcp_tgu_service.entity.PlannedPlanEntity
import space.nstart.pcp_tgu_service.entity.PlannedPlanStatus
import java.time.LocalDateTime
import java.util.UUID

/**
 * DTO ответа REST API для плана.
 */
data class PlanResponse(

    /** UUID-идентификатор плана */
    val planId: UUID,

    /** Идентификатор космического аппарата */
    val spacecraftId: String,

    /** Время начала плана */
    val startTime: LocalDateTime,

    /** Время окончания плана */
    val endTime: LocalDateTime,

    /** Идентификатор пункта закладки */
    val kppId: String,

    /** Статус persisted плана в жизненном цикле выдачи. */
    val status: PlannedPlanStatus
) {

    companion object {

        /**
         * Преобразует доменную сущность плана в DTO ответа.
         */
        fun from(plan: PlannedPlanEntity): PlanResponse =
            PlanResponse(
                planId = plan.planId,
                spacecraftId = plan.spacecraftId,
                startTime = plan.startTime,
                endTime = plan.endTime,
                kppId = plan.kppId,
                status = plan.status
            )
    }
}
