package space.nstart.pcp.complan.types

import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty
import io.swagger.v3.oas.annotations.media.Schema
import java.time.LocalDateTime
import java.util.UUID

@Schema(description = "Запрос расчета модели комплексного плана для одной заявки")
@JsonIgnoreProperties(ignoreUnknown = true)
data class ComplexPlanCalculationRequestDTO(
    @get:JsonProperty("requestId")
    @param:JsonProperty("requestId")
    val requestId: UUID,

    @get:JsonProperty("satelliteIds")
    @param:JsonProperty("satelliteIds")
    val satelliteIds: List<Long>,

    @get:JsonProperty("calculationStart")
    @param:JsonProperty("calculationStart")
    val calculationStart: LocalDateTime,

    @get:JsonProperty("calculationEnd")
    @param:JsonProperty("calculationEnd")
    val calculationEnd: LocalDateTime,

    @get:JsonProperty("calculationMode")
    @param:JsonProperty("calculationMode")
    val calculationMode: DynamicPlanCalculationMode = DynamicPlanCalculationMode.FULL,

    @get:JsonProperty("revolutionMode")
    @param:JsonProperty("revolutionMode")
    val revolutionMode: DynamicPlanRevolutionMode = DynamicPlanRevolutionMode.BOTH,

    @get:JsonProperty("filterCoveredRoutes")
    @param:JsonProperty("filterCoveredRoutes")
    val filterCoveredRoutes: Boolean = false
)
