using System.Data.Common; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using PayRollDAL.DTO.TLeave; namespace PayRollDAL.CustomeCode.TLeave { public interface ITLeaveDAL { Task SaveTLeave(TLeaveDTO tLeaveDTO, LoginDTO loginDTO, DbTransaction? transaction = null); Task UpdateTLeave(TLeaveDTO tLeaveDTO, LoginDTO loginDTO, DbTransaction? transaction = null); Task SaveTLeaveDetail(TLeaveDetailDTO detailDTO, LoginDTO loginDTO, DbTransaction? transaction = null); Task DeleteTLeaveDetails(int tLeaveId, LoginDTO loginDTO, DbTransaction? transaction = null); Task DeleteTLeave(int tLeaveId, LoginDTO loginDTO, DbTransaction? transaction = null); Task UpdateTLeaveStatus(int tLeaveId, byte status, LoginDTO loginDTO, DbTransaction? transaction = null); Task GetTLeave(int tLeaveId, LoginDTO loginDTO); Task> GetTLeaveDetailsByLeave(int tLeaveId, LoginDTO loginDTO); Task> CheckDuplicateLeaveDates(int employeeId, DateOnly leaveDate, int excludeTLeaveId, LoginDTO loginDTO); Task GetLeaveTypeById(int leaveTypeId, LoginDTO loginDTO); Task GetSelectListTLeave(int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO, bool IsCount = false); Task GetTLeaveDetails(int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO, bool Count = false); Task> GetTotalLeaveTaken(int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO, bool IsCount = false); // ── Leave Credit / Debit Posting ──────────────────────────────────────────── Task CountEligibleEmployeesForPosting(TLeaveDTO dto, LoginDTO loginDTO); Task InsertTLeaveHeaderForPosting(TLeaveDTO dto, int tLeaveId, LoginDTO loginDTO, DbTransaction transaction); Task InsertTLeaveDetailForPosting(TLeaveDTO dto, int tLeaveId, int detailStartId, LoginDTO loginDTO, DbTransaction transaction); Task> GetLeaveBalanceForMakeZero(TLeaveDTO dto, LoginDTO loginDTO); Task BulkInsertTLeaveDetailForMakeZero(IEnumerable details, LoginDTO loginDTO, DbTransaction transaction); } }