/* * 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 EPAServeur.IServices; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; using System.Threading.Tasks; using EPAServeur.Exceptions; using Microsoft.AspNetCore.Http; using Microsoft.EntityFrameworkCore; namespace IO.Swagger.Controllers { /// /// /// [ApiController] public class ParticipationsFormationsApiController : ControllerBase { private readonly IParticipationFormationService participationFormationService; private readonly ILogger logger; private readonly IWebHostEnvironment env; public ParticipationsFormationsApiController(IParticipationFormationService _participationFormationService, ILogger _logger, IWebHostEnvironment _env) { participationFormationService = _participationFormationService; logger = _logger; env = _env; } /// /// /// /// Evaluer une formation. /// /// Id d'une participation formation /// Evaluation envoyée avec succès /// L'utilisateur souhaitant accéder à la ressource n'est pas authentifié /// L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants /// La ressource n'a pas été trouvée /// L’opération ne peut pas être effectuée car certaines données sont manquantes /// Une erreur est survenue sur le serveur [HttpPut] [Route("/api/participationsformation/{idParticipationFormation}/evaluation")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("EvaluerFormation")] [SwaggerResponse(statusCode: 200, type: typeof(EvaluationDTO), description: "Evaluation envoyé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: 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 EvaluerFormation([FromBody]EvaluationDTO body, [FromRoute][Required]long idParticipationFormation) { if (env.IsDevelopment()) logger.LogInformation("Mise à jour de la participation à la formation d'id {idParticipationFormation}.", idParticipationFormation); try { body = await participationFormationService.EvaluerFormationAsync(idParticipationFormation, body); } catch (ParticipationFormationIncompatibleIdException 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 (ParticipationFormationInvalidException 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 (ParticipationFormationNotFoundException 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 participation à la formation {0} n'a pas pu être mise à jour car elle est prise par une autre ressource.", idParticipationFormation) }; 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 mise à jour de la participation à 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); } /// /// /// /// Récupérer une évaluation faite par un collaborateur. /// Id d'une participation formation /// OK /// L'utilisateur souhaitant accéder à la ressource n'est pas authentifié /// L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants /// La ressource n'a pas été trouvée /// Une erreur est survenue sur le serveur [HttpGet] [Route("/api/participationsformation/{idParticipationFormation}/evaluation")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetEvaluationCollaborateur")] [SwaggerResponse(statusCode: 200, type: typeof(EvaluationDTO), 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 GetEvaluationCollaborateur([FromRoute][Required]long idParticipationFormation) { if (env.IsDevelopment()) logger.LogInformation("Récupération de la participation à la formation {idParticipationFormation}.", idParticipationFormation); EvaluationDTO evaluationDTO; try { evaluationDTO = await participationFormationService.GetEvaluationCollaborateurAsync(idParticipationFormation); } catch (ParticipationFormationNotFoundException 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("Participation à la formation {idParticipationFormation} récupérée.", idParticipationFormation); return Ok(evaluationDTO); } /// /// /// /// Récupérer la liste des participations de formation d’un collaborateur. /// Id du collaborateur /// OK /// L'utilisateur souhaitant accéder à la ressource n'est pas authentifié /// L’utilisateur souhaitant accéder à la ressource n’a pas les droits d’accès suffisants /// La ressource n'a pas été trouvée /// Une erreur est survenue sur le serveur [HttpGet] [Route("/api/participationsformation/{idCollaborateur}")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetParticipationByCollaborateur")] [SwaggerResponse(statusCode: 200, type: typeof(List), 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 GetParticipationsByCollaborateur([FromRoute][Required]Guid idCollaborateur) { if (env.IsDevelopment()) logger.LogInformation("Récupération de la liste des particicaptions aux formations d'un collaborateur."); IEnumerable participationFormationDTOs; try { participationFormationDTOs = await participationFormationService.GetParticipationsByCollaborateurAsync(idCollaborateur); } 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 particicaptions aux formations d'un collaborateur récupérée."); return Ok(participationFormationDTOs); } } }