@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Authorization ;
using System.Net ;
using Microsoft.AspNetCore.Authorization ;
using Microsoft.AspNetCore.Mvc ;
using Dto ;
using Model.OrderCriteria ;
@ -13,18 +14,18 @@ namespace API.Controllers
[ApiController]
public class LessonsController : Controller
{
private readonly ILessonService < LessonD to > _lessonDataService ;
private readonly ILessonService < LessonD TO > _lessonDataService ;
private readonly ILogger < LessonsController > _logger ;
public LessonsController ( ILessonService < LessonD to > lessonDataService , ILogger < LessonsController > logger )
public LessonsController ( ILessonService < LessonD TO > lessonDataService , ILogger < LessonsController > logger )
{
_lessonDataService = lessonDataService ;
_logger = logger ;
}
[HttpGet("lessons/{page:int}/{number:int}/{orderCriteria}")]
[ProducesResponseType(typeof(LessonD to ), 200)]
[ProducesResponseType(typeof(LessonD TO ), 200)]
[ProducesResponseType(typeof(string), 204)]
public IActionResult GetLessons ( int page , int number , LessonOrderCriteria orderCriteria )
{
@ -40,7 +41,7 @@ namespace API.Controllers
}
[HttpGet("lesson/{id:int}")]
[ProducesResponseType(typeof(LessonD to ), 200)]
[ProducesResponseType(typeof(LessonD TO ), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetLessonById ( int id )
{
@ -57,7 +58,7 @@ namespace API.Controllers
}
[HttpGet("lesson/{title:alpha}")]
[ProducesResponseType(typeof(LessonD to ), 200)]
[ProducesResponseType(typeof(LessonD TO ), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult GetLessonByTitle ( string title )
{
@ -74,7 +75,7 @@ namespace API.Controllers
}
[HttpDelete("lesson/{id:int}")]
[ProducesResponseType(typeof(LessonD to ), 200)]
[ProducesResponseType(typeof(LessonD TO ), 200)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult DeleteLesson ( int id )
{
@ -92,29 +93,44 @@ namespace API.Controllers
}
[HttpPost]
[ProducesResponseType(typeof(LessonD to ), 201)]
[ProducesResponseType(typeof(LessonD TO ), 201)]
[ProducesResponseType(typeof(string), 400)]
public IActionResult CreateLesson ( [ FromBody ] LessonDto dto )
[ProducesResponseType(typeof(string), 500)]
public IActionResult CreateLesson ( [ FromBody ] LessonDTO dto )
{
if ( dto . Title = = null | | dto . LastPublisher = = null )
{
return BadRequest ( ) ;
}
_logger . LogInformation (
"[INFORMATION] Une leçon a été créé : title - {title}, lastPublisher - {publisher}, lastEdit - {lastEdit}" ,
dto . Title , dto . LastPublisher , dto . LastEdit ) ;
return Created ( nameof ( GetLessons ) ,
_lessonDataService . CreateLesson ( dto . Title , dto . LastPublisher , dto . LastEdit ) ) ;
try
{
var createdLesson = _lessonDataService . CreateLesson ( dto . Id , dto . Title , dto . LastPublisher , dto . LastEdit ) ;
if ( createdLesson ! = null )
{
_logger . LogInformation (
"[INFORMATION] Une leçon a été créé : title - {title}, lastPublisher - {publisher}, lastEdit - {lastEdit}" ,
dto . Title , dto . LastPublisher , dto . LastEdit ) ;
return Created ( nameof ( GetLessons ) , createdLesson ) ;
}
else
{
return StatusCode ( 500 ) ;
}
}
catch ( ArgumentException e )
{
_logger . LogError ( "[ERREUR] " + e . Message ) ;
return Created ( ) ;
}
}
[HttpPut("lesson/{id:int}")]
[ProducesResponseType(typeof(LessonDto), 200)]
[ProducesResponseType(typeof(LessonD TO ), 200)]
[ProducesResponseType(typeof(string), 400)]
[ProducesResponseType(typeof(string), 404)]
public IActionResult UpdateLesson ( int id , [ FromBody ] LessonDto lessonDTO )
public IActionResult UpdateLesson ( int id , [ FromBody ] LessonD TO lessonDto )
{
if ( id ! = lessonDTO . Id )
if ( id ! = lessonD to . Id )
{
_logger . LogError ( "[ERREUR] Problème ID - La mise à jour de la leçon avec l'id {id} a échouée." , id ) ;
return BadRequest ( ) ;
@ -127,10 +143,10 @@ namespace API.Controllers
return BadRequest ( ) ;
}
if ( lessonD TO ! = null )
if ( lessonD to ! = null )
{
_logger . LogInformation ( "[INFORMATION] La mise à jour de la leçon avec l'id {id} a été effectuée" , id ) ;
return Ok ( _lessonDataService . UpdateLesson ( id , lessonD TO ) ) ;
return Ok ( _lessonDataService . UpdateLesson ( id , lessonD to ) ) ;
}
_logger . LogError ( "[ERREUR] Aucune leçon trouvée avec l'id {id}." , id ) ;