using MediatR;

namespace AdsManagerService.API.Application.Queries;

/// <summary>
/// EN: Query to get campaign by ID.
/// VI: Query lấy chiến dịch theo ID.
/// </summary>
public record GetCampaignByIdQuery : IRequest<CampaignDto?>
{
    public Guid CampaignId { get; init; }
}

/// <summary>
/// EN: Campaign DTO for API responses.
/// VI: Campaign DTO cho API responses.
/// </summary>
public record CampaignDto
{
    public Guid Id { get; init; }
    public Guid AdvertiserId { get; init; }
    public string Name { get; init; } = null!;
    public string? Description { get; init; }
    public string Status { get; init; } = null!;
    public string Objective { get; init; } = null!;
    public string BudgetType { get; init; } = null!;
    public decimal BudgetAmount { get; init; }
    public string Currency { get; init; } = null!;
    public decimal TotalSpend { get; init; }
    public DateTime? StartDate { get; init; }
    public DateTime? EndDate { get; init; }
    public DateTime CreatedAt { get; init; }
    public DateTime? UpdatedAt { get; init; }
}
