@ -11,16 +11,16 @@ using System;
using System.Collections.Generic ;
using System.Collections.Generic ;
using Microsoft.AspNetCore.Mvc ;
using Microsoft.AspNetCore.Mvc ;
using Swashbuckle.AspNetCore.Annotations ;
using Swashbuckle.AspNetCore.Annotations ;
using Swashbuckle.AspNetCore.SwaggerGen ;
using Newtonsoft.Json ;
using Newtonsoft.Json ;
using System.ComponentModel.DataAnnotations ;
using System.ComponentModel.DataAnnotations ;
using IO.Swagger.Attributes ;
using IO.Swagger.Attributes ;
using IO.Swagger.Security ;
using Microsoft.AspNetCore.Authorization ;
using IO.Swagger.DTO ;
using IO.Swagger.DTO ;
using EPAServeur.IServices ;
using EPAServeur.IServices ;
using System.Reflection.Metadata.Ecma335 ;
using System.Linq ;
using System.Runtime.InteropServices.WindowsRuntime ;
using System.Threading.Tasks ;
using Microsoft.Extensions.Logging ;
using EPAServeur.Exceptions ;
using Microsoft.EntityFrameworkCore ;
namespace IO.Swagger.Controllers
namespace IO.Swagger.Controllers
{
{
@ -31,10 +31,12 @@ namespace IO.Swagger.Controllers
public class FormationsApiController : ControllerBase
public class FormationsApiController : ControllerBase
{
{
private readonly IFormationService formationService ;
private readonly IFormationService formationService ;
private readonly ILogger < FormationsApiController > logger ;
public FormationsApiController ( IFormationService _f ormationService )
public FormationsApiController ( IFormationService _f ormationService , ILogger < FormationsApiController > _l ogger )
{
{
formationService = _f ormationService ;
formationService = _f ormationService ;
logger = _l ogger ;
}
}
/// <summary>
/// <summary>
@ -50,19 +52,32 @@ namespace IO.Swagger.Controllers
[ValidateModelState]
[ValidateModelState]
[SwaggerOperation("AjouterFormation")]
[SwaggerOperation("AjouterFormation")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
public virtual IActionResult AjouterFormation ( [ FromBody ] FormationDTO body )
public virtual async Task < IActionResult > AjouterFormation ( [ FromBody ] FormationDTO body )
{
{
FormationDTO nouvelleFormation = formationService . AddFormation ( body ) ;
logger . LogInformation ( "Ajout d'une nouvelle formation." ) ;
FormationDTO nouvelleFormation = null ;
try
{
nouvelleFormation = await formationService . AddFormationAsync ( body ) ;
}
catch ( FormationInvalidException )
{
logger . LogWarning ( "Des données sont manquants, la nouvelle formation ne peut pas être ajoutée." ) ;
}
catch ( DbUpdateException )
{
logger . LogError ( "Une erreur est survenue dans la base de données durant l'ajout de la nouvelle formation." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de l'ajout de la formation note." ) ;
}
logger . LogInformation ( "Nouvelle formation ajoutée." ) ;
return Created ( "" , nouvelleFormation ) ;
return Created ( "" , nouvelleFormation ) ;
//if (body.Id != null && body.Id > 0)
//{
// return StatusCode(201, body);
//}
//else
//{
// return NotFound();
//}
}
}
/// <summary>
/// <summary>
@ -78,17 +93,41 @@ namespace IO.Swagger.Controllers
[ValidateModelState]
[ValidateModelState]
[SwaggerOperation("DeleteFormation")]
[SwaggerOperation("DeleteFormation")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
public virtual IActionResult DeleteFormation ( [ FromRoute ] [ Required ] long? idFormation )
public virtual async Task < IActionResult > DeleteFormation ( [ FromRoute ] [ Required ] long? idFormation )
{
{
if ( ! forma tionSe rvice . DeleteFormationB yId ( idFormation ) )
try
{
{
logger . LogInformation ( "Suppresion de la formation {idFormation}." , idFormation ) ;
FormationDTO formation = await formationService . DeleteFormationByIdAsync ( idFormation ) ;
}
catch ( FormationNotFoundException )
{
logger . LogError ( "Impossible de supprimer la formation d'id {idFormation} car elle n'existe pas." , idFormation ) ;
ErreurDTO erreur = new ErreurDTO ( )
ErreurDTO erreur = new ErreurDTO ( )
{
{
Code = "404" ,
Code = "404" ,
Message = "Aucune formation trouvée"
Message = "Aucune formation trouvée"
} ;
} ;
return NotFound ( erreur ) ;
return NotFound ( erreur ) ;
}
}
catch ( DbUpdateConcurrencyException )
{
logger . LogWarning ( "La formation {idFormation} n'a pas pu être supprimée car elle est prise par une autre ressource." , idFormation ) ;
}
catch ( DbUpdateException )
{
logger . LogError ( "Une erreur a eu lieu, la formation {idFormation} n'a pas pu être supprimée." , idFormation ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la suppression de la formation {idFormation}." , idFormation ) ;
}
logger . LogInformation ( "Formation {idFormation} supprimée avec succès." , idFormation ) ;
return NoContent ( ) ;
return NoContent ( ) ;
}
}
@ -113,10 +152,25 @@ namespace IO.Swagger.Controllers
[SwaggerResponse(statusCode: 200, type: typeof(List<FormationDetailsDTO>), description: "OK")]
[SwaggerResponse(statusCode: 200, type: typeof(List<FormationDetailsDTO>), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
public virtual IActionResult GetFormationAnnulees ( [ FromQuery ] [ Required ( ) ] bool? asc , [ FromQuery ] [ Required ( ) ] int? numPage , [ FromQuery ] [ Required ( ) ] int? parPAge , [ FromQuery ] int? idAgence , [ FromQuery ] string texte , [ FromQuery ] string tri )
public virtual async Task < IActionResult > GetFormationAnnulees ( [ FromQuery ] [ Required ( ) ] bool? asc , [ FromQuery ] [ Required ( ) ] int? numPage , [ FromQuery ] [ Required ( ) ] int? parPAge , [ FromQuery ] int? idAgence , [ FromQuery ] string texte , [ FromQuery ] string tri )
{
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
logger . LogInformation ( "Récupération de la liste des formations annulées." ) ;
IEnumerable < FormationDTO > formations = formationService . GetFormationAnnulees ( asc , numPage , parPAge , idAgence , texte , tri ) ;
IEnumerable < FormationDTO > formations = null ;
try
{
formations = await formationService . GetFormationAnnuleesAsync ( asc , numPage , parPAge , idAgence , texte , tri ) ;
}
catch ( ArgumentNullException )
{
logger . LogError ( "Un des arguments passés dans la requête pour récupérer la liste des formations annulées est invalide." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la récupération de la liste des formations annulées." ) ;
}
if ( formations = = null )
if ( formations = = null )
{
{
ErreurDTO erreur = new ErreurDTO ( )
ErreurDTO erreur = new ErreurDTO ( )
@ -124,9 +178,12 @@ namespace IO.Swagger.Controllers
Code = "404" ,
Code = "404" ,
Message = "Aucune formation annulée"
Message = "Aucune formation annulée"
} ;
} ;
return NotFound ( erreur ) ;
return NotFound ( erreur ) ;
}
}
logger . LogInformation ( "Liste des formations annulées récupérée." ) ;
return Ok ( formations ) ;
return Ok ( formations ) ;
}
}
@ -146,18 +203,43 @@ namespace IO.Swagger.Controllers
[SwaggerResponse(statusCode: 200, type: typeof(FormationDTO), description: "OK")]
[SwaggerResponse(statusCode: 200, type: typeof(FormationDTO), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
public virtual IActionResult GetFormationById ( [ FromRoute ] [ Required ] long? idFormation )
public virtual async Task < IActionResult > GetFormationById ( [ FromRoute ] [ Required ] long? idFormation )
{
{
FormationDTO formationDTO = formationService . GetFormationById ( Convert . ToInt32 ( idFormation ) ) ;
logger . LogInformation ( "Récupération de la formation {idFormation}." , idFormation ) ;
if ( formationDTO = = null )
FormationDTO formationDTO = null ;
try
{
{
formationDTO = await formationService . GetFormationByIdAsync ( idFormation ) ;
}
catch ( FormationNotFoundException )
{
logger . LogError ( "Aucune formation ne correspond à l'id {idFormation} recherchée." , idFormation ) ;
ErreurDTO erreurDTO = new ErreurDTO ( )
ErreurDTO erreurDTO = new ErreurDTO ( )
{
{
Code = "404" ,
Code = "404" ,
Message = "La formation n'existe pas" ,
Message = "La formation n'existe pas" ,
} ;
} ;
return NotFound ( erreurDTO ) ;
return NotFound ( erreurDTO ) ;
}
}
catch ( DbUpdateConcurrencyException )
{
logger . LogWarning ( "La formation {idFormation} n'a pas pu être récupérée car elle est prise par une autre ressource." , idFormation ) ;
}
catch ( DbUpdateException )
{
logger . LogError ( "Une erreur a eu lieu, la formation {idFormation} n'a pas pu être récupérée." , idFormation ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la récupération de la formation {idFormation}." , idFormation ) ;
}
logger . LogInformation ( "Formation {idFormation} récupérée." , idFormation ) ;
return Ok ( formationDTO ) ;
return Ok ( formationDTO ) ;
}
}
@ -182,10 +264,25 @@ namespace IO.Swagger.Controllers
[SwaggerResponse(statusCode: 200, type: typeof(List<FormationDetailsDTO>), description: "OK")]
[SwaggerResponse(statusCode: 200, type: typeof(List<FormationDetailsDTO>), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
public virtual IActionResult GetFormationRealisee ( [ FromQuery ] [ Required ( ) ] bool? asc , [ FromQuery ] [ Required ( ) ] int? numPage , [ FromQuery ] [ Required ( ) ] int? parPAge , [ FromQuery ] int? idAgence , [ FromQuery ] string texte , [ FromQuery ] string tri )
public virtual async Task < IActionResult > GetFormationRealisee ( [ FromQuery ] [ Required ( ) ] bool? asc , [ FromQuery ] [ Required ( ) ] int? numPage , [ FromQuery ] [ Required ( ) ] int? parPAge , [ FromQuery ] int? idAgence , [ FromQuery ] string texte , [ FromQuery ] string tri )
{
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
logger . LogInformation ( "Récupération de la liste des formations réalisées." ) ;
IEnumerable < FormationDTO > formations = formationService . GetFormationRealisee ( asc , numPage , parPAge , idAgence , texte , tri ) ;
IEnumerable < FormationDTO > formations = null ;
try
{
formations = await formationService . GetFormationRealiseeAsync ( asc , numPage , parPAge , idAgence , texte , tri ) ;
}
catch ( ArgumentNullException )
{
logger . LogError ( "Un des arguments passés dans la requête pour récupérer la liste des formations réalisées est invalide." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la récupération de la liste des formations réalisées." ) ;
}
if ( formations = = null )
if ( formations = = null )
{
{
ErreurDTO erreur = new ErreurDTO ( )
ErreurDTO erreur = new ErreurDTO ( )
@ -193,9 +290,12 @@ namespace IO.Swagger.Controllers
Code = "404" ,
Code = "404" ,
Message = "Aucune formation réalisée"
Message = "Aucune formation réalisée"
} ;
} ;
return NotFound ( erreur ) ;
return NotFound ( erreur ) ;
}
}
logger . LogInformation ( "Liste des formations réalisées récupérée." ) ;
return Ok ( formations ) ;
return Ok ( formations ) ;
}
}
@ -220,10 +320,25 @@ namespace IO.Swagger.Controllers
[SwaggerOperation("GetFormations")]
[SwaggerOperation("GetFormations")]
[SwaggerResponse(statusCode: 200, type: typeof(List<FormationDetailsDTO>), description: "OK")]
[SwaggerResponse(statusCode: 200, type: typeof(List<FormationDetailsDTO>), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
public virtual IActionResult GetFormations ( [ FromQuery ] [ Required ( ) ] bool? asc , [ FromQuery ] [ Required ( ) ] int? numPage , [ FromQuery ] [ Required ( ) ] int? parPAge , [ FromQuery ] int? idAgence , [ FromQuery ] int? statutFormation , [ FromQuery ] string texte , [ FromQuery ] string tri )
public virtual async Task < IActionResult > GetFormations ( [ FromQuery ] [ Required ( ) ] bool? asc , [ FromQuery ] [ Required ( ) ] int? numPage , [ FromQuery ] [ Required ( ) ] int? parPAge , [ FromQuery ] int? idAgence , [ FromQuery ] int? statutFormation , [ FromQuery ] string texte , [ FromQuery ] string tri )
{
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
logger . LogInformation ( "Récupération de la liste des formations." ) ;
IEnumerable < FormationDTO > formations = formationService . GetFormations ( asc , numPage , parPAge , idAgence , texte , tri ) ;
IEnumerable < FormationDTO > formations = null ;
try
{
formations = await formationService . GetFormationsAsync ( asc , numPage , parPAge , idAgence , statutFormation , texte , tri ) ;
}
catch ( ArgumentNullException )
{
logger . LogError ( "Un des arguments passés dans la requête pour récupérer la liste des formations est invalide." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la récupération de la liste des formations." ) ;
}
if ( formations = = null )
if ( formations = = null )
{
{
ErreurDTO erreur = new ErreurDTO ( )
ErreurDTO erreur = new ErreurDTO ( )
@ -231,9 +346,12 @@ namespace IO.Swagger.Controllers
Code = "404" ,
Code = "404" ,
Message = "Aucune formation"
Message = "Aucune formation"
} ;
} ;
return NotFound ( erreur ) ;
return NotFound ( erreur ) ;
}
}
logger . LogInformation ( "Liste des formations récupérée." ) ;
return Ok ( formations ) ;
return Ok ( formations ) ;
}
}
@ -250,10 +368,25 @@ namespace IO.Swagger.Controllers
[SwaggerOperation("GetModesFormation")]
[SwaggerOperation("GetModesFormation")]
[SwaggerResponse(statusCode: 200, type: typeof(List<ModeFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 200, type: typeof(List<ModeFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
public virtual IActionResult GetModesFormation ( )
public virtual async Task < IActionResult > GetModesFormation ( )
{
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
logger . LogInformation ( "Récupération de la liste des modes de formation." ) ;
IEnumerable < ModeFormationDTO > modeFormations = formationService . GetModesFormation ( ) ;
IEnumerable < ModeFormationDTO > modeFormations = null ;
try
{
modeFormations = await formationService . GetModesFormationAsync ( ) ;
}
catch ( ArgumentNullException )
{
logger . LogError ( "Un des arguments passés dans la requête pour récupérer la liste des modes de formation est invalide." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la récupération de la liste des modes de formation." ) ;
}
if ( modeFormations = = null )
if ( modeFormations = = null )
{
{
ErreurDTO erreur = new ErreurDTO ( )
ErreurDTO erreur = new ErreurDTO ( )
@ -261,9 +394,12 @@ namespace IO.Swagger.Controllers
Code = "404" ,
Code = "404" ,
Message = "Aucun mode de formation"
Message = "Aucun mode de formation"
} ;
} ;
return NotFound ( erreur ) ;
return NotFound ( erreur ) ;
}
}
logger . LogInformation ( "Liste des modes de formation récupérée." ) ;
return Ok ( modeFormations ) ;
return Ok ( modeFormations ) ;
}
}
@ -280,10 +416,25 @@ namespace IO.Swagger.Controllers
[SwaggerOperation("GetOriginesFormation")]
[SwaggerOperation("GetOriginesFormation")]
[SwaggerResponse(statusCode: 200, type: typeof(List<OrigineFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 200, type: typeof(List<OrigineFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
public virtual IActionResult GetOriginesFormation ( )
public virtual async Task < IActionResult > GetOriginesFormation ( )
{
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
logger . LogInformation ( "Récupération de la liste des origines de formation." ) ;
IEnumerable < OrigineFormationDTO > origineFormations = formationService . GetOriginesFormation ( ) ;
IEnumerable < OrigineFormationDTO > origineFormations = null ;
try
{
origineFormations = await formationService . GetOriginesFormationAsync ( ) ;
}
catch ( ArgumentNullException )
{
logger . LogError ( "Un des arguments passés dans la requête pour récupérer la liste des origines de formation est invalide." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la récupération de la liste des origines de formation." ) ;
}
if ( origineFormations = = null )
if ( origineFormations = = null )
{
{
ErreurDTO erreur = new ErreurDTO ( )
ErreurDTO erreur = new ErreurDTO ( )
@ -294,6 +445,8 @@ namespace IO.Swagger.Controllers
return NotFound ( erreur ) ;
return NotFound ( erreur ) ;
}
}
logger . LogInformation ( "Liste des origines de formation récupérée." ) ;
return Ok ( origineFormations ) ;
return Ok ( origineFormations ) ;
}
}
@ -318,10 +471,25 @@ namespace IO.Swagger.Controllers
[SwaggerResponse(statusCode: 200, type: typeof(List<FormationDetailsDTO>), description: "OK")]
[SwaggerResponse(statusCode: 200, type: typeof(List<FormationDetailsDTO>), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
public virtual IActionResult GetProchainesFormation ( [ FromQuery ] [ Required ( ) ] bool? asc , [ FromQuery ] [ Required ( ) ] int? numPage , [ FromQuery ] [ Required ( ) ] int? parPAge , [ FromQuery ] int? idAgence , [ FromQuery ] string texte , [ FromQuery ] string tri )
public virtual async Task < IActionResult > GetProchainesFormation ( [ FromQuery ] [ Required ( ) ] bool? asc , [ FromQuery ] [ Required ( ) ] int? numPage , [ FromQuery ] [ Required ( ) ] int? parPAge , [ FromQuery ] int? idAgence , [ FromQuery ] string texte , [ FromQuery ] string tri )
{
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
logger . LogInformation ( "Récupération de la liste des prochaines formations." ) ;
IEnumerable < FormationDTO > formations = formationService . GetProchainesFormation ( asc , numPage , parPAge , idAgence , texte , tri ) ;
IEnumerable < FormationDTO > formations = null ;
try
{
formations = await formationService . GetProchainesFormationAsync ( asc , numPage , parPAge , idAgence , texte , tri ) ;
}
catch ( ArgumentNullException )
{
logger . LogError ( "Un des arguments passés dans la requête pour récupérer la liste des prochaines formations est invalide." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la récupération de la liste des prochaines formations." ) ;
}
if ( formations = = null )
if ( formations = = null )
{
{
ErreurDTO erreur = new ErreurDTO ( )
ErreurDTO erreur = new ErreurDTO ( )
@ -329,9 +497,12 @@ namespace IO.Swagger.Controllers
Code = "404" ,
Code = "404" ,
Message = "Aucune prochaine formation"
Message = "Aucune prochaine formation"
} ;
} ;
return NotFound ( erreur ) ;
return NotFound ( erreur ) ;
}
}
logger . LogInformation ( "Liste des prochaines formations récupérée." ) ;
return Ok ( formations ) ;
return Ok ( formations ) ;
}
}
@ -348,10 +519,25 @@ namespace IO.Swagger.Controllers
[SwaggerOperation("GetStatutsFormation")]
[SwaggerOperation("GetStatutsFormation")]
[SwaggerResponse(statusCode: 200, type: typeof(List<StatutFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 200, type: typeof(List<StatutFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
public virtual IActionResult GetStatutsFormation ( )
public virtual async Task < IActionResult > GetStatutsFormation ( )
{
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
logger . LogInformation ( "Récupération de la liste des statuts de formation." ) ;
IEnumerable < StatutFormationDTO > statutFormations = formationService . GetStatutsFormation ( ) ;
IEnumerable < StatutFormationDTO > statutFormations = null ;
try
{
statutFormations = await formationService . GetStatutsFormationAsync ( ) ;
}
catch ( ArgumentNullException )
{
logger . LogError ( "Un des arguments passés dans la requête pour récupérer la liste des statuts de formation est invalide." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la récupération de la liste des statuts de formation." ) ;
}
if ( statutFormations = = null )
if ( statutFormations = = null )
{
{
ErreurDTO erreur = new ErreurDTO ( )
ErreurDTO erreur = new ErreurDTO ( )
@ -359,9 +545,12 @@ namespace IO.Swagger.Controllers
Code = "404" ,
Code = "404" ,
Message = "Aucun statut de formation"
Message = "Aucun statut de formation"
} ;
} ;
return NotFound ( erreur ) ;
return NotFound ( erreur ) ;
}
}
logger . LogInformation ( "Liste des statuts de formation récupérée." ) ;
return Ok ( statutFormations ) ;
return Ok ( statutFormations ) ;
}
}
@ -378,10 +567,25 @@ namespace IO.Swagger.Controllers
[SwaggerOperation("GetTypesFormation")]
[SwaggerOperation("GetTypesFormation")]
[SwaggerResponse(statusCode: 200, type: typeof(List<TypeFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 200, type: typeof(List<TypeFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
public virtual IActionResult GetTypesFormation ( )
public virtual async Task < IActionResult > GetTypesFormation ( )
{
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
logger . LogInformation ( "Récupération de la liste des types de formation." ) ;
IEnumerable < TypeFormationDTO > typeFormations = formationService . GetTypesFormation ( ) ;
IEnumerable < TypeFormationDTO > typeFormations = null ;
try
{
typeFormations = await formationService . GetTypesFormationAsync ( ) ;
}
catch ( ArgumentNullException )
{
logger . LogError ( "Un des arguments passés dans la requête pour récupérer la liste des types de formation est invalide." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la récupération de la liste des types de formation." ) ;
}
if ( typeFormations = = null )
if ( typeFormations = = null )
{
{
ErreurDTO erreur = new ErreurDTO ( )
ErreurDTO erreur = new ErreurDTO ( )
@ -389,9 +593,12 @@ namespace IO.Swagger.Controllers
Code = "404" ,
Code = "404" ,
Message = "Aucun type de formation"
Message = "Aucun type de formation"
} ;
} ;
return NotFound ( erreur ) ;
return NotFound ( erreur ) ;
}
}
logger . LogInformation ( "Liste des types de formation récupérée." ) ;
return Ok ( typeFormations ) ;
return Ok ( typeFormations ) ;
}
}
@ -410,29 +617,64 @@ namespace IO.Swagger.Controllers
[ValidateModelState]
[ValidateModelState]
[SwaggerOperation("UpdateFormation")]
[SwaggerOperation("UpdateFormation")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
public virtual IActionResult UpdateFormation ( [ FromBody ] FormationDTO body , [ FromRoute ] [ Required ] long? idFormation )
public virtual async Task < IActionResult > UpdateFormation ( [ FromBody ] FormationDTO body , [ FromRoute ] [ Required ] long? idFormation )
{
{
FormationDTO formation = formationService . UpdateFormation ( body ) ;
logger . LogInformation ( "Mise à jour de la formation d'id {idFormation}." , idFormation ) ;
FormationDTO formation = null ;
try
{
formation = await formationService . UpdateFormationAsync ( idFormation , body ) ;
}
catch ( FormationInvalidException )
{
logger . LogWarning ( "Des données sont manquants, la formation {idFormation} ne peut pas être mise à jour." , idFormation ) ;
}
catch ( FormationIncompatibleIdException )
{
logger . LogError ( "L'id de la formation à mettre à jour {body.Id} et l'id de la formation avec les nouvelles informations {idFormation} sont différents." , body . Id , idFormation ) ;
}
catch ( DbUpdateConcurrencyException )
{
logger . LogError ( "La formation {idFormation} n'a pas pu être mise à jour car elle est prise par une autre ressource." , idFormation ) ;
}
catch ( DbUpdateException )
{
logger . LogError ( "Une erreur est survenue dans la base de données lors de la mise à jour de la formation {idFormation}." , idFormation ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de la mise à jour de la formation {idFormation}." , idFormation ) ;
}
if ( formation = = null )
if ( formation = = null )
{
{
formation = formationService . AddFormation ( body ) ;
try
{
formation = await formationService . AddFormationAsync ( body ) ;
}
catch ( FormationInvalidException )
{
logger . LogWarning ( "Des données sont manquants, la nouvelle formation ne peut pas être ajoutée." ) ;
}
catch ( DbUpdateException )
{
logger . LogError ( "Une erreur est survenue dans la base de données durant l'ajout de la nouvelle formation." ) ;
}
catch ( Exception )
{
logger . LogError ( "Une erreur inconnue est survenue lors de l'ajout de la formation note." ) ;
}
logger . LogInformation ( "Nouvelle formation ajoutée." ) ;
return Created ( "" , formation ) ;
return Created ( "" , formation ) ;
}
}
return Ok ( formation ) ;
logger . LogInformation ( "Update effectué avec succès" ) ;
//switch (formationService.UpdateFormation(body))
return Ok ( formation ) ;
//{
// case 0:
// return Ok();
// case 1:
// return StatusCode(201);
// case 2:
// return Forbid();
// default:
// return NotFound();
//}
}
}
}
}
}
}