using MediatR; using Microsoft.AspNetCore.Mvc; using ReC.API.Extensions; using ReC.API.Models; 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.OnlyBody => res.Body is null ? NotFound() : Ok(res.Body.JsonToDynamic()), ResultType.OnlyHeader => res.Header is null ? NotFound() : Ok(res.Header.JsonToDynamic()), _ => Ok(res), }; } }