@ -1,11 +1,8 @@
using Asp.Versioning ;
using Dto ;
using DbContextLib ;
using Asp.Versioning ;
using Microsoft.AspNetCore.Authorization ;
using Microsoft.AspNetCore.Authorization ;
using Microsoft.AspNetCore.Http ;
using Microsoft.AspNetCore.Mvc ;
using Microsoft.AspNetCore.Mvc ;
using Model.Business ;
using Shared ;
using Model.DTO ;
using Services ;
namespace API.Controllers
namespace API.Controllers
{
{
@ -13,108 +10,122 @@ namespace API.Controllers
[Authorize]
[Authorize]
[ApiVersion("1.0")]
[ApiVersion("1.0")]
[ApiController]
[ApiController]
public class UserController : Controller
public class UserController ( ILogger < UserController > logger , IUserService < UserDTO > userService ) : Controller Base
{
{
private IDataService _userDataService ;
private readonly ILogger < UserController > _logger ;
public UserController ( IDataService userDataService , ILogger < UserController > logger )
{
_userDataService = userDataService ;
_logger = logger ;
}
[HttpGet("users/{page}/{number}")]
[HttpGet("users/{page}/{number}")]
public IActionResult GetUsers ( int page , int number )
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 204)]
public IActionResult GetUsers ( int page , int number )
{
{
var nbUser = _userDataService . GetUsers ( page , number ) . Count ( ) ;
var users = userService . GetUsers ( page , number ) . ToList ( ) ;
if ( nbUser = = 0 )
if ( users . Count = = 0 )
{
{
_ logger. LogError ( "[ERREUR] Aucun utilisateur trouvé." ) ;
logger . LogError ( "[ERREUR] Aucun utilisateur trouvé." ) ;
return StatusCode ( 204 ) ;
return StatusCode ( 204 ) ;
}
}
_logger . LogInformation ( "[INFORMATION] {nb} Utilisateur(s) trouvé(s)" , nbUser ) ;
return Ok ( _userDataService . GetUsers ( page , number ) ) ;
logger . LogInformation ( "[INFORMATION] {nb} Utilisateur(s) trouvé(s)" , users . Count ) ;
return Ok ( users ) ;
}
}
[HttpGet("user/id/{id}")]
[HttpGet("user/id/{id}")]
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetUserById ( int id )
public IActionResult GetUserById ( int id )
{
{
try
try
{
{
_logger . LogInformation ( "[INFORMATION] Utilisateur avec l'id {id} a été trouvé." , id ) ;
logger . LogInformation ( "[INFORMATION] Utilisateur avec l'id {id} a été trouvé." , id ) ;
return Ok ( _userDataService . GetUserById ( id ) ) ;
return Ok ( userService . GetUserById ( id ) ) ;
} catch ( ArgumentException )
}
catch ( ArgumentException )
{
{
_ logger. LogError ( "[ERREUR] Aucun utilisateur trouvé avec l'id {id}." , id ) ;
logger. LogError ( "[ERREUR] Aucun utilisateur trouvé avec l'id {id}." , id ) ;
return NotFound ( ) ;
return NotFound ( ) ;
}
}
}
}
[HttpGet("user/username/{username}")]
[HttpGet("user/username/{username}")]
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetUserByUsername ( string username )
public IActionResult GetUserByUsername ( string username )
{
{
try
try
{
{
_logger . LogInformation ( "[INFORMATION] Utilisateur avec l'username {username} a été trouvé." , username ) ;
logger . LogInformation ( "[INFORMATION] Utilisateur avec l'username {username} a été trouvé." , username ) ;
return Ok ( _userDataService . GetUserByUsername ( username ) ) ;
return Ok ( userService . GetUserByUsername ( username ) ) ;
} catch ( ArgumentException )
}
catch ( ArgumentException )
{
{
_ logger. LogError ( "[ERREUR] Aucun utilisateur trouvé avec l'username {username}." , username ) ;
logger. LogError ( "[ERREUR] Aucun utilisateur trouvé avec l'username {username}." , username ) ;
return NotFound ( ) ;
return NotFound ( ) ;
}
}
}
}
[HttpDelete]
[HttpDelete]
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult DeleteUser ( int id )
public IActionResult DeleteUser ( int id )
{
{
var success = _ userData Service. DeleteUser ( id ) ;
var success = userService. DeleteUser ( id ) ;
if ( success )
if ( success )
{
{
_logger . LogInformation ( "[INFORMATION] L'utilisateur avec l'id {id} a été supprimé." , id ) ;
logger . LogInformation ( "[INFORMATION] L'utilisateur avec l'id {id} a été supprimé." , id ) ;
return Ok ( _userDataService . DeleteUser ( id ) ) ;
return Ok ( userService . DeleteUser ( id ) ) ;
} else
}
else
{
{
_ logger. LogError ( "[ERREUR] Aucun utilisateur trouvé avec l'id {id}." , id ) ;
logger. LogError ( "[ERREUR] Aucun utilisateur trouvé avec l'id {id}." , id ) ;
return NotFound ( ) ;
return NotFound ( ) ;
}
}
}
}
[HttpPost]
[HttpPost]
public IActionResult CreateUser ( [ FromBody ] UserDTO dto )
[ProducesResponseType(typeof(UserDTO), 201)]
[ProducesResponseType(typeof(string), 400)]
public IActionResult CreateUser ( [ FromBody ] UserDTO dto )
{
{
if ( dto . Username = = null | | dto . Password = = null | | dto . Email = = null )
if ( dto . Username = = null | | dto . Password = = null | | dto . Email = = null )
{
{
return BadRequest ( ) ;
return BadRequest ( ) ;
}
}
// return Ok(_userDataService.CreateUser(username, password, email, isAdmin));
_logger . LogInformation ( "[INFORMATION] Un utilisateur a été créé : username - {username}, password - {password}, email - {email}, isAdmin - {isAdmin}" , dto . Username , dto . Password , dto . Email , dto . IsAdmin ) ;
// return Ok(userService.CreateUser(username, password, email, isAdmin));
return Created ( nameof ( GetUsers ) , _userDataService . CreateUser ( dto . Username , dto . Password , dto . Email , dto . IsAdmin ) ) ;
logger . LogInformation (
"[INFORMATION] Un utilisateur a été créé : username - {username}, password - {password}, email - {email}, isAdmin - {isAdmin}" ,
dto . Username , dto . Password , dto . Email , dto . IsAdmin ) ;
return Created ( nameof ( GetUsers ) ,
userService . CreateUser ( dto . Username , dto . Password , dto . Email , dto . IsAdmin ) ) ;
}
}
[HttpPut]
[HttpPut]
public IActionResult UpdateUser ( int id , [ FromBody ] UserDTO userDTO )
[ProducesResponseType(typeof(UserDTO), 200)]
[ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult UpdateUser ( int id , [ FromBody ] UserDTO userDto )
{
{
if ( id ! = userDTO . Id )
if ( id ! = userDto . Id )
{
{
_ logger. LogError ( "[ERREUR] Problème ID - La mise à jour de l'utilisateur avec l'id {id} a échouée." , id ) ;
logger. LogError ( "[ERREUR] Problème ID - La mise à jour de l'utilisateur avec l'id {id} a échouée." , id ) ;
return BadRequest ( ) ;
return BadRequest ( ) ;
}
}
if ( ! ModelState . IsValid )
if ( ! ModelState . IsValid )
{
{
_logger . LogError ( "[ERREUR] Problème controlleur - La mise à jour de l'utilisateur avec l'id {id} a échouée." , id ) ;
logger . LogError (
"[ERREUR] Problème controlleur - La mise à jour de l'utilisateur avec l'id {id} a échouée." , id ) ;
return BadRequest ( ) ;
return BadRequest ( ) ;
}
}
if ( userDTO ! = null )
if ( userDto ! = null )
{
{
_logger . LogInformation ( "[INFORMATION] La mise à jour de l'utilsiateur avec l'id {id} a été effectuée" , id ) ;
logger . LogInformation ( "[INFORMATION] La mise à jour de l'utilsiateur avec l'id {id} a été effectuée" ,
return Ok ( _userDataService . UpdateUser ( id , userDTO ) ) ;
id ) ;
return Ok ( userService . UpdateUser ( id , userDto ) ) ;
}
}
_logger . LogError ( "[ERREUR] Aucun utilisateur trouvé avec l'id {id}." , id ) ;
return NotFound ( ) ;
logger . LogError ( "[ERREUR] Aucun utilisateur trouvé avec l'id {id}." , id ) ;
return NotFound ( ) ;
}
}
}
}
}
}