using GerbilManagerWebAPI.Models;

namespace GerbilManagerWebAPI.Dtos
{
    public record RequestDto(
        Guid Id,
        string GmailMessageId,
        string? ThreadId,
        string FromAddress,
        string? FromName,
        string? Subject,
        string? BodyText,
        DateTimeOffset ReceivedAt,
        RequestStatus Status,
        Guid? AssignedContactId,
        string? DraftReply,
        DateTimeOffset? AnsweredAt);

    /// <summary>Triage update: change status and/or assign a contact.</summary>
    public record RequestTriageInput(RequestStatus? Status, Guid? AssignedContactId);

    /// <summary>Mail settings read shape — the App Password is NEVER returned (only HasAppPassword).</summary>
    public record MailSettingsDto(
        string? GmailAddress,
        int PollIntervalMinutes,
        string Folder,
        bool BackgroundPollEnabled,
        bool HasAppPassword);

    /// <summary>Body of the (edited) reply to send for POST /api/requests/{id}/send.</summary>
    public record SendReplyInput(string Body);

    /// <summary>Mail settings write shape. AppPassword is write-only; null/omitted leaves it unchanged,
    /// empty string clears it.</summary>
    public record MailSettingsInput(
        string? GmailAddress,
        string? AppPassword,
        int? PollIntervalMinutes,
        string? Folder,
        bool? BackgroundPollEnabled);
}
