using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; using Dapper; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.Validation; using MMDAL.DTO.Pack; using MMDAL.Query.PackNumber; using Newtonsoft.Json; namespace MMDAL.CustomCode.PackNumber { public class PackNumberDAL : IPackNumberDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IValidation _Validation; public PackNumberDAL(IQueryExecutor IQueryExecutor, IValidation IValidation) { _QueryExecutor = IQueryExecutor; _Validation = IValidation; } public async Task GetSelectListPackNumber(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { string SQL = PackNumberQB.GET_SELECTLIST_PACKNUMBER; var parameters = new DynamicParameters(); string? packnumber = GetPackNumber(CriteriaDTO); if (!string.IsNullOrWhiteSpace(packnumber)) { SQL += " AND (PN.PACKNUMBER LIKE @PackNumber OR L.LOTNUMBER LIKE @PackNumber)"; parameters.Add("@PackNumber", $"%{packnumber}%"); } var Result = await _QueryExecutor.QueryAsync(LoginDTO, SQL, parameters); string Json = JsonConvert.SerializeObject(Result); return Json; } catch (Exception) { throw; } } private string? GetPackNumber(CriteriaDTO criteria) { var attr = criteria?.SectionCriteriaList? .SelectMany(s => s.AttributesCriteriaList) .FirstOrDefault(a => a.FieldName == "packnumber"); if (attr?.FieldValue == null) return null; return Convert.ToString(attr.FieldValue); } } }