using MMDAL.CustomCode.TaxTable; using MMDAL.DTO.TaxTable; 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.TaxTable { public class TaxTableBLL : ITaxTableBLL { private readonly ITaxTableDAL _TaxTableDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public TaxTableBLL( ITaxTableDAL TaxTableDAL, AutoNumber AutoNumber, IValidation Validation) { _TaxTableDAL = TaxTableDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetTaxTable(int TaxTableId, LoginDTO LoginDTO) { try { return await _TaxTableDAL.GetTaxTable(TaxTableId, LoginDTO); } catch (Exception) { throw; } } public async Task SaveTaxTable(TaxTableDTO TaxTableDTO, LoginDTO LoginDTO) { //if (TaxTableDTO == null) throw new ArgumentNullException(nameof(TaxTableDTO)); //AutoNumberDTO? autoNumberDTO = null; try { TaxTableDTO.TaxTableModifiedById = LoginDTO.UserId; TaxTableDTO.TaxTableModifiedOn = DateTime.UtcNow; if (TaxTableDTO.TaxTableId == 0) { //autoNumberDTO = await _AutoNumber.GetAutoNumber(count, "TaxTable", LoginDTO); //TaxTableDTO.TaxTableId = autoNumberDTO.StartNumber; TaxTableDTO.TaxTableCreatedById = LoginDTO.UserId; TaxTableDTO.TaxTableCreatedOn = DateTime.UtcNow; await _TaxTableDAL.SaveTaxTable(TaxTableDTO, LoginDTO); return $"{SuccessResponse.SaveSuccess}"; } else { await _TaxTableDAL.UpdateTaxTable(TaxTableDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccess}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { //if (autoNumberDTO != null && TaxTableDTO.TaxTableId > 0) // await _AutoNumber.RollbackAutoNumber("TaxTable", TaxTableDTO.TaxTableId, LoginDTO); throw; } } public async Task GetSelectListTaxTable( int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _TaxTableDAL.GetSelectListTaxTable( FirstNumber, MaxResult, CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task DeleteTaxTable(int TaxTableId, LoginDTO LoginDTO) { try { return await _TaxTableDAL.DeleteTaxTable(TaxTableId, LoginDTO); } catch (Exception) { throw; } } public async Task GetTaxTableList(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _TaxTableDAL.GetTaxTableList(CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } } }