diff --git a/src/ReC.API/Controllers/ResultViewController.cs b/src/ReC.API/Controllers/ResultViewController.cs new file mode 100644 index 0000000..d411f43 --- /dev/null +++ b/src/ReC.API/Controllers/ResultViewController.cs @@ -0,0 +1,40 @@ +using MediatR; +using Microsoft.AspNetCore.Mvc; +using ReC.API.Extensions; +using ReC.Application.ResultViews.Queries; + +namespace ReC.API.Controllers; + +[Route("api/[controller]")] +[ApiController] +public class ResultViewController(IMediator mediator, IConfiguration config) : ControllerBase +{ + [HttpGet] + [ProducesResponseType(StatusCodes.Status200OK)] + public async Task Get([FromQuery] ReadResultViewQuery query, CancellationToken cancel) => Ok(await mediator.Send(query, cancel)); + + [HttpGet("fake")] + [ProducesResponseType(StatusCodes.Status200OK)] + public async Task Get(CancellationToken cancel) => Ok(await mediator.Send(new ReadResultViewQuery() + { + ProfileId = config.GetFakeProfileId() + }, cancel)); + + [HttpGet("fake/{actionId}")] + [ProducesResponseType(StatusCodes.Status200OK)] + public async Task Get([FromRoute] long actionId, CancellationToken cancel, ResultType resultType = ResultType.Full) + { + var res = (await mediator.Send(new ReadResultViewQuery() + { + ProfileId = config.GetFakeProfileId(), + ActionId = actionId + }, cancel)).First(); + + return resultType switch + { + ResultType.Body => res.Body is null ? Ok(new object { }) : Ok(res.Body.JsonToDynamic()), + ResultType.Header => res.Header is null ? Ok(new object { }) : Ok(res.Header.JsonToDynamic()), + _ => Ok(res), + }; + } +} \ No newline at end of file