package space.nstart.pcp.pcp_types_lib.dto.requests.slots

import space.nstart.pcp.pcp_types_lib.dto.ballistics.RevolutionSign
import java.time.LocalDateTime

/**
 * Забронированный слот для отображения и снятия брони (GET /api/slots/booking/by-request/{id}).
 *
 * В отличие от [SlotDTO] несёт [bookedSlotId] — он нужен фронту, чтобы снимать бронь по списку id
 * (DELETE /api/slots/booking/batch). В отличие от [BookedSlotDTO] несёт контур и координаты — нужны
 * карте. Критично: [cycle] — это цикл БРОНИ (BookedSlotEntity.cycle), а не базовый slot.cycle,
 * иначе ключ sat:slotNum:cycle на фронте не совпадёт с ответом POST booking/request.
 */
class BookedSlotViewDTO(
    val bookedSlotId : Long = 0,
    val cycle : Long = 0,
    val satelliteId : Long = 0,
    val tn : LocalDateTime,
    val tk : LocalDateTime,
    val roll : Double,
    val contour : String,
    val revolution : Long = 0,
    val revolutionSign: RevolutionSign = RevolutionSign.ASC,
    val slotNumber : Long = 0,
    val state : SlotStatus = SlotStatus.BOOKED,
    val latitude : Double = 0.0,
    val longitude : Double = 0.0,
)
