using MMDAL.CustomCode.MeasureType; using MMDAL.DTO.MeasureType; 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.ComponentModel.DataAnnotations; using System.Threading.Tasks; namespace MMBLL.MeasureType { public class MeasureTypeBLL : IMeasureTypeBLL { private readonly IMeasureTypeDAL _MeasureTypeDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public MeasureTypeBLL( IMeasureTypeDAL MeasureTypeDAL, AutoNumber AutoNumber, IValidation Validation) { _MeasureTypeDAL = MeasureTypeDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetMeasureType(int MeasureTypeId, LoginDTO LoginDTO) { try { return await _MeasureTypeDAL.GetMeasureType(MeasureTypeId, LoginDTO); } catch (Exception) { throw; } } public async Task SaveMeasureType(MeasureTypeDTO MeasureTypeDTO, LoginDTO LoginDTO) { //if (MeasureTypeDTO == null) throw new ArgumentNullException(nameof(MeasureTypeDTO)); //AutoNumberDTO? autoNumberDTO = null; try { MeasureTypeDTO.MeasureTypeModifiedById = LoginDTO.UserId; MeasureTypeDTO.MeasureTypeModifiedOn = DateTime.UtcNow; if (MeasureTypeDTO.MeasureTypeId == 0) { //autoNumberDTO = await _AutoNumber.GetAutoNumber(count, "MeasureType", LoginDTO); //MeasureTypeDTO.MeasureTypeId = autoNumberDTO.StartNumber; MeasureTypeDTO.MeasureTypeCreatedById = LoginDTO.UserId; MeasureTypeDTO.MeasureTypeCreatedOn = DateTime.UtcNow; await _MeasureTypeDAL.SaveMeasureType(MeasureTypeDTO, LoginDTO); return $"{SuccessResponse.SaveSuccess}"; } else { await _MeasureTypeDAL.UpdateMeasureType(MeasureTypeDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccess}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { //if (autoNumberDTO != null && MeasureTypeDTO.MeasureTypeId > 0) // await _AutoNumber.RollbackAutoNumber("MeasureType", MeasureTypeDTO.MeasureTypeId, LoginDTO); throw; } } public async Task GetSelectListMeasureType( int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _MeasureTypeDAL.GetSelectListMeasureType( FirstNumber, MaxResult, CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task DeleteMeasureType(int MeasureTypeId, LoginDTO LoginDTO) { try { return await _MeasureTypeDAL.DeleteMeasureType(MeasureTypeId, LoginDTO); } catch (Exception) { throw; } } public async Task GetMeasureTypeList(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _MeasureTypeDAL.GetMeasureTypeList(CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } } }