using FrameworkDAL.CustomCode.PatternCore; using FrameworkDAL.DTO.LovTypeDTO; using FrameworkDAL.DTO.PatternCore; using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Framework; using GB5Shared.Resource.Response; using GB5Shared.Validation; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FrameworkBLL.PatternCore { public class PatternCoreBLL : IPatternCoreBLL { private readonly IPatternCoreDAL _PatternCoreDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public PatternCoreBLL(IPatternCoreDAL PatternCoreDAL, AutoNumber AutoNumber, IValidation Validation) { _PatternCoreDAL = PatternCoreDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetPatternCore(int PatternCoreId, LoginDTO LoginDTO) { try { return await _PatternCoreDAL.GetPatternCore(PatternCoreId, LoginDTO); } catch (Exception) { throw; } } public async Task GetPatternCoreList(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _PatternCoreDAL.GetPatternCoreList(CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task SavePatternCore(PatternCoreDTO PatternCoreDTO, LoginDTO LoginDTO) { if (PatternCoreDTO == null) throw new ArgumentNullException(nameof(PatternCoreDTO)); try { await _Validation.NotEmpty(PatternCoreDTO.PatternCoreCode, nameof(PatternCoreDTO.PatternCoreCode)); await _Validation.NotEmpty(PatternCoreDTO.PatternCoreName, nameof(PatternCoreDTO.PatternCoreName)); PatternCoreDTO.PatternCoreModifiedById = LoginDTO.UserId; PatternCoreDTO.PatternCoreModifiedOn = DateTime.UtcNow; int InitialId = PatternCoreDTO.PatternCoreId; int count = 1 + InitialId; if (InitialId == 0) { PatternCoreDTO.PatternCoreCreatedById = LoginDTO.UserId; PatternCoreDTO.PatternCoreCreatedOn = DateTime.UtcNow; await _PatternCoreDAL.SavePatternCore(PatternCoreDTO, LoginDTO); return $"{FrameworkResource.SuccessfullySaved} {PatternCoreDTO.PatternCoreName}"; } else { await _PatternCoreDAL.UpdatePatternCore(PatternCoreDTO, LoginDTO); return $"{FrameworkResource.SuccessfullyUpdated} {PatternCoreDTO.PatternCoreName}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } } public async Task DeletePatternCore(int PatternCoreId, LoginDTO LoginDTO) { try { return await _PatternCoreDAL.DeletePatternCore(PatternCoreId, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListPatternCore(int FirstNumber, int MaxResult, CriteriaDTO criteriaDTO, LoginDTO LoginDTO) { try { var result = await _PatternCoreDAL.GetSelectListPatternCore(FirstNumber, MaxResult,criteriaDTO, LoginDTO); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } } }