using MediatR;
using MktZaloService.Domain.Enums;

namespace MktZaloService.API.Application.Queries.Conversations;

/// <summary>
/// EN: Query to get conversation history with messages.
/// VI: Query để lấy lịch sử cuộc hội thoại với tin nhắn.
/// </summary>
public record GetConversationHistoryQuery(
    Guid ConversationId,
    int Skip = 0,
    int Take = 50
) : IRequest<ConversationHistoryDto?>;

/// <summary>
/// EN: DTO for conversation history.
/// VI: DTO cho lịch sử cuộc hội thoại.
/// </summary>
public record ConversationHistoryDto(
    Guid Id,
    string ZaloUserId,
    Guid CustomerId,
    string Status,
    int MessageCount,
    DateTime StartedAt,
    DateTime LastMessageAt,
    List<MessageDto> Messages
);

/// <summary>
/// EN: DTO for a message.
/// VI: DTO cho tin nhắn.
/// </summary>
public record MessageDto(
    Guid Id,
    string Type,
    string Content,
    string Direction,
    bool IsFromBot,
    DateTime SentAt,
    string? ZaloMessageId
);
