using FrameworkDAL.CustomCode.BIZTransactionSubClass; using FrameworkDAL.DTO.BIZTransactionSubClass; using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.Validation; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Response; using System.ComponentModel.DataAnnotations; namespace FrameworkBLL.BIZTransactionSubClass { public class BIZTransactionSubClassBLL : IBIZTransactionSubClassBLL { private readonly IBIZTransactionSubClassDAL _BIZTransactionSubClassDAL; private readonly AutoNumber AutoNumber; private readonly IValidation _Validation; public BIZTransactionSubClassBLL(IBIZTransactionSubClassDAL bizTransactionSubClassDAL, AutoNumber autoNumber, IValidation validation) { _BIZTransactionSubClassDAL = bizTransactionSubClassDAL; AutoNumber = autoNumber; _Validation = validation; } public async Task GetBIZTransactionSubClassData(int BiztransactionSubClassId, LoginDTO LoginDTO) { try { return await _BIZTransactionSubClassDAL.GetBIZTransactionSubClassData(BiztransactionSubClassId, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListBIZTransactionSubClass(int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _BIZTransactionSubClassDAL.GetSelectListBIZTransactionSubClass(FirstNumber, MaxResult, CriteriaDTO, LoginDTO); } catch (Exception ex) { throw new Exception("Error in GetSelectListBIZTransactionClass", ex); } } public async Task SaveBIZTransactionSubClass(BIZTransactionSubClassDTO bizTransactionSubClassDTO, LoginDTO loginDTO) { if (bizTransactionSubClassDTO == null) throw new ArgumentNullException(nameof(bizTransactionSubClassDTO)); AutoNumberDTO? autoNumberDTO = null; try { await _Validation.NotEmpty(bizTransactionSubClassDTO.BIZTransactionSubClassName, nameof(bizTransactionSubClassDTO.BIZTransactionSubClassName)); await _Validation.NotEmpty(bizTransactionSubClassDTO.BIZTransactionSubClassCode, nameof(bizTransactionSubClassDTO.BIZTransactionSubClassCode)); bizTransactionSubClassDTO.BIZTransactionSubClassModifiedById = loginDTO.UserId; bizTransactionSubClassDTO.BIZTransactionSubClassModifiedOn = DateTime.UtcNow; int count = 1; if (bizTransactionSubClassDTO.BIZTransactionSubClassId == 0) { autoNumberDTO = await AutoNumber.GetNumberAsync(count, "BIZTRANSACTIONSUBCLASS", loginDTO); bizTransactionSubClassDTO.BIZTransactionSubClassId = autoNumberDTO.StartNumber; bizTransactionSubClassDTO.BIZTransactionSubClassCreatedById = loginDTO.UserId; bizTransactionSubClassDTO.BIZTransactionSubClassCreatedOn = DateTime.UtcNow; await _BIZTransactionSubClassDAL.SaveBIZTransactionSubClass(bizTransactionSubClassDTO, loginDTO); return $"{SuccessResponse.SaveSuccessMessage} {bizTransactionSubClassDTO.BIZTransactionSubClassId}"; } else { await _BIZTransactionSubClassDAL.UpdateBIZTransactionSubClass(bizTransactionSubClassDTO, loginDTO); return $"{SuccessResponse.UpdateSuccessMessage} {bizTransactionSubClassDTO.BIZTransactionSubClassId}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { if (autoNumberDTO != null && bizTransactionSubClassDTO.BIZTransactionSubClassId > 0) await AutoNumber.RollbackAutoNumber("BIZTRANSACTIONSUBCLASS", bizTransactionSubClassDTO.BIZTransactionSubClassId, loginDTO); throw; } } public async Task DeleteBIZTransactionSubClass(int bizTransactionSubClassId, LoginDTO loginDTO) { try { return await _BIZTransactionSubClassDAL.DeleteBIZTransactionSubClass(bizTransactionSubClassId, loginDTO); } catch (Exception ex) { throw new Exception("Error while deleting BIZTransactionSubClass", ex); } } } }