using DTO; using DTOToEntity; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace API.Controllers { [Authorize] [ApiController] [Route("api/v{version:apiVersion}/[controller]")] [ApiVersion("1.0")] public class RoleController : ControllerBase { private readonly IService _service; private readonly ILogger _logger; public RoleController(IService RoleService, ILogger logger) { _service = RoleService; _logger = logger; } [HttpGet] public async Task>> GetRoles(int index, int count) { try { _logger.LogInformation("Getting Roles "); 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 roles."); // Retourner une réponse d'erreur return StatusCode(400, ex.Message); } } [HttpGet("{id}")] public async Task> GetRole(long id) { try { _logger.LogInformation("Getting a role with id {id}", id); var group = await _service.GetById(id); return group; } catch (Exception ex) { // Journaliser l'exception _logger.LogError(ex, "Une erreur s'est produite lors de la récupération du role avec l'ID {id}.", id); // Retourner une réponse d'erreur return StatusCode(400, ex.Message); } } [HttpPost] public async Task> AddRole([FromQuery] RoleDTO role) { try { _logger.LogInformation("Adding a role with id : {id}", role.Id); role.Id = _service.Gets(0, 0).Result.TotalCount + 1; var newGroup = await _service.Add(role); return newGroup; } catch (Exception ex) { // Journaliser l'exception _logger.LogError(ex, "Une erreur s'est produite lors de l'ajout du role avec l'ID {id}.", role.Id); // Retourner une réponse d'erreur return StatusCode(400, ex.Message); } } [HttpDelete("{id}")] public async Task> DeleteRole(long id) { try { _logger.LogInformation("Deleting a role with id : {id}", id); var group = await _service.Delete(id); return group; } catch (Exception ex) { // Journaliser l'exception _logger.LogError(ex, "Une erreur s'est produite lors de la suppression du role avec l'ID {id}.", id); // Retourner une réponse d'erreur return StatusCode(400, ex.Message); } } } }