using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Response; using GB5Shared.Validation; using MMDAL.CustomCode.CalculationFormula; using MMDAL.DTO.CalculationFormula; namespace MMBLL.CalculationFormula { public class CalculationFormulaBLL : ICalculationFormulaBLL { private readonly ICalculationFormulaDAL _CalculationFormulaDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public CalculationFormulaBLL(ICalculationFormulaDAL ICalculationFormulaDAL, AutoNumber AutoNumber, IValidation validation) { _CalculationFormulaDAL = ICalculationFormulaDAL; _AutoNumber = AutoNumber; _Validation = validation; } public async Task GetCalculationFormula(int CalculationFormulaId, LoginDTO LoginDTO) { try { return await _CalculationFormulaDAL.GetCalculationFormula(CalculationFormulaId, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListCalculationFormula(int FirstNumber, int MaxResult, CriteriaDTO criteriaDTO, LoginDTO LoginDTO) { try { return await _CalculationFormulaDAL.GetSelectListCalculationFormula(FirstNumber, MaxResult, criteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task SaveCalculationFormula(CalculationFormulaDTO CalculationFormulaDTO, LoginDTO LoginDTO) { if (CalculationFormulaDTO == null) throw new ArgumentNullException(nameof(CalculationFormulaDTO)); try { await _Validation.NotEmpty(CalculationFormulaDTO.CalculationFormula, nameof(CalculationFormulaDTO.CalculationFormula)); CalculationFormulaDTO.CalculationFormulaModifiedById = LoginDTO.UserId; CalculationFormulaDTO.CalculationFormulaModifiedOn = DateTime.UtcNow; int InitialId = CalculationFormulaDTO.CalculationFormulaId; int count = 1 + InitialId; if (InitialId == 0) { CalculationFormulaDTO.CalculationFormulaCreatedById = LoginDTO.UserId; CalculationFormulaDTO.CalculationFormulaCreatedOn = DateTime.UtcNow; await _CalculationFormulaDAL.SaveCalculationFormula(CalculationFormulaDTO, LoginDTO); return $"{SuccessResponse.SaveSuccessName} {CalculationFormulaDTO.CalculationFormula}"; } else { await _CalculationFormulaDAL.UpdateCalculationFormula(CalculationFormulaDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccessName} {CalculationFormulaDTO.CalculationFormula}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { throw; } } public async Task DeleteCalculationFormula(int CalculationFormulaId, LoginDTO LoginDTO) { try { return await _CalculationFormulaDAL.DeleteCalculationFormula(CalculationFormulaId, LoginDTO); } catch (Exception) { throw; } } } }