// EN: Repository interface for attendance records.
// VI: Interface repository cho ban ghi cham cong.

using MerchantService.Domain.SeedWork;

namespace MerchantService.Domain.AggregatesModel.AttendanceAggregate;

public interface IAttendanceRepository : IRepository<AttendanceRecord>
{
    Task<AttendanceRecord?> GetByIdAsync(Guid id, CancellationToken ct = default);
    Task<AttendanceRecord?> GetTodayRecordAsync(Guid staffId, CancellationToken ct = default);
    Task<List<AttendanceRecord>> GetByStaffAndMonthAsync(Guid staffId, int month, int year, CancellationToken ct = default);
    Task<List<AttendanceRecord>> GetByShopAndMonthAsync(Guid shopId, int month, int year, CancellationToken ct = default);
    AttendanceRecord Add(AttendanceRecord record);
    void Update(AttendanceRecord record);
}
