using FrameworkDAL.CustomCode.Party; using FrameworkDAL.DTO.Party; 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 FrameworkBLL.Party { public class PartyBLL : IPartyBLL { private readonly IPartyDAL _PartyDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public PartyBLL( IPartyDAL PartyDAL, AutoNumber AutoNumber, IValidation Validation) { _PartyDAL = PartyDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetParty(int PartyId, LoginDTO LoginDTO) { try { return await _PartyDAL.GetParty(PartyId, LoginDTO); } catch (Exception) { throw; } } public async Task SaveParty(PartyDTO PartyDTO, LoginDTO LoginDTO) { //if (PartyDTO == null) throw new ArgumentNullException(nameof(PartyDTO)); //AutoNumberDTO? autoNumberDTO = null; try { PartyDTO.PartyModifiedById = LoginDTO.UserId; PartyDTO.PartyModifiedOn = DateTime.UtcNow; if (PartyDTO.PartyId == 0) { //autoNumberDTO = await _AutoNumber.GetAutoNumber(count, "Party", LoginDTO); //PartyDTO.PartyId = autoNumberDTO.StartNumber; PartyDTO.PartyCreatedById = LoginDTO.UserId; PartyDTO.PartyCreatedOn = DateTime.UtcNow; await _PartyDAL.SaveParty(PartyDTO, LoginDTO); return $"{SuccessResponse.SaveSuccess}"; } else { await _PartyDAL.UpdateParty(PartyDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccess}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { //if (autoNumberDTO != null && PartyDTO.PartyId > 0) // await _AutoNumber.RollbackAutoNumber("Party", PartyDTO.PartyId, LoginDTO); throw; } } public async Task GetSelectListParty( int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _PartyDAL.GetSelectListParty( FirstNumber, MaxResult, CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task DeleteParty(int PartyId, LoginDTO LoginDTO) { try { return await _PartyDAL.DeleteParty(PartyId, LoginDTO); } catch (Exception) { throw; } } public async Task GetPartyList(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _PartyDAL.GetPartyList(CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } } }