You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
5.3 KiB
160 lines
5.3 KiB
|
|
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 UserController : ControllerBase
|
|
{
|
|
private readonly IUserService _service;
|
|
private readonly ILogger<UserController> _logger;
|
|
|
|
public UserController(IUserService userService, ILogger<UserController> logger)
|
|
{
|
|
_service = userService;
|
|
_logger = logger;
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<ActionResult<PageResponse<UserDTO>>> GetUsers(int index,int count)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Getting Users ");
|
|
var users = await _service.Gets(index, count);
|
|
return users;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Journaliser l'exception
|
|
_logger.LogError(ex, "Une erreur s'est produite lors de la récupération des utilisateurs.");
|
|
|
|
// Retourner une réponse d'erreur
|
|
return StatusCode(400, ex.Message);
|
|
}
|
|
}
|
|
|
|
[HttpPost]
|
|
public async Task<ActionResult<UserDTO>> AddUser([FromQuery] UserDTO user)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Adding a user with id : {id}", user.Id);
|
|
user.Id = _service.Gets(0, 0).Result.TotalCount + 1;
|
|
var newUser = await _service.Add(user);
|
|
return newUser;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Journaliser l'exception
|
|
_logger.LogError(ex, "Une erreur s'est produite lors de l'ajout de l'utilisateur avec l'ID {id}.", user.Id);
|
|
|
|
// Retourner une réponse d'erreur
|
|
return StatusCode(400, ex.Message);
|
|
}
|
|
}
|
|
|
|
[HttpDelete("{id}")]
|
|
public async Task<ActionResult<UserDTO>> DeleteUser(long id)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Deleting a user with id : {id}", id);
|
|
var user = await _service.Delete(id);
|
|
return user;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Journaliser l'exception
|
|
_logger.LogError(ex, "Une erreur s'est produite lors de la suppression de l'utilisateur avec l'ID {id}.", id);
|
|
|
|
// Retourner une réponse d'erreur
|
|
return StatusCode(400, ex.Message);
|
|
}
|
|
}
|
|
|
|
[HttpPut]
|
|
public async Task<ActionResult<UserDTO>> UpdateUser([FromQuery] UserDTO user)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Updating a user with id : {id}", user.Id);
|
|
var updatedUser = await _service.Update(user);
|
|
return updatedUser;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Journaliser l'exception
|
|
_logger.LogError(ex, "Une erreur s'est produite lors de la mise à jour de l'utilisateur avec l'ID {id}.", user.Id);
|
|
|
|
// Retourner une réponse d'erreur
|
|
return StatusCode(400, ex.Message);
|
|
}
|
|
}
|
|
|
|
[HttpGet("{id}")]
|
|
public async Task<ActionResult<UserDTO>> GetUser(long id)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Getting a user with id {id}", id);
|
|
var user = await _service.GetById(id);
|
|
return user;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Journaliser l'exception
|
|
_logger.LogError(ex, "Une erreur s'est produite lors de la récupération de l'utilisateur avec l'ID {id}.", id);
|
|
|
|
// Retourner une réponse d'erreur
|
|
return StatusCode(400, ex.Message);
|
|
}
|
|
}
|
|
|
|
[HttpGet("group/{group}")]
|
|
public async Task<ActionResult<PageResponse<UserDTO>>> GetUsersByGroup(int index, int count, int group)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Getting Users by group");
|
|
var users = await _service.GetByGroup(index, count, group);
|
|
return users;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Journaliser l'exception
|
|
_logger.LogError(ex, "Une erreur s'est produite lors de la récupération des utilisateurs par groupe.");
|
|
|
|
// Retourner une réponse d'erreur
|
|
return StatusCode(400, ex.Message);
|
|
}
|
|
}
|
|
|
|
[HttpGet("role/{role}")]
|
|
public async Task<ActionResult<PageResponse<UserDTO>>> GetUsersByRole(int index, int count, string role)
|
|
{
|
|
try
|
|
{
|
|
_logger.LogInformation("Getting Users by role");
|
|
var users = await _service.GetByRole(index, count, role);
|
|
return users;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Journaliser l'exception
|
|
_logger.LogError(ex, "Une erreur s'est produite lors de la récupération des utilisateurs par rôle.");
|
|
|
|
// Retourner une réponse d'erreur
|
|
return StatusCode(400, ex.Message);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|