package space.nstart.pcp.pcp_types_lib.dto.ballistics

import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.annotation.JsonProperty
import io.swagger.v3.oas.annotations.media.Schema
import jakarta.validation.constraints.DecimalMax
import jakarta.validation.constraints.DecimalMin
import java.util.UUID

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "Модель данных наземной станции")
class StationDTO(

    val id : UUID? = null,

    @JsonProperty
    @field:Schema(
        description = "Идентификатор станции",
        example = "1")
    val number : Int = 0,

    @JsonProperty
    @field:Schema(
        description = "Название станции",
        example = "КПП")
    val name : String = "",

    @JsonProperty
    @field:Schema(
        description = "Положение"
    )
    val position : PositionDTO = PositionDTO(),
    @JsonProperty
    @field:Schema(
        description = "Минимальный угол места, град",
        example = "5.0"
    )
    @field:DecimalMin(value = "${90 * (-1)}",
        message = "Минимальный угол места не должнен быть меньше -90 град")
    @field:DecimalMax(value = "${90}",
        message = "Минимальный угол места не должен быть больше 90 град")
    val elevationMin : Double = 0.0,

    @JsonProperty
    @field:Schema(
        description = "Максимальный угол места, град",
        example = "90"
    )
    @field:DecimalMin(value = "${90 * (-1)}",
        message = "Максимальный угол места не должен быть меньше -90 град")
    @field:DecimalMax(value = "${90}",
        message = "Максимальный угол места не должен быть больше 90 град")
    val elevationMax : Double = 90.0
) {
}