using FastEndpoints; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using MMBLL.SKU; using static GB5Shared.GB5Constant.Constant; namespace MMSL.EndPoints.SKU { public sealed class GetSelectListSKU : Endpoint { private readonly ISKUBLL _skuBLL; public GetSelectListSKU(ISKUBLL skuBLL) { _skuBLL = skuBLL; } public record GetSelectListSKUParameters( [property: QueryParam] int FirstNumber, [property: QueryParam] int MaxResult, [property: FromBody] CriteriaDTO CriteriaDTO, [property: FromHeader] string Login ); public override void Configure() { Post("/SKU/GetSelectListSKU"); AllowAnonymous(); } public override async Task ExecuteAsync(GetSelectListSKUParameters req, CancellationToken ct) { try { var LoginDTO = Newtonsoft.Json.JsonConvert.DeserializeObject(req.Login); var result = await _skuBLL.GetSKUPicklistSQL(req.FirstNumber, req.MaxResult, req.CriteriaDTO, LoginDTO!); if (result == null || !result.Any()) { return await GB5Shared.ResponseStandard.Response.CreateEmptyResponse( CacheKeyLevel.NOT_REQUIRED,"No Data Found", 404); } return await GB5Shared.ResponseStandard.Response.CreateSuccessResponse(result, CacheKeyLevel.NOT_REQUIRED, null!); } catch (Exception ex) { return await GB5Shared.ResponseStandard.Response.CreateExceptionError(ex, CacheKeyLevel.NOT_REQUIRED,null!, ex.Message, 500); } } } }