using Dapper; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.Resource.Response; using GB5Shared.Validation; using PayRollDAL.DTO.OULevelSetting; using PayRollDAL.Query.OULevelSetting; namespace PayRollDAL.CustomeCode.OULevelSetting { public class OULevelSettingDAL : IOULevelSettingDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IValidation _Validation; public OULevelSettingDAL(IQueryExecutor QueryExecutor, IValidation Validation) { _QueryExecutor = QueryExecutor; _Validation = Validation; } public async Task> GetOULevelSetting(int OuId, LoginDTO LoginDTO) { try { var parameters = new DynamicParameters(); parameters.Add("ouid", OuId); var result = await _QueryExecutor.QueryAsync(LoginDTO, OULevelSettingQB.GET_OULEVELSETTING, parameters); return result?.ToList() ?? new List(); } catch (Exception) { throw; } } public async Task CheckOULevelSettingExists(int OuId, LoginDTO LoginDTO) { try { var parameters = new DynamicParameters(); parameters.Add("ouid", OuId); int count = await _QueryExecutor.QuerySingleAsync(LoginDTO, OULevelSettingQB.CHECK_OULEVELSETTING_EXISTS, parameters); return count > 0; } catch (Exception) { throw; } } public async Task SaveOULevelSetting(OULevelSettingDTO OULevelSettingDTO, LoginDTO LoginDTO) { try { return await _QueryExecutor.ExecuteAsync(LoginDTO, OULevelSettingQB.SAVE_OULEVELSETTING, OULevelSettingDTO); } catch (Exception ex) { string Error = await _Validation.HandleException(ex, $"{ErrorResponse.SaveErrorMessage}"); throw new Exception(Error); } } public async Task UpdateOULevelSetting(OULevelSettingDTO OULevelSettingDTO, LoginDTO LoginDTO) { try { return await _QueryExecutor.ExecuteAsync(LoginDTO, OULevelSettingQB.UPDATE_OULEVELSETTING, OULevelSettingDTO); } catch (Exception ex) { string Error = await _Validation.HandleException(ex, $"{ErrorResponse.UpdateErrorMessage}"); throw new Exception(Error); } } public async Task DeleteOULevelSetting(int OuId, LoginDTO LoginDTO) { try { var parameters = new DynamicParameters(); parameters.Add("ouid", OuId); int result = await _QueryExecutor.ExecuteAsync(LoginDTO, OULevelSettingQB.DELETE_OULEVELSETTING, parameters); if (result > 0) { return $"{SuccessResponse.DeleteSuccessMessage}"; } else { return $"{ErrorResponse.DeleteNotFoundMessage}"; } } catch (Exception ex) { string Error = await _Validation.HandleException(ex, $"{ErrorResponse.DeleteErrorMessage}"); throw new Exception(Error); } } public async Task> GetAllActiveOuIds(LoginDTO LoginDTO) { try { var result = await _QueryExecutor.QueryAsync(LoginDTO, OULevelSettingQB.GET_ALL_ACTIVE_OU_IDS, null); return result?.ToList() ?? new List(); } catch (Exception) { throw; } } public async Task> GetOULevelSettingFields(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { int DeliveryOuId = -1; if (CriteriaDTO?.SectionCriteriaList != null) { for (int i = 0; i < CriteriaDTO.SectionCriteriaList.Count; i++) { for (int j = 0; j < CriteriaDTO.SectionCriteriaList[i].AttributesCriteriaList.Count; j++) { if ((CriteriaDTO.SectionCriteriaList[i].AttributesCriteriaList[j].FieldName ?? "").ToLower() == "deliveryou.id") { DeliveryOuId = Convert.ToInt32(CriteriaDTO.SectionCriteriaList[i].AttributesCriteriaList[j].FieldValue); } } } } var parameters = new DynamicParameters(); parameters.Add("deliveryouid", DeliveryOuId); var result = await _QueryExecutor.QueryAsync(LoginDTO, OULevelSettingQB.GET_OULEVELSETTINGFIELDS, parameters); return result?.ToList() ?? new List(); } catch (Exception) { throw; } } } }