#nullable enable
using Baya.Application.Models.Common;
using Baya.Application.Models.Messaging;
using Mediator;

namespace Baya.Application.Features.Messaging.Queries.GetTicketThread;

/// <summary>
/// Returns the ordered thread for a ticket the caller may see. <see cref="AsAdmin"/> selects the view: the
/// <b>user</b> view (<c>false</c>) strips every <c>is_internal</c> message in the projection; the <b>admin</b>
/// view (<c>true</c>, staff only) returns them. This is enforced at the query layer, never in the UI.
/// </summary>
public record GetTicketThreadQuery(long TicketId, bool AsAdmin = false)
    : IRequest<OperationResult<TicketThreadDto>>;
