namespace PromotionService.API.Application.DTOs;

/// <summary>
/// EN: Campaign DTO for API responses.
/// VI: DTO Campaign cho các phản hồi API.
/// </summary>
public record CampaignDto(
    Guid Id,
    Guid MerchantId,
    string Name,
    string? Description,
    string BackingAssetType,
    string BackingAssetCode,
    decimal FaceValue,
    string AcquisitionType,
    decimal AcquisitionPrice,
    int TotalVouchers,
    int IssuedVouchers,
    int AvailableVouchers,
    DateTime StartDate,
    DateTime EndDate,
    int VoucherValidityDays,
    string Status,
    DateTime CreatedAt,
    DateTime UpdatedAt);

/// <summary>
/// EN: Campaign summary DTO for list responses.
/// VI: DTO tóm tắt Campaign cho các phản hồi danh sách.
/// </summary>
public record CampaignSummaryDto(
    Guid Id,
    string Name,
    string Status,
    int TotalVouchers,
    int IssuedVouchers,
    DateTime StartDate,
    DateTime EndDate);

/// <summary>
/// EN: Campaign statistics DTO.
/// VI: DTO thống kê Campaign.
/// </summary>
public record CampaignStatisticsDto(
    Guid CampaignId,
    string CampaignName,
    int TotalVouchers,
    int AvailableVouchers,
    int ClaimedVouchers,
    int RedeemedVouchers,
    decimal TotalFaceValue,
    decimal TotalRedeemedValue,
    decimal UtilizationRate);
