using MediatR;

namespace SocialService.API.Application.Queries;

/// <summary>
/// EN: Query to get all relationships with pagination and filtering (admin).
/// VI: Query để lấy tất cả relationships với phân trang và filter (admin).
/// </summary>
public record GetAllRelationshipsQuery(
    int Skip = 0,
    int Take = 20,
    string? StatusFilter = null,
    string? TypeFilter = null) : IRequest<GetAllRelationshipsResult>;

/// <summary>
/// EN: Result for GetAllRelationshipsQuery.
/// VI: Kết quả cho GetAllRelationshipsQuery.
/// </summary>
public record GetAllRelationshipsResult(
    IEnumerable<RelationshipAdminDto> Relationships,
    int TotalCount);

/// <summary>
/// EN: DTO for relationship in admin list.
/// VI: DTO cho relationship trong danh sách admin.
/// </summary>
public record RelationshipAdminDto(
    Guid Id,
    Guid RequesterId,
    Guid AddresseeId,
    string Type,
    string Status,
    DateTime CreatedAt,
    DateTime? UpdatedAt);
