namespace TrackQrApi.Features.QRCodes.Common;

/// <summary>
///     QR code style configuration stored as JSON
/// </summary>
public class QRCodeStyle
{
    /// <summary>Foreground color in hex format (e.g., "#000000")</summary>
    public string ForegroundColor { get; set; } = "#000000";

    /// <summary>Background color in hex format (e.g., "#FFFFFF")</summary>
    public string BackgroundColor { get; set; } = "#FFFFFF";

    /// <summary>Error correction level: L (7%), M (15%), Q (25%), H (30%)</summary>
    public string ErrorCorrectionLevel { get; set; } = "M";

    /// <summary>Quiet zone (margin) in modules</summary>
    public int QuietZone { get; set; } = 4;

    /// <summary>Module shape: Square, Circle, Rounded</summary>
    public string ModuleShape { get; set; } = "Square";

    /// <summary>Eye shape: Square, Circle, Rounded</summary>
    public string EyeShape { get; set; } = "Square";

    /// <summary>Pixels per module for rendering</summary>
    public int PixelsPerModule { get; set; } = 20;
}

public record QRCodeResponse(
    Guid Id,
    Guid WorkspaceId,
    Guid? ProjectId,
    Guid? ShortLinkId,
    string? ShortLinkSlug,
    string Name,
    QRCodeStyle Style,
    Guid? LogoAssetId,
    string? LogoUrl,
    DateTime CreatedAt,
    DateTime UpdatedAt
);

public record QRCodeListResponse(
    IEnumerable<QRCodeResponse> QRCodes
);

public record QRCodePreviewResponse(
    string DataUrl,
    string Format,
    int Width,
    int Height
);