using GB5Shared.DTO.Framework.CommonConfig; // ✅ ADD THIS using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.ResponseStandard; using Newtonsoft.Json; using PayRollDAL.DTO.Employee; using PayRollDAL.Query.Employee; using PayRollDAL.Query.TRMEmployee; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace PayRollDAL.CustomeCode.TRMEmployee { public class TRMEmployeeDAL : ITRMEmployeeDAL { private readonly IQueryExecutor _queryExecutor; private readonly DatabaseTypeConfig _dbTypeConfig; // ✅ ADD THIS public TRMEmployeeDAL( IQueryExecutor queryExecutor, DatabaseTypeConfig dbTypeConfig) // ✅ ADD THIS { _queryExecutor = queryExecutor; _dbTypeConfig = dbTypeConfig; // ✅ ADD THIS } public async Task GetTRMEmployee(int EmployeeId, string LanguageId, LoginDTO LoginDTO) { try { // ✅ ONLY THIS LINE CHANGES string sql = EmployeeQueryProvider.GetTRMEmployeeQuery(_dbTypeConfig.Value); var parameters = new { employeeid = EmployeeId, languageid = LanguageId }; EmployeeDTO employeeDTOs = await _queryExecutor.QuerySingleAsync(LoginDTO, sql, parameters); string json = JsonConvert.SerializeObject(employeeDTOs); return json; } catch (Exception ex) { throw new Exception("Error while getting Translation Employee", ex); } } public async Task SaveTRMEmployee(EmployeeDTO EmployeeDTO, LoginDTO LoginDTO) { try { string sql = EmployeeQB.SAVE_TRMEMPLOYEE; return await _queryExecutor.ExecuteAsync(LoginDTO, sql, EmployeeDTO); } catch (Exception ex) { throw new Exception("Error while saving Translation Employee", ex); } } public async Task UpdateTRMEmployee(EmployeeDTO EmployeeDTO, LoginDTO LoginDTO) { try { string sql = EmployeeQB.UPDATE_TRMEMPLOYEE; return await _queryExecutor.ExecuteAsync(LoginDTO, sql, EmployeeDTO); } catch (Exception ex) { throw new Exception("Error while updating Translation Employee", ex); } } public async Task> DeleteTRMEmployee(int employeeId, LoginDTO LoginDTO) { try { string sql = TRMEmployeeQB.DELETE_TRMEMPLOYEE; var param = new { employeeid = employeeId }; int rows = await _queryExecutor.ExecuteAsync(LoginDTO, sql, param); // Note: It's OK if no translation records exist (rows = 0) // We return success in both cases since the goal is achieved return Result.Success($"Translation Employee records deleted (affected rows: {rows})."); } catch (Exception ex) { throw new Exception("Error while deleting Translation Employee.", ex); } } } }