using DTO; using DTOToEntity; using Entities; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using StubbedContextLib; namespace API.Controllers { [Authorize] [ApiController] [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] public class LangueController : ControllerBase { private readonly IService _service; private readonly ILogger _logger; public LangueController(IService LangueService, ILogger logger) { _service = LangueService; _logger = logger; } [HttpGet] public async Task>> GetLangues(int index, int count) { try { _logger.LogInformation("Getting langues "); var groups = await _service.Gets(index,count); return groups; } catch (Exception ex) { // Journaliser l'exception _logger.LogError(ex, "Une erreur s'est produite lors de la récupération des langues."); // Retourner une réponse d'erreur return StatusCode(400, ex.Message); } } [HttpGet("{name}")] public async Task> GetLangue(string name) { try { _logger.LogInformation("Getting a langue with name {name}",name); var group = await _service.GetById(name); return group; } catch (Exception ex) { // Journaliser l'exception _logger.LogError(ex, "Une erreur s'est produite lors de la récupération de la langue avec le nom {name}.", name); // Retourner une réponse d'erreur return StatusCode(400, ex.Message); } } //On ne peut pas changer la langue car son nom est son Id /* [HttpPut] public async Task> UpdateLangue([FromQuery]LangueDTO langue) { try { _logger.LogInformation("Updating a langue with name : {name}", langue.name); var updatedGroup = await _service.Update(langue); return updatedGroup; } catch (Exception ex) { // Journaliser l'exception _logger.LogError(ex, "Une erreur s'est produite lors de la mise à jour de la langue avec le nom {name}.", langue.name); // Retourner une réponse d'erreur return StatusCode(400, ex.Message); } }*/ [HttpPost] public async Task> AddLangue([FromQuery]LangueDTO langue) { try { _logger.LogInformation("Adding a langue with name : {name}", langue.name); var newGroup = await _service.Add(langue); return newGroup; } catch (Exception ex) { // Journaliser l'exception _logger.LogError(ex, "Une erreur s'est produite lors de l'ajout de la langue avec le nom {name}.", langue.name); // Retourner une réponse d'erreur return StatusCode(400, ex.Message); } } [HttpDelete("{name}")] public async Task> DeleteLangue(string name) { try { _logger.LogInformation("Deleting a langue with name : {name}", name); var group = await _service.Delete(name); return group; } catch (Exception ex) { // Journaliser l'exception _logger.LogError(ex, "Une erreur s'est produite lors de la suppression de la langue avec le nom {name}.", name); // Retourner une réponse d'erreur return StatusCode(400, ex.Message); } } } }