using System.Text.Json.Serialization;

namespace SatelliteProvider.Common.DTO;

public class CreateRouteRequest
{
    // AZ-809: [JsonRequired] enforces presence at the deserializer; range and
    // shape checks live in `SatelliteProvider.Api/Validators/CreateRouteRequestValidator`.
    // Description and Geofences remain optional. The legacy in-service
    // `RouteValidator` is left in place as defense-in-depth for direct
    // service-layer callers (e.g. unit tests).
    [JsonRequired]
    public Guid Id { get; set; }

    [JsonRequired]
    public string Name { get; set; } = string.Empty;

    public string? Description { get; set; }

    [JsonRequired]
    public double RegionSizeMeters { get; set; }

    [JsonRequired]
    public int ZoomLevel { get; set; }

    [JsonRequired]
    public List<RoutePoint> Points { get; set; } = new();

    [JsonPropertyName("geofences")]
    public Geofences? Geofences { get; set; }

    [JsonRequired]
    public bool RequestMaps { get; set; }

    [JsonRequired]
    public bool CreateTilesZip { get; set; }
}

