using FastEndpoints; using GB5Shared.DTO.Framework.Login; using GB5Shared.FastEndPoint; using GB5Shared.GOP.Qualifier; using Microsoft.Extensions.Logging; using static GB5Shared.GB5Constant.Constant; namespace FrameworkSL.Endpoints.GOP.QualifierBulkRun { public class GetQualifierBulkRunDetail : BaseEndpoint> { private readonly IBulkQualifierRunBLL _Bll; private readonly ILogger _Logger; public GetQualifierBulkRunDetail(IBulkQualifierRunBLL bll, ILogger logger) { _Bll = bll; _Logger = logger; } public override void Configure() { Get("/GOP/GetQualifierBulkRunDetail"); AllowAnonymous(); } public record GetQualifierBulkRunDetailParameters( [property: FromHeader] string Login, [property: QueryParam] int QualifierBulkRunId ); protected override string? GetCacheKey(GetQualifierBulkRunDetailParameters req, LoginDTO loginDTO) => null; protected override async Task> ExecuteAsync( GetQualifierBulkRunDetailParameters req, LoginDTO loginDTO, CancellationToken ct) { try { var result = await _Bll.GetDetailAsync(req.QualifierBulkRunId, loginDTO, ct); if (result is null) return await GB5Shared.ResponseStandard.Response.CreateExceptionError( new InvalidOperationException($"Qualifier bulk run {req.QualifierBulkRunId} not found."), CacheKeyLevel.NOT_REQUIRED, loginDTO, $"Qualifier bulk run {req.QualifierBulkRunId} not found.", 404); return await GB5Shared.ResponseStandard.Response .CreateSuccessResponse(result, CacheKeyLevel.NOT_REQUIRED, loginDTO); } catch (Exception ex) { _Logger.LogError(ex, "GetQualifierBulkRunDetail failed for QualifierBulkRunId {QualifierBulkRunId}", req.QualifierBulkRunId); return await GB5Shared.ResponseStandard.Response .CreateExceptionError(ex, CacheKeyLevel.NOT_REQUIRED, loginDTO, ex.Message, 500); } } } }