using AdminDAL.CustomCode.CanonicalModel; using AdminDAL.DTO.CanonicalModel; 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; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AdminBLL.CanonicalModel { public class CanonicalModelBLL : ICanonicalModelBLL { private readonly ICanonicalModelDAL _CanonicalModelDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public CanonicalModelBLL( ICanonicalModelDAL canonicalModelDAL, AutoNumber autoNumber, IValidation validation) { _CanonicalModelDAL = canonicalModelDAL; _AutoNumber = autoNumber; _Validation = validation; } #region Get By Id public async Task GetCanonicalModel(int CanonicalModelId, LoginDTO LoginDTO) { try { return await _CanonicalModelDAL.GetCanonicalModel(CanonicalModelId, LoginDTO); } catch (Exception) { throw; } } #endregion #region Select List public async Task GetSelectListCanonicalModel( int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _CanonicalModelDAL.GetSelectListCanonicalModel( FirstNumber, MaxResult, CriteriaDTO, LoginDTO); } catch (Exception ex) { throw new Exception("Error in GetSelectListCanonicalModel", ex); } } #endregion #region Save / Update public async Task SaveCanonicalModel( CanonicalModelDTO CanonicalModelDTO, LoginDTO LoginDTO) { if (CanonicalModelDTO == null) throw new ArgumentNullException(nameof(CanonicalModelDTO)); AutoNumberDTO? autoNumberDTO = null; try { // Modified Audit Fields CanonicalModelDTO.CanonicalModelModifiedById = LoginDTO.UserId; CanonicalModelDTO.CanonicalModelModifiedOn = DateTime.UtcNow; int count = 1; if (CanonicalModelDTO.CanonicalModelId == 0) { // Generate AutoNumber autoNumberDTO = await _AutoNumber.GetAutoNumber( count, "CANONICALMODEL", LoginDTO); CanonicalModelDTO.CanonicalModelId = autoNumberDTO.StartNumber; // Created Audit Fields CanonicalModelDTO.CanonicalModelCreatedById = LoginDTO.UserId; CanonicalModelDTO.CanonicalModelCreatedOn = DateTime.UtcNow; await _CanonicalModelDAL.SaveCanonicalModel( CanonicalModelDTO, LoginDTO); return $"{SuccessResponse.SaveSuccessMessage} {CanonicalModelDTO.CanonicalModelId}"; } else { await _CanonicalModelDAL.UpdateCanonicalModel( CanonicalModelDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccessMessage} {CanonicalModelDTO.CanonicalModelId}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { if (autoNumberDTO != null && CanonicalModelDTO.CanonicalModelId > 0) { await _AutoNumber.RollbackAutoNumber( "CANONICALMODEL", CanonicalModelDTO.CanonicalModelId, LoginDTO); } throw; } } #endregion #region Delete public async Task DeleteCanonicalModel( int CanonicalModelId, LoginDTO LoginDTO) { try { return await _CanonicalModelDAL.DeleteCanonicalModel( CanonicalModelId, LoginDTO); } catch (Exception) { throw; } } #endregion } }