using System.ComponentModel.DataAnnotations; using FrameworkDAL.CustomCode.DataDictionary; using FrameworkDAL.DTO.DataDictionary; using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Response; using GB5Shared.Validation; namespace FrameworkBLL.DataDictionary { public class DataDictionaryBLL : IDataDictionaryBLL { private readonly IDataDictionaryDAL _DataDictionaryDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public DataDictionaryBLL(IDataDictionaryDAL DataDictionaryDAL, AutoNumber AutoNumber, IValidation Validation) { _DataDictionaryDAL = DataDictionaryDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetDataDictionary(int DataDictionaryId, LoginDTO LoginDTO) { try { return await _DataDictionaryDAL.GetDataDictionary(DataDictionaryId, LoginDTO); } catch (Exception) { throw; } } public async Task SaveDataDictionary(DataDictionaryDTO DataDictionaryDTO, LoginDTO LoginDTO) { if (DataDictionaryDTO == null) throw new ArgumentNullException(nameof(DataDictionaryDTO)); AutoNumberDTO? autoNumberDTO = null; try { await _Validation.NotEmpty(DataDictionaryDTO.DataDictionarySection, nameof(DataDictionaryDTO.DataDictionarySection)); await _Validation.NotEmpty(DataDictionaryDTO.DataDictionaryName, nameof(DataDictionaryDTO.DataDictionaryName)); DataDictionaryDTO.DataDictionaryModifiedById = LoginDTO.UserId; DataDictionaryDTO.DataDictionaryModifiedOn = DateTime.UtcNow; int count = 1; if (DataDictionaryDTO.DataDictionaryId == 0) { autoNumberDTO = await _AutoNumber.GetAutoNumber(count, "DATADICTIONARY", LoginDTO); DataDictionaryDTO.DataDictionaryId = autoNumberDTO.StartNumber; DataDictionaryDTO.DataDictionaryCreatedById = LoginDTO.UserId; DataDictionaryDTO.DataDictionaryCreatedOn = DateTime.UtcNow; await _DataDictionaryDAL.SaveDataDictionary(DataDictionaryDTO, LoginDTO); return $"{SuccessResponse.SaveSuccessMessage} {DataDictionaryDTO.DataDictionaryId}"; } else { await _DataDictionaryDAL.UpdateDataDictionary(DataDictionaryDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccessMessage} {DataDictionaryDTO.DataDictionaryId}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { if (autoNumberDTO != null && DataDictionaryDTO.DataDictionaryId > 0) await _AutoNumber.RollbackAutoNumber("DATADICTIONARY", DataDictionaryDTO.DataDictionaryId, LoginDTO); throw; } } public async Task DeleteDataDictionary(int DataDictionaryId, LoginDTO LoginDTO) { try { return await _DataDictionaryDAL.DeleteDataDictionary(DataDictionaryId, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListDataDictionary(int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _DataDictionaryDAL.GetSelectListDataDictionary(FirstNumber, MaxResult, CriteriaDTO, LoginDTO); } catch (Exception ex) { throw new Exception("Error in GetSelectListDataDictionary", ex); } } } }