source: ChapterX.API/Controllers/AISuggestionsController.cs@ 877c13c

main
Last change on this file since 877c13c was 877c13c, checked in by kikisrbinoska <srbinoskakristina07@…>, 4 months ago

Added files

  • Property mode set to 100644
File size: 2.3 KB
Line 
1using ChapterX.Application.AISuggestion.Commands;
2using ChapterX.Application.AISuggestion.Queries;
3using MediatR;
4using Microsoft.AspNetCore.Authorization;
5using Microsoft.AspNetCore.Mvc;
6using Microsoft.Extensions.Logging;
7
8namespace ChapterX.API.Controllers
9{
10 [Route("api/[controller]")]
11 [ApiController]
12 public class AISuggestionsController : ControllerBase
13 {
14 private readonly IMediator _mediator;
15 private readonly ILogger<AISuggestionsController> _logger;
16
17 public AISuggestionsController(IMediator mediator, ILogger<AISuggestionsController> logger)
18 {
19 _mediator = mediator;
20 _logger = logger;
21 }
22
23 [HttpGet]
24 [AllowAnonymous]
25 public async Task<ActionResult> GetAll()
26 {
27 _logger.LogInformation("Fetching all AI suggestions");
28 var response = await _mediator.Send(new GetAllRequest());
29 return Ok(response);
30 }
31
32 [HttpGet("{id:int}")]
33 [AllowAnonymous]
34 public async Task<ActionResult> GetById(int id)
35 {
36 _logger.LogInformation("Fetching AI suggestion with ID: {AISuggestionId}", id);
37 var response = await _mediator.Send(new GetRequest(id));
38 return Ok(response);
39 }
40
41 [HttpPost]
42 [Authorize]
43 public async Task<ActionResult> Add([FromBody] AddRequest request)
44 {
45 _logger.LogInformation("Adding a new AI suggestion");
46 var response = await _mediator.Send(request);
47 return Ok(response);
48 }
49
50 [HttpPut("{id:int}")]
51 [Authorize]
52 public async Task<ActionResult> Update(int id, [FromBody] UpdateRequest request)
53 {
54 _logger.LogInformation("Updating AI suggestion with ID: {AISuggestionId}", id);
55 if (id != request.Id)
56 {
57 return BadRequest("Route ID and body ID must match.");
58 }
59
60 var response = await _mediator.Send(request);
61 return Ok(response);
62 }
63
64 [HttpDelete("{id:int}")]
65 [Authorize]
66 public async Task<ActionResult> Delete(int id)
67 {
68 _logger.LogInformation("Deleting AI suggestion with ID: {AISuggestionId}", id);
69 var response = await _mediator.Send(new DeleteRequest(id));
70 return Ok(response);
71 }
72 }
73}
74
Note: See TracBrowser for help on using the repository browser.