/ *
* API du serveur de l ' application de digitalisation des EP
*
* API qui sra utilisée afin de faire communiquer le client et le serveur ainsi que le serveur et la boîte noire .
*
* OpenAPI spec version : 1.3 . 6
*
* Generated by : https : //github.com/swagger-api/swagger-codegen.git
* /
using System ;
using System.Collections.Generic ;
using Microsoft.AspNetCore.Mvc ;
using Swashbuckle.AspNetCore.Annotations ;
using Swashbuckle.AspNetCore.SwaggerGen ;
using Newtonsoft.Json ;
using System.ComponentModel.DataAnnotations ;
using IO.Swagger.Attributes ;
using IO.Swagger.Security ;
using Microsoft.AspNetCore.Authorization ;
using IO.Swagger.DTO ;
using System.ComponentModel ;
using EPAServeur.IServices ;
using Microsoft.Extensions.Logging ;
using System.Threading.Tasks ;
using EPAServeur.Exceptions ;
using Microsoft.EntityFrameworkCore ;
using Microsoft.AspNetCore.Hosting ;
using Microsoft.Extensions.Hosting ;
using Microsoft.AspNetCore.Http ;
using Microsoft.AspNetCore.Authentication.JwtBearer ;
namespace IO.Swagger.Controllers
{
/// <summary>
///
/// </summary>
[ApiController]
public class FormationsApiController : ControllerBase
{
private readonly IFormationService formationService ;
private readonly ILogger < FormationsApiController > logger ;
private readonly IWebHostEnvironment env ;
public FormationsApiController ( IFormationService _f ormationService , ILogger < FormationsApiController > _l ogger , IWebHostEnvironment _ env )
{
formationService = _f ormationService ;
logger = _l ogger ;
env = _ env ;
}
/// <summary>
///
/// </summary>
/// <remarks>Créer une nouvelle formation.</remarks>
/// <param name="body"></param>
/// <response code="201">Formation créée avec succès</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="415">L’opération ne peut pas être effectuée car certaines données sont manquantes</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpPost]
[Route("/api/formations")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("AddFormation")]
[SwaggerResponse(statusCode: 201, type: typeof(FormationDTO), description: "Formation créée avec succès")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 415, type: typeof(ErreurDTO), description: "L’opération ne peut pas être effectuée car certaines données sont manquantes")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > AddFormation ( [ FromBody ] FormationDTO body )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Ajout d'une nouvelle formation." ) ;
try
{
body = await formationService . AddFormationAsync ( body ) ;
}
catch ( FormationInvalidException e )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = e . Message ,
} ;
return StatusCode ( erreur . Code . Value , erreur . Message ) ;
}
catch ( DbUpdateException e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur est survenue sur le serveur lors de l'ajout de la formation." ,
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur." ,
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Nouvelle formation ajoutée." ) ;
return Created ( "" , body ) ;
}
/// <summary>
///
/// </summary>
/// <remarks>Supprimer une formation par son id.</remarks>
/// <param name="idFormation">Id d'une formation</param>
/// <response code="204">Formation supprimée avec succès</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="404">La ressource n'a pas été trouvée</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpDelete]
[Route("/api/formations/{idFormation}")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("DeleteFormation")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "La ressource n'a pas été trouvée")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > DeleteFormation ( [ FromRoute ] [ Required ] long idFormation )
{
try
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Suppresion de la formation {idFormation}." , idFormation ) ;
FormationDTO formation = await formationService . DeleteFormationByIdAsync ( idFormation ) ;
}
catch ( FormationNotFoundException e )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status404NotFound ,
Message = e . Message
} ;
return NotFound ( erreur ) ;
}
catch ( DbUpdateConcurrencyException e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = string . Format ( "La formation {0} n'a pas pu être supprimée car elle est prise par une autre ressource." , idFormation )
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
catch ( DbUpdateException e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur est survenue sur le serveur lors de la suppression de la formation."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Formation {idFormation} supprimée avec succès." , idFormation ) ;
return NoContent ( ) ;
}
/// <summary>
///
/// </summary>
/// <remarks>Récupérer une formation par son id.</remarks>
/// <param name="idFormation">Id d'une formation</param>
/// <response code="200">OK</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="404">La ressource n'a pas été trouvée</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpGet]
[Route("/api/formations/{idFormation}")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("GetFormationById")]
[SwaggerResponse(statusCode: 200, type: typeof(FormationDTO), description: "OK")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "La ressource n'a pas été trouvée")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > GetFormationById ( [ FromRoute ] [ Required ] long idFormation )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Récupération de la formation {idFormation}." , idFormation ) ;
FormationDTO formationDTO ;
try
{
formationDTO = await formationService . GetFormationByIdAsync ( idFormation ) ;
}
catch ( FormationNotFoundException e )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( e . Message ) ;
ErreurDTO erreurDTO = new ErreurDTO ( )
{
Code = StatusCodes . Status404NotFound ,
Message = e . Message
} ;
return NotFound ( erreurDTO ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Formation {idFormation} récupérée." , idFormation ) ;
return Ok ( formationDTO ) ;
}
/// <summary>
///
/// </summary>
/// <remarks>Récupérer la liste des formations.</remarks>
/// <param name="idAgence">id de l'agence à laquelle sont rattachées les données à récupérer</param>
/// <param name="idStatuts">liste des ids des statuts des formations à récupérer</param>
/// <param name="asc">Indique si les données sont récupérées dans l'ordre croissant ou non</param>
/// <param name="numPage">Numéro de la page du tableau à afficher</param>
/// <param name="parPAge">Nombre d’élément maximum à afficher dans le tableau</param>
/// <param name="texte">Texte permettant de filtrer les données</param>
/// <param name="tri">Colonne du tableau sur lequel le tri devra être effectué</param>
/// <param name="dateDebut">Date à partir de laquelle les données son récupérées</param>
/// <param name="dateFin">Date jusqu'à laquelle les données sont récupérées</param>
/// <response code="200">OK</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpGet]
[Route("/api/formations")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("GetFormations")]
[SwaggerResponse(statusCode: 200, type: typeof(List<FormationDetailsDTO>), description: "OK")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > GetFormations ( [ FromQuery ] long? idAgence , [ FromQuery ] List < int? > idStatuts , [ FromQuery ] bool? asc , [ FromQuery ] int? numPage , [ FromQuery ] [ Range ( 5 , 1 0 0 ) ] [ DefaultValue ( 1 5 ) ] int? parPAge , [ FromQuery ] string texte , [ FromQuery ] string tri , [ FromQuery ] DateTime ? dateDebut , [ FromQuery ] DateTime ? dateFin )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Récupération de la liste des formations." ) ;
IEnumerable < FormationDetailsDTO > formations ;
try
{
formations = await formationService . GetFormationsAsync ( idAgence , idStatuts , asc , numPage , parPAge , texte , tri , dateDebut , dateFin ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Liste des formations récupérée." ) ;
return Ok ( formations ) ;
}
/// <summary>
///
/// </summary>
/// <remarks>Récupérer le nombre total de formations.</remarks>
/// <param name="idAgence">id de l'agence à laquelle sont rattachées les données à récupérer</param>
/// <param name="idStatuts">liste des ids des statuts des formations à récupérer</param>
/// <param name="texte">Texte permettant de filtrer les données</param>
/// <param name="dateDebut">Date à partir de laquelle les données son récupérées</param>
/// <param name="dateFin">Date jusqu'à laquelle les données sont récupérées</param>
/// <response code="200">OK</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpGet]
[Route("/api/formations/count")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("GetFormationsCount")]
[SwaggerResponse(statusCode: 200, type: typeof(long?), description: "OK")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > GetFormationsCount ( [ FromQuery ] long? idAgence , [ FromQuery ] List < int? > idStatuts , [ FromQuery ] string texte , [ FromQuery ] DateTime ? dateDebut , [ FromQuery ] DateTime ? dateFin )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Récupération du nombre total de formations." ) ;
long count ;
try
{
count = await formationService . GetFormationsCountAsync ( idAgence , idStatuts , texte , dateDebut , dateFin ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Nombre total de formations récupéré." ) ;
return Ok ( count ) ;
}
/// <summary>
///
/// </summary>
/// <remarks>Récupérer la liste des modes de formation.</remarks>
/// <response code="200">OK</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpGet]
[Route("/api/modesformation")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("GetModesFormation")]
[SwaggerResponse(statusCode: 200, type: typeof(List<ModeFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > GetModesFormation ( )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Récupération de la liste des modes de formation." ) ;
IEnumerable < ModeFormationDTO > modeFormations ;
try
{
modeFormations = await formationService . GetModesFormationAsync ( ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Liste des modes de formation récupérée." ) ;
return Ok ( modeFormations ) ;
}
/// <summary>
///
/// </summary>
/// <remarks>Récupérer la liste des origines de formation.</remarks>
/// <response code="200">OK</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpGet]
[Route("/api/originesformation")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("GetOriginesFormation")]
[SwaggerResponse(statusCode: 200, type: typeof(List<OrigineFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > GetOriginesFormation ( )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Récupération de la liste des origines de formation." ) ;
IEnumerable < OrigineFormationDTO > origineFormations ;
try
{
origineFormations = await formationService . GetOriginesFormationAsync ( ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Liste des origines de formation récupérée." ) ;
return Ok ( origineFormations ) ;
}
/// <summary>
///
/// </summary>
/// <remarks>Récupérer la liste des statuts de formation.</remarks>
/// <response code="200">OK</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpGet]
[Route("/api/statutsformation")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("GetStatutsFormation")]
[SwaggerResponse(statusCode: 200, type: typeof(List<StatutFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > GetStatutsFormation ( )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Récupération de la liste des statuts de formation." ) ;
IEnumerable < StatutFormationDTO > statutFormations ;
try
{
statutFormations = await formationService . GetStatutsFormationAsync ( ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Liste des statuts de formation récupérée." ) ;
return Ok ( statutFormations ) ;
}
/// <summary>
///
/// </summary>
/// <remarks>Récupérer la liste des types de formation.</remarks>
/// <response code="200">OK</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpGet]
[Route("/api/typesformation")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("GetTypesFormation")]
[SwaggerResponse(statusCode: 200, type: typeof(List<TypeFormationDTO>), description: "OK")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > GetTypesFormation ( )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Récupération de la liste des types de formation." ) ;
IEnumerable < TypeFormationDTO > typeFormations ;
try
{
typeFormations = await formationService . GetTypesFormationAsync ( ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Liste des types de formation récupérée." ) ;
return Ok ( typeFormations ) ;
}
/// <summary>
///
/// </summary>
/// <remarks>Mettre à jour une formation.</remarks>
/// <param name="body"></param>
/// <param name="idFormation">Id d'une formation</param>
/// <response code="200">formation mise à jour</response>
/// <response code="401">L'utilisateur souhaitant accéder à la ressource n'est pas authentifié</response>
/// <response code="403">L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants</response>
/// <response code="404">La ressource n'a pas été trouvée</response>
/// <response code="415">L’opération ne peut pas être effectuée car certaines données sont manquantes</response>
/// <response code="500">Une erreur est survenue sur le serveur</response>
[HttpPut]
[Route("/api/formations/{idFormation}")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "RH")]
[ValidateModelState]
[SwaggerOperation("UpdateFormation")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "La ressource n'a pas été trouvée")]
[SwaggerResponse(statusCode: 415, type: typeof(ErreurDTO), description: "L’opération ne peut pas être effectuée car certaines données sont manquantes")]
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual async Task < IActionResult > UpdateFormation ( [ FromBody ] FormationDTO body , [ FromRoute ] [ Required ] long idFormation )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Mise à jour de la formation d'id {idFormation}." , idFormation ) ;
try
{
body = await formationService . UpdateFormationAsync ( idFormation , body ) ;
}
catch ( FormationIncompatibleIdException e )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status415UnsupportedMediaType ,
Message = e . Message ,
} ;
return StatusCode ( erreur . Code . Value , erreur . Message ) ;
}
catch ( FormationInvalidException e )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status415UnsupportedMediaType ,
Message = e . Message ,
} ;
return StatusCode ( erreur . Code . Value , erreur . Message ) ;
}
catch ( FormationNotFoundException e )
{
if ( env . IsDevelopment ( ) )
logger . LogInformation ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status404NotFound ,
Message = e . Message
} ;
return NotFound ( erreur ) ;
}
catch ( DbUpdateConcurrencyException e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = string . Format ( "La formation {0} n'a pas pu être supprimée car elle est prise par une autre ressource." , idFormation )
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
catch ( DbUpdateException e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur est survenue sur le serveur lors de la suppression de la formation."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
catch ( Exception e )
{
logger . LogError ( e . Message ) ;
ErreurDTO erreur = new ErreurDTO ( )
{
Code = StatusCodes . Status500InternalServerError ,
Message = "Une erreur inconnue est survenue sur le serveur."
} ;
return StatusCode ( erreur . Code . Value , erreur ) ;
}
if ( env . IsDevelopment ( ) )
logger . LogInformation ( "Update effectué avec succès" ) ;
return Ok ( body ) ;
}
}
}