using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Response; using GB5Shared.Validation; using QMSDAL.CustomCode.ChecklistApplicability; using QMSDAL.DTO; using System.ComponentModel.DataAnnotations; namespace QMSBLL.ChecklistApplicability { public class ChecklistApplicabilityBLL : IChecklistApplicabilityBLL { private readonly IChecklistApplicabilityDAL _ChecklistApplicabilityDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public ChecklistApplicabilityBLL( IChecklistApplicabilityDAL ChecklistApplicabilityDAL, AutoNumber AutoNumber, IValidation Validation) { _ChecklistApplicabilityDAL = ChecklistApplicabilityDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetChecklistApplicability( int ChecklistApplicabilityId, LoginDTO LoginDTO) { try { return await _ChecklistApplicabilityDAL .GetChecklistApplicability(ChecklistApplicabilityId, LoginDTO); } catch (Exception) { throw; } } public async Task GetChecklistApplicabilityList( ChecklistApplicabilityDTO ChecklistApplicabilityDTO, LoginDTO LoginDTO) { try { return await _ChecklistApplicabilityDAL .GetChecklistApplicabilityList(ChecklistApplicabilityDTO, LoginDTO); } catch (Exception) { throw; } } public async Task SaveChecklistApplicability( ChecklistApplicabilityDTO ChecklistApplicabilityDTO, LoginDTO LoginDTO) { if (ChecklistApplicabilityDTO == null) throw new ArgumentNullException(nameof(ChecklistApplicabilityDTO)); AutoNumberDTO? autoNumberDTO = null; try { await _Validation.NotEmpty( ChecklistApplicabilityDTO.ScopeType.ToString(), nameof(ChecklistApplicabilityDTO.ScopeType)); ChecklistApplicabilityDTO.ModifiedById = LoginDTO.UserId; ChecklistApplicabilityDTO.ModifiedOn = DateOnly.FromDateTime(DateTime.UtcNow); if (ChecklistApplicabilityDTO.ChecklistApplicabilityId == 0) { //autoNumberDTO = await _AutoNumber.GetAutoNumber( // count, // "ChecklistApplicability", // LoginDTO); //ChecklistApplicabilityDTO.ChecklistApplicabilityId = // autoNumberDTO.StartNumber; ChecklistApplicabilityDTO.CreatedById = LoginDTO.UserId; ChecklistApplicabilityDTO.CreatedOn = DateOnly.FromDateTime(DateTime.UtcNow); ChecklistApplicabilityDTO.Version = 1; await _ChecklistApplicabilityDAL.SaveChecklistApplicability( ChecklistApplicabilityDTO, LoginDTO); return "Details Saved Successfully."; } else { await _ChecklistApplicabilityDAL.UpdateChecklistApplicability( ChecklistApplicabilityDTO, LoginDTO); return "Details Updated Successfully."; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch { if (autoNumberDTO != null && ChecklistApplicabilityDTO.ChecklistApplicabilityId > 0) { await _AutoNumber.RollbackAutoNumber( "ChecklistApplicability", ChecklistApplicabilityDTO.ChecklistApplicabilityId, LoginDTO); } throw; } } public async Task DeleteChecklistApplicability( int ChecklistApplicabilityId, LoginDTO LoginDTO) { try { return await _ChecklistApplicabilityDAL .DeleteChecklistApplicability( ChecklistApplicabilityId, LoginDTO); } catch (Exception) { throw; } } } }