using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using PayRollDAL.DTO.SAPPaySlip; using PayRollDAL.Query.SAPPaySlip; using System; using System.Linq; using System.Threading; using System.Threading.Tasks; using static GB5Shared.GB5Constant.Constant; namespace PayRollDAL.CustomeCode.SAPPaySlip { public class SAPPaySlipDAL : ISAPPaySlipDAL { private readonly IQueryExecutor _queryExecutor; public SAPPaySlipDAL(IQueryExecutor queryExecutor) { _queryExecutor = queryExecutor; } public async Task GetSapClientCodeAsync( int organizationUnitId, LoginDTO login, CancellationToken ct) { string sql = login.DatabaseType switch { DBType.SQL => SAPPaySlipQB.GET_SAP_CLIENT_CODE_SQL, DBType.PostGre => SAPPaySlipQB.GET_SAP_CLIENT_CODE_PG, _ => throw new NotSupportedException( $"Database type '{login.DatabaseType}' is not supported " + "for SAP PaySlip integration.") }; var parameters = new { OrganizationUnitId = organizationUnitId }; var results = await _queryExecutor .QueryAsync( login, sql, parameters, cancellationToken: ct) .ConfigureAwait(false); return results.FirstOrDefault()?.OrganizationUnitCode; } } }