package space.nstart.pcp_tgu_service.dto

import java.time.LocalDateTime

/**
 * DTO сообщения из Kafka с обновлением данных
 * по одному космическому аппарату.
 *
 * @property spacecraftId идентификатор космического аппарата.
 * @property points список пунктов наблюдения.
 */
data class SpacecraftPointsMessage(

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

    /** Список пунктов наблюдения */
    val points: List<PointMessage>
)

/**
 * DTO пункта закладки.
 *
 * @property pointId идентификатор пункта.
 * @property observationWindows окна наблюдения.
 */
data class PointMessage(

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

    /** Окна наблюдения */
    val observationWindows: List<ObservationWindowMessage>
)

/**
 * DTO окна наблюдения.
 *
 * @property startTime время начала окна.
 * @property endTime время окончания окна.
 * @property elevationAngle угол места.
 */
data class ObservationWindowMessage(

    /** Время начала окна наблюдения */
    val startTime: LocalDateTime,

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

    /** Угол места */
    val elevationAngle: Double
)
