// EN: Repository interface for leave requests.
// VI: Interface repository cho yeu cau nghi phep.

using MerchantService.Domain.SeedWork;

namespace MerchantService.Domain.AggregatesModel.LeaveRequestAggregate;

public interface ILeaveRequestRepository : IRepository<LeaveRequest>
{
    Task<LeaveRequest?> GetByIdAsync(Guid id, CancellationToken ct = default);
    Task<List<LeaveRequest>> GetByStaffAsync(Guid staffId, CancellationToken ct = default);
    Task<List<LeaveRequest>> GetByShopAsync(Guid shopId, CancellationToken ct = default);
    LeaveRequest Add(LeaveRequest request);
    void Update(LeaveRequest request);
}
