using MediatR;
namespace IamService.API.Application.Queries.AccessRequests;
///
/// EN: Query to get access request by ID.
/// VI: Query để lấy yêu cầu truy cập theo ID.
///
public record GetAccessRequestByIdQuery(Guid Id) : IRequest;
///
/// EN: Query to get my access requests.
/// VI: Query để lấy yêu cầu truy cập của tôi.
///
public record GetMyAccessRequestsQuery(Guid RequesterId) : IRequest>;
///
/// EN: Query to get pending approvals for current user.
/// VI: Query để lấy các yêu cầu đang chờ phê duyệt của user hiện tại.
///
public record GetPendingApprovalsQuery(Guid ApproverId) : IRequest>;
///
/// EN: Access request DTO.
/// VI: DTO cho yêu cầu truy cập.
///
public record AccessRequestDto(
Guid Id,
Guid RequesterId,
string ResourceType,
Guid ResourceId,
string RequestedPermission,
string? Justification,
string Status,
string Priority,
DateTime CreatedAt,
DateTime? SubmittedAt,
DateTime? ResolvedAt,
DateTime? ExpiresAt,
IEnumerable Approvers);
///
/// EN: Access request approver DTO.
/// VI: DTO cho người phê duyệt yêu cầu truy cập.
///
public record AccessRequestApproverDto(
Guid Id,
Guid UserId,
int Order,
string Status,
DateTime? RespondedAt,
string? Comments);