using MediatR;

namespace IamService.API.Application.Commands.AccessReviews;

/// <summary>
/// EN: Command to create access review.
/// VI: Command để tạo đánh giá truy cập.
/// </summary>
public record CreateAccessReviewCommand(
    string Name,
    string? Description,
    Guid OwnerId,
    string Scope,
    DateTime DueDate) : IRequest<Guid>;

/// <summary>
/// EN: Command to add item to access review.
/// VI: Command để thêm item vào đánh giá truy cập.
/// </summary>
public record AddAccessReviewItemCommand(
    Guid ReviewId,
    Guid UserId,
    string ResourceType,
    Guid ResourceId,
    string Permission) : IRequest<Guid>;

/// <summary>
/// EN: Command to start access review.
/// VI: Command để bắt đầu đánh giá truy cập.
/// </summary>
public record StartAccessReviewCommand(Guid ReviewId) : IRequest<Unit>;

/// <summary>
/// EN: Command to review an item (certify or revoke).
/// VI: Command để đánh giá một item (chứng nhận hoặc thu hồi).
/// </summary>
public record ReviewItemCommand(
    Guid ReviewId,
    Guid ItemId,
    Guid ReviewerUserId,
    bool Certify,
    string? Comments) : IRequest<Unit>;

/// <summary>
/// EN: Command to complete access review.
/// VI: Command để hoàn thành đánh giá truy cập.
/// </summary>
public record CompleteAccessReviewCommand(Guid ReviewId) : IRequest<Unit>;
