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 MMBLL.Pattern; using MMDAL.CustomCode.Pattern; using MMDAL.DTO.Pattern; using MMDAL.DTO.PaymentTerm; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MMBLL.Patern { public class PatternBLL : IPatternBLL { private readonly IPatternDAL _PatternDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public PatternBLL(IPatternDAL PatternDAL, AutoNumber AutoNumber, IValidation Validation) { _PatternDAL = PatternDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetPattern(int PatternId, LoginDTO LoginDTO) { try { return await _PatternDAL.GetPattern(PatternId, LoginDTO); } catch (Exception) { throw; } } public async Task GetItemPattern(int ItemId, LoginDTO LoginDTO) { try { return await _PatternDAL.GetItemPattern(ItemId, LoginDTO); } catch (Exception) { throw; } } public async Task SavePattern(PatternDTO PatternDTO, LoginDTO LoginDTO) { if (PatternDTO == null) throw new ArgumentNullException(nameof(PatternDTO)); try { // Validation await _Validation.NotEmpty(PatternDTO.PatternCode, nameof(PatternDTO.PatternCode)); await _Validation.NotEmpty(PatternDTO.PatternName, nameof(PatternDTO.PatternName)); // Audit (common) PatternDTO.PatternModifiedById = LoginDTO.UserId; PatternDTO.PatternModifiedOn = DateTime.UtcNow; // 🔹 INSERT if (PatternDTO.PatternId == 0) { var autoNumberDTO = await _AutoNumber.GetAutoNumber(1, "PATTERN", LoginDTO); PatternDTO.PatternId = autoNumberDTO.StartNumber; PatternDTO.PatternCreatedById = LoginDTO.UserId; PatternDTO.PatternCreatedOn = DateTime.UtcNow; await _PatternDAL.SavePattern(PatternDTO, LoginDTO); return $"{SuccessResponse.SaveSuccesfullyCode_Name} {PatternDTO.PatternCode} & {PatternDTO.PatternName}"; } // 🔹 UPDATE else { await _PatternDAL.UpdatePattern(PatternDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccessfullyCode_Name} {PatternDTO.PatternCode} & {PatternDTO.PatternName}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } } public async Task DeletePattern(int Pattern, LoginDTO LoginDTO) { try { return await _PatternDAL.DeletePattern(Pattern, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListPattern(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _PatternDAL.GetSelectListPattern(CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task GetPatternList(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _PatternDAL.GetPatternList(CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } //public async Task GetSelectListPatternReport(int Type,int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) //{ // try // { // return await _PatternDAL.GetSelectListPatternReport(Type, FirstNumber, MaxResult, CriteriaDTO, LoginDTO); // } // catch (Exception) // { // throw; // } //} } }