using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.Ice; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Response; using GB5Shared.ResponseStandard; using GB5Shared.Validation; namespace GB5Shared.IceMap { public interface IIceMapBLL { Task GetIceMap(int IceMapId, LoginDTO LoginDTO); Task SaveIceMap(IceMapDTO IceMapDTO, LoginDTO LoginDTO); Task> DeleteIceMap(int IceMapId, LoginDTO LoginDTO); Task GetSelectListIceMap(CriteriaDTO criteriaDTO, LoginDTO loginDTO); } public class IceMapBLL : IIceMapBLL { private readonly IIceMapDAL _IceMapDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public IceMapBLL(IIceMapDAL IIceMapDAL, AutoNumber AutoNumber, IValidation Validation) { _IceMapDAL = IIceMapDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetIceMap(int IceMapId, LoginDTO LoginDTO) { try { return await _IceMapDAL.GetIceMap(IceMapId, LoginDTO); } catch (Exception) { throw; } } public async Task SaveIceMap(IceMapDTO IceMapDTO, LoginDTO loginDTO) { if (IceMapDTO == null) throw new ArgumentNullException(nameof(IceMapDTO)); AutoNumberDTO? autoNumberDTO = null; try { await _Validation.NotEmpty(IceMapDTO.IceMapCode, nameof(IceMapDTO.IceMapCode)); await _Validation.NotEmpty(IceMapDTO.IceMapName, nameof(IceMapDTO.IceMapName)); IceMapDTO.IceMapModifiedById = loginDTO.UserId; IceMapDTO.IceMapModifiedOn = DateTime.UtcNow; int count = 1; if (IceMapDTO.IceMapId == 0) { autoNumberDTO = await _AutoNumber.GetAutoNumber(count, "ICEMAP", loginDTO); IceMapDTO.IceMapId = autoNumberDTO.StartNumber; IceMapDTO.IceMapCreatedById = loginDTO.UserId; IceMapDTO.IceMapCreatedOn = DateTime.UtcNow; if (IceMapDTO.IceMapDetailsArray != null) { foreach (var child in IceMapDTO.IceMapDetailsArray) { child.IceMapDetailsId = IceMapDTO.IceMapId++; child.IceMapId = IceMapDTO.IceMapId; } } await _IceMapDAL.SaveIceMap(IceMapDTO, loginDTO); return $"IceMap saved successfully with IceMapId {IceMapDTO.IceMapId}."; } else { await _IceMapDAL.UpdateIceMap(IceMapDTO, loginDTO); return $"IceMap updated successfully with IceMapId {IceMapDTO.IceMapId}."; } } catch { if (autoNumberDTO != null && IceMapDTO.IceMapId > 0) await _AutoNumber.RollbackAutoNumber("ICEMAP", IceMapDTO.IceMapId, loginDTO); throw; } } public async Task> DeleteIceMap(int IceMapId, LoginDTO LoginDTO) { try { return await _IceMapDAL.DeleteIceMap(IceMapId, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListIceMap(CriteriaDTO criteriaDTO, LoginDTO loginDTO) { try { return await _IceMapDAL.GetSelectListIceMap(criteriaDTO, loginDTO); } catch (Exception) { throw; } } } }