using FastEndpoints; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.Framework.ResponseStandard; using GB5Shared.FastEndPoint; using TCMSBLL.Interfaces; using static GB5Shared.GB5Constant.Constant; namespace TCMSSL.EndPoints.Traceability; /// /// GET /TCMS/Traceability/GetByScreen?route=tcms/testenv /// Returns test case coverage (with Gherkin steps) for a given FE screen route. /// Merges explicit MTCMSSCREENLINK rows with @FE:{route} tag-convention rows. /// Used by the embedded coverage widget in FE screens. /// public class GetByScreen : BaseEndpoint> { private readonly ITCMSTraceabilityBLL _Bll; public GetByScreen(ITCMSTraceabilityBLL bll) => _Bll = bll; public override void Configure() { Get("/TCMS/Traceability/GetByScreen"); AllowAnonymous(); } public record Params( [property: FromHeader] string Login, [property: QueryParam] string Route ); protected override string? GetCacheKey(Params req, LoginDTO loginDTO) => KeyGenerator.KeyGeneration(req.Route, EntityConstant.OBJECTTCMSTRACEABILITY, CacheKeyLevel.CLIENT_LEVEL, loginDTO); protected override async Task> ExecuteAsync( Params req, LoginDTO loginDTO, CancellationToken ct) { var result = await _Bll.GetByScreenAsync(req.Route, loginDTO, ct); return await GB5Shared.ResponseStandard.Response.CreateSuccessResponse( result, CacheKeyLevel.CLIENT_LEVEL, loginDTO); } }