source: src/FinkiChattery/FinkiChattery.Api/Controllers/v1/QuestionsController.cs@ b25b9ea

dev
Last change on this file since b25b9ea was b25b9ea, checked in by Стојков Марко <mst@…>, 3 years ago

Get question state endpoint

  • Property mode set to 100644
File size: 1.6 KB
Line 
1using FinkiChattery.Api.ApplicationServices.Authentication;
2using FinkiChattery.Api.ApplicationServices.Questioning;
3using FinkiChattery.Commands.Questioning;
4using FinkiChattery.Common.Mediator.Interfaces;
5using FinkiChattery.Contracts.Questioning;
6using FinkiChattery.Queries.Questioning;
7using IdentityServer4.AccessTokenValidation;
8using Microsoft.AspNetCore.Authorization;
9using Microsoft.AspNetCore.Mvc;
10using System;
11using System.Threading.Tasks;
12
13namespace FinkiChattery.Api.Controllers.v1
14{
15 [ApiVersion(ApiVersions.ApiVersion1)]
16 [Route("api/v{version:apiVersion}/[controller]")]
17 [ApiController]
18 public class QuestionsController : ControllerBase
19 {
20 public QuestionsController(IMediatorService mediatorService)
21 {
22 MediatorService = mediatorService;
23 }
24
25 public IMediatorService MediatorService { get; }
26
27 [HttpPost]
28 [Authorize(AuthenticationSchemes = IdentityServerAuthenticationDefaults.AuthenticationScheme, Policy = AuthenticationPolicy.Student)]
29 public async Task<IActionResult> AskQuestion([FromBody] AskQuestionRequest request)
30 {
31 await MediatorService.SendAsync(new AskQuestionCommand(request.Title, request.Text, request.Categories));
32 return Ok();
33 }
34
35 [HttpGet("{questionUid:Guid}")]
36 [Authorize]
37 public async Task<IActionResult> GetQuestionState([FromRoute]Guid questionUid)
38 {
39 var questionDto = await MediatorService.SendQueryAsync(new GetQuestionStateQuery(questionUid));
40 return Ok(questionDto.ToQuestionStateResponse());
41 }
42 }
43}
Note: See TracBrowser for help on using the repository browser.