package space.nstart.pcp.slots_service.dto.bookings

import space.nstart.pcp.pcp_types_lib.dto.satellite.SatelliteSummaryDTO
import java.time.LocalDateTime

/**
 * UI DTO for the bookings page. It intentionally lives in ui-service because the page combines
 * data from slots-service, request-service and satellite-catalog-service without changing their APIs.
 *
 * Времена ([LocalDateTime]) — naive ISO без зоны (локальное настенное время, без UTC-семантики).
 */
data class BookedSlotViewDTO(
    val bookedSlotId: Long,
    val satelliteId: Long,
    val satelliteCode: String? = null,
    val satelliteName: String? = null,
    val satelliteTypeCode: String? = null,
    val slotNum: Long,
    val cycle: Long,
    val timeStart: LocalDateTime? = null,
    val timeStop: LocalDateTime? = null,
    val durationSeconds: Long? = null,
    val roll: Double? = null,
    val revolution: Long? = null,
    val revolutionSign: String? = null,
    val status: String? = null,
    val requestIds: List<String> = emptyList(),
)

data class BookingRequestOptionDTO(
    val id: String,
    val name: String = "",
)

data class BookingFilterOptionsDTO(
    val satellites: List<SatelliteSummaryDTO> = emptyList(),
    val requests: List<BookingRequestOptionDTO> = emptyList(),
)
