Update Question and Survey to support multilingual functionnality and Make language optional in URL

This commit is contained in:
Reginald Cherenfant Jasmin
2023-08-25 08:55:11 -04:00
parent 22261f42ca
commit 47b0c7b202
16 changed files with 321 additions and 134 deletions

View File

@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Mvc;
namespace DamageAssesment.Api.Surveys.Controllers
{
[Route("api/[controller]")]
[Route("api")]
[ApiController]
public class SurveysController : ControllerBase
{
@ -16,10 +16,13 @@ namespace DamageAssesment.Api.Surveys.Controllers
this.surveyProvider = surveyProvider;
}
[Route("Surveys")]
[Route("{Language}/Surveys")]
[HttpGet]
public async Task<ActionResult> GetSurveysAsync()
public async Task<ActionResult> GetSurveysAsync(string? Language)
{
var result = await this.surveyProvider.GetSurveysAsync();
var result = await this.surveyProvider.GetSurveysAsync(Language);
if (result.IsSuccess)
{
return Ok(result.Surveys);
@ -27,10 +30,12 @@ namespace DamageAssesment.Api.Surveys.Controllers
return NoContent();
}
[HttpGet("{Id}")]
public async Task<ActionResult> GetSurveysAsync(int Id)
[Route("Surveys/{Id}")]
[Route("{Language}/Surveys/{Id}")]
[HttpGet]
public async Task<ActionResult> GetSurveysAsync(int Id, string? Language)
{
var result = await this.surveyProvider.GetSurveysAsync(Id);
var result = await this.surveyProvider.GetSurveysAsync(Id, Language);
if (result.IsSuccess)
{
return Ok(result.Surveys);
@ -38,7 +43,7 @@ namespace DamageAssesment.Api.Surveys.Controllers
return NotFound();
}
[HttpPost]
[HttpPost("Surveys")]
public async Task<ActionResult> PostSurveysAsync(Models.Survey survey)
{
var result = await this.surveyProvider.PostSurveyAsync(survey);
@ -49,21 +54,21 @@ namespace DamageAssesment.Api.Surveys.Controllers
return BadRequest(result.ErrorMessage);
}
[HttpPut("{Id}")]
[HttpPut("Surveys/{Id}")]
public async Task<ActionResult> PutSurveysAsync(int Id, Models.Survey survey)
{
var result = await this.surveyProvider.PutSurveyAsync(Id,survey);
var result = await this.surveyProvider.PutSurveyAsync(Id, survey);
if (result.IsSuccess)
{
return Ok(result.Survey);
}
if (result.ErrorMessage == "Not Found")
return NotFound(result.ErrorMessage);
return BadRequest(result.ErrorMessage);
}
[HttpDelete("{Id}")]
[HttpDelete("Surveys/{Id}")]
public async Task<ActionResult> DeleteSurveysAsync(int Id)
{
var result = await this.surveyProvider.DeleteSurveyAsync(Id);