using AdminDAL.CustomCode.OrganizationUnit; using AdminDAL.DTO.OrganizationUnit; 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; using System.ComponentModel.DataAnnotations; namespace AdminBLL.OrganizationUnit { public class OrganizationUnitBLL : IOrganizationUnitBLL { private readonly IOrganizationUnitDAL _OrganizationUnitDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public OrganizationUnitBLL(IOrganizationUnitDAL organizationUnitDAL, AutoNumber autoNumber, IValidation validation) { _OrganizationUnitDAL = organizationUnitDAL; _AutoNumber = autoNumber; _Validation = validation; } public async Task GetOrganizationUnit(int OrganizationUnitId, LoginDTO LoginDTO) { try { return await _OrganizationUnitDAL.GetOrganizationUnit(OrganizationUnitId, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListOrganizationUnit(int OUType, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _OrganizationUnitDAL.GetSelectListOrganizationUnit(OUType, CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task DeleteOrganizationUnit(int OrganizationUnitId, LoginDTO LoginDTO) { try { return await _OrganizationUnitDAL.DeleteOrganizationUnit(OrganizationUnitId, LoginDTO); } catch (Exception) { throw; } } public async Task SaveOrganizationUnit(OrganizationUnitDTO OrganizationUnitDTO, LoginDTO LoginDTO) { if (OrganizationUnitDTO == null) throw new ArgumentNullException(nameof(OrganizationUnitDTO)); AutoNumberDTO? autoNumberDTO = null; try { await _Validation.NotEmpty(OrganizationUnitDTO.OrganizationUnitCode, nameof(OrganizationUnitDTO.OrganizationUnitCode)); await _Validation.NotEmpty(OrganizationUnitDTO.OrganizationUnitName, nameof(OrganizationUnitDTO.OrganizationUnitName)); OrganizationUnitDTO.OrganizationUnitModifiedById = LoginDTO.UserId; OrganizationUnitDTO.OrganizationUnitModifiedOn = DateTime.UtcNow; bool isNew = OrganizationUnitDTO.OrganizationUnitId == 0; if (isNew) { autoNumberDTO = await _AutoNumber.GetAutoNumber(1, "ORGANIZATIONUNIT", LoginDTO); OrganizationUnitDTO.OrganizationUnitId = autoNumberDTO.StartNumber; OrganizationUnitDTO.OrganizationUnitCreatedById = LoginDTO.UserId; OrganizationUnitDTO.OrganizationUnitCreatedOn = DateTime.UtcNow; await _OrganizationUnitDAL.SaveOrganizationUnit(OrganizationUnitDTO, LoginDTO); return $"{SuccessResponse.SaveSuccessMessage} {OrganizationUnitDTO.OrganizationUnitId}"; } else { await _OrganizationUnitDAL.UpdateOrganizationUnit(OrganizationUnitDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccessMessage} {OrganizationUnitDTO.OrganizationUnitId}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { if (autoNumberDTO != null && OrganizationUnitDTO.OrganizationUnitId > 0) await _AutoNumber.RollbackAutoNumber("ORGANIZATIONUNIT", OrganizationUnitDTO.OrganizationUnitId, LoginDTO); throw; } } public async Task GetOUCity(int OUId, LoginDTO LoginDTO) { try { return await _OrganizationUnitDAL.GetOUCity(OUId, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListDeliveryOrganizationUnit(int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _OrganizationUnitDAL.GetSelectListDeliveryOrganizationUnit(FirstNumber, MaxResult, CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task ValidateGSTIN(string GSTIN, LoginDTO LoginDTO) { try { return await _OrganizationUnitDAL.ValidateGSTIN(GSTIN, LoginDTO); } catch (Exception) { throw; } } } }