using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using PayRollDAL.DTO.OverTime; using PayRollDAL.DTO.Periodic; using System; using System.Collections.Generic; using System.Data.Common; using System.Threading.Tasks; namespace PayRollDAL.CustomeCode.Periodic { // Migration scope: SavePeriodic (single-record) only — see PeriodicQB.cs header note. public interface IPeriodicDAL { // Migration scope: SavePeriodic (single-record) only — see PeriodicQB.cs header note. Task GetMainSubTypeId(int employeeId, int ouId, int payPeriodId, LoginDTO loginDTO, DbTransaction? transaction = null); Task GetMMDetailId(int payPeriodId, int employeeId, string? partyCode, string? partyBranchCode, string? workTypeCode, LoginDTO loginDTO, DbTransaction? transaction = null); Task GetEmployeeReportingInfo(int employeeId, LoginDTO loginDTO, DbTransaction? transaction = null); Task SavePeriodic(PeriodicDTO periodicDTO, LoginDTO loginDTO, DbTransaction? transaction = null); Task UpdatePeriodic(PeriodicDTO periodicDTO, LoginDTO loginDTO, DbTransaction? transaction = null); Task> GetPeriodicList(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO, CancellationToken ct = default); // ADD THESE VALIDATION METHODS Task ValidatePayGroupId(int payGroupId, LoginDTO loginDTO); Task ValidatePayPeriodId(int payPeriodId, LoginDTO loginDTO); Task ValidateEmployeeId(int employeeId, LoginDTO loginDTO); Task ValidateOUId(int ouId, LoginDTO loginDTO); // ── GetPeriodic (Periodic.svc/GetPeriodic) ────────────────────────────────────── // Mirrors GB4 PeriodicDAL.GetPeriodicDetails. IsPartialProcessRequired / mandatory // PayConfig check / sort-flag resolution all live in PeriodicBLL — see PeriodicBLL.GetPeriodic. Task GetPayConfigurationIsPartialProcessRequired(int payConfigurationId, LoginDTO loginDTO, CancellationToken ct = default); Task<(List Items, int Total)> GetPeriodicStandard( int payPeriodId, int firstNumber, int maxResult, string orderByClause, CriteriaDTO criteriaDTO, LoginDTO loginDTO, CancellationToken ct = default); Task<(List Items, int Total)> GetPeriodicNew( int payPeriodId, int firstNumber, int maxResult, CriteriaDTO criteriaDTO, LoginDTO loginDTO, CancellationToken ct = default); // ── PeriodicServiceBasedExport (Periodic.svc/Periodic/Service/Based/Export) ───────── // Mirrors GB4 DumpPerodicServiceBased.PeriodicServiceBasedExport — see PeriodicDAL for // the single-query collapse of GB4's temp-table + second-SELECT sequence. Task> GetPeriodicServiceBasedExport( int payPeriodId, CriteriaDTO criteriaDTO, LoginDTO loginDTO, CancellationToken ct = default); Task> GetPeriodicAddonExportFieldNames(int entityId, LoginDTO loginDTO, CancellationToken ct = default); Task> GetPeriodicServiceBasedExportAddonValues( int payPeriodId, string addonColumns, LoginDTO loginDTO, CancellationToken ct = default); // ADD THESE VALIDATION METHODS // ── LoadPeriodic (bulk generation) — see PeriodicQB.BuildLoadPeriodic header note ── Task GetPayPeriodToDate(int payPeriodId, LoginDTO loginDTO, DbTransaction? transaction = null); Task> GetPeriodicAddonFieldDefaults(LoginDTO loginDTO, DbTransaction? transaction = null); Task LoadPeriodic( int payPeriodId, int payConfigurationId, int autoId, DateTime toDate, string fieldNameList, string fieldValueList, LoginDTO loginDTO, DbTransaction? transaction = null); } }