using MediatR;
using MktZaloService.Domain.Enums;

namespace MktZaloService.API.Application.Queries.Customers;

/// <summary>
/// EN: Query to get customer details.
/// VI: Query để lấy thông tin khách hàng.
/// </summary>
public record GetCustomerQuery(Guid CustomerId) : IRequest<CustomerDto?>;

/// <summary>
/// EN: Query to get customer by Zalo user ID.
/// VI: Query để lấy khách hàng theo Zalo user ID.
/// </summary>
public record GetCustomerByZaloIdQuery(string ZaloUserId) : IRequest<CustomerDto?>;

/// <summary>
/// EN: DTO for customer details.
/// VI: DTO cho thông tin khách hàng.
/// </summary>
public record CustomerDto(
    Guid Id,
    string ZaloUserId,
    string DisplayName,
    string? AvatarUrl,
    string? PhoneNumber,
    string? Email,
    string Segment,
    int ConversationCount,
    int TotalMessageCount,
    bool IsActive,
    DateTime FirstInteractionAt,
    DateTime LastInteractionAt,
    List<string> Tags
);
