package org.nstart.dep265.requestservice.dto

import com.fasterxml.jackson.annotation.JsonFormat
import jakarta.validation.constraints.DecimalMin
import jakarta.validation.constraints.NotNull
import java.time.LocalDateTime

/**
 * Текущие настройки сетки.
 */
data class GridSettingsResponseDto(
    /** Идентификатор набора настроек сетки. */
    val settingsId: Long,

    /** Шаг построения сетки в градусах. */
    val calculationStep: Double,
)

/**
 * Обновляемые настройки сетки. Обновление не запускает rebuild автоматически.
 */
data class UpdateGridSettingsRequestDto(
    /** Новый шаг построения сетки в градусах. */
    @field:NotNull
    @field:DecimalMin(value = "0.0", inclusive = false)
    val calculationStep: Double?,
) : StrictRequestApiDto()

/**
 * Результат явного перестроения сетки и request_cells projection.
 */
data class GridRebuildResponseDto(
    /** Количество ячеек earth_cells после перестроения. */
    val cellsCount: Long,

    /** Количество активных заявок, для которых пересобраны request_cells. */
    val rebuiltRequestProjectionsCount: Long,

    /** Дата-время завершения перестроения в UTC. */
    @field:JsonFormat(shape = JsonFormat.Shape.STRING)
    val rebuiltAt: LocalDateTime,
)
