/* * 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 IO.Swagger.ClientCollaborateur; using EPAServeur.Exceptions; using Microsoft.EntityFrameworkCore; using System.Threading.Tasks; namespace IO.Swagger.Controllers { /// /// /// [ApiController] public class NotesApiController : ControllerBase { /// /// Service des note /// private readonly INoteService noteService; /// /// Logger du contrôleur /// private readonly ILogger logger; public NotesApiController(INoteService _noteService, ILogger _logger) { noteService = _noteService; logger = _logger; } /// /// /// /// Créer une nouvelle note. /// /// Note créé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 /// L’opération ne peut pas être effectuée car certaines données sont manquantes /// Une erreur est survenue sur le serveur [HttpPost] [Route("/api/notes/")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] //[ValidateModelState] [SwaggerOperation("AddNote")] [SwaggerResponse(statusCode: 201, type: typeof(DetailsNoteDTO), description: "Note 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 AddNote([FromBody]DetailsNoteDTO body) { try { body = await noteService.AjouterNoteAsync(body); } catch(ApiException e) { logger.LogError(e.Message); ErreurDTO erreur = new ErreurDTO() { Code = 500, Message = "Une erreur est survenue lors de la récupération des données collaborateurs", }; return StatusCode(erreur.Code.Value, erreur); } catch(NoteInvalideException e) { ErreurDTO erreur = new ErreurDTO() { Code = 415, Message = e.Message, }; return StatusCode(erreur.Code.Value, erreur.Message); } catch(ReferentNotFoundException e) { ErreurDTO erreur = new ErreurDTO() { Code = 404, Message = e.Message, }; return NotFound(erreur); } catch(CollaborateurNotFoundException e) { ErreurDTO erreur = new ErreurDTO() { Code = 404, Message = e.Message, }; return NotFound(erreur); } catch(CollaborateurPartiException e) { ErreurDTO erreur = new ErreurDTO() { Code = 415, Message = e.Message, }; return StatusCode(erreur.Code.Value,erreur); } catch(DbUpdateException e) { logger.LogError(e.Message); ErreurDTO erreur = new ErreurDTO { Code = 500, Message = "Une erreur est survenue sur le serveur", }; return StatusCode(erreur.Code.Value, erreur); } catch(Exception e) { logger.LogError(e.Message); ErreurDTO erreur = new ErreurDTO { Code = 500, Message = "Une erreur inconnue est survenue sur le serveur", }; return StatusCode(erreur.Code.Value, erreur); } return Created("",body); //TODO: Uncomment the next line to return response 201 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(201, default(DetailsNoteDTO)); //TODO: Uncomment the next line to return response 401 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(401, default(ErreurDTO)); //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); //TODO: Uncomment the next line to return response 415 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(415, default(ErreurDTO)); //TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(500, default(ErreurDTO)); } /// /// /// /// Supprimer une note. /// Id d'une note /// Note supprimé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 /// Une erreur est survenue sur le serveur [HttpDelete] [Route("/api/notes/{idNote}")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("DeleteNote")] [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 IActionResult DeleteNote([FromRoute][Required]long? idNote) { try { noteService.SupprimerNoteAsync(idNote); } catch(DbUpdateException e) { logger.LogError(e.Message); ErreurDTO erreur = new ErreurDTO() { Code = 500, Message = "Une erreur est survenue lors de la suppression" }; return StatusCode(erreur.Code.Value, erreur); } catch (Exception e) { logger.LogError(e.Message); ErreurDTO erreur = new ErreurDTO() { Code = 500, Message = "Une erreur inconnue est survenue" }; return StatusCode(erreur.Code.Value, erreur); } return NoContent(); //TODO: Uncomment the next line to return response 204 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(204); //TODO: Uncomment the next line to return response 401 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(401, default(ErreurDTO)); //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404, default(ErreurDTO)); //TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(500, default(ErreurDTO)); } /// /// /// /// Récupérer une note par son id. /// Id d'une note /// 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/notes/{idNote}")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetNoteById")] [SwaggerResponse(statusCode: 200, type: typeof(DetailsNoteDTO), 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 GetNoteById([FromRoute][Required]long? idNote) { DetailsNoteDTO note; try { note = await noteService.GetNoteByIdAsync(idNote); } catch(ReferentNotFoundException e) { ErreurDTO erreur = new ErreurDTO() { Code = 404, Message = e.Message, }; return NotFound(erreur); } catch (CollaborateurNotFoundException e) { ErreurDTO erreur = new ErreurDTO() { Code = 404, Message = e.Message, }; return NotFound(erreur); } catch (NoteNotFoundException e) { ErreurDTO erreur = new ErreurDTO() { Code = 404, Message = e.Message, }; return NotFound(erreur); } catch(Exception e) { logger.LogError(e.Message); ErreurDTO erreur = new ErreurDTO() { Code = 500, Message = "Une erreur inconnue est survenue", }; return StatusCode(500, erreur); } return Ok(note); //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(DetailsNoteDTO)); //TODO: Uncomment the next line to return response 401 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(401, default(ErreurDTO)); //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404, default(ErreurDTO)); //TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(500, default(ErreurDTO)); } /// /// /// /// Récupérer les notes d’un auteur. /// Id de l'auteur /// Indique si les données sont récupérées dans l'ordre croissant ou non /// Numéro de la page du tableau à afficher /// Nombre d’élément maximum à afficher dans le tableau /// Texte permettant de filtrer les données /// Colonne du tableau sur lequel le tri devra être effectué /// 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/notes/auteur/{idAuteur}")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetNotesAuteur")] [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 GetNotesAuteur([FromRoute][Required]Guid? idAuteur, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri) { IEnumerable affichageNotes; try { affichageNotes = await noteService.GetNotesByAuteurAsync(idAuteur, asc, numPage, parPAge, texte, tri); //affichageNotes = noteService.GetNotesByAuteur(idAuteur, asc, numPage, parPAge, texte, tri); } catch(ReferentNotFoundException e) { ErreurDTO erreurDTO = new ErreurDTO() { Code = 404, Message = e.Message, }; return NotFound(erreurDTO); } catch(ApiException e) { logger.LogError(e.Message); ErreurDTO erreur = new ErreurDTO() { Code = 500, Message = "Une erreur est survenue lors de la récupération des informations collaborateurs", }; return StatusCode(erreur.Code.Value, erreur); } catch(Exception e) { logger.LogError(e.Message); ErreurDTO erreur = new ErreurDTO() { Code = 500, //Message = "Une erreur inconnue est survenue", Message = e.StackTrace, }; return StatusCode(500, erreur); } return Ok(affichageNotes); //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(List)); //TODO: Uncomment the next line to return response 401 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(401, default(ErreurDTO)); //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404, default(ErreurDTO)); //TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(500, default(ErreurDTO)); } /// /// /// /// Récupérer le nombre total de notes d’un auteur. /// Id de l'auteur /// Indique si les données sont récupérées dans l'ordre croissant ou non /// Numéro de la page du tableau à afficher /// Nombre d’élément maximum à afficher dans le tableau /// Texte permettant de filtrer les données /// Colonne du tableau sur lequel le tri devra être effectué /// 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/notes/auteur/{idAuteur}/count")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetNotesAuteurCount")] [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: 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 GetNotesAuteurCount([FromRoute][Required]Guid? idAuteur, [FromQuery]bool? asc, [FromQuery]int? numPage, [FromQuery][Range(5, 100)]int? parPAge, [FromQuery]string texte, [FromQuery]string tri) { int notes; try { notes = await noteService.GetNotesByAuteurCountAsync(idAuteur, texte); } catch(ApiException e) { logger.LogError(e.Message); ErreurDTO erreurDTO = new ErreurDTO() { Code = 500, Message = "Une erreur est survenue lors de la récupération des informations collaborateurs", }; return StatusCode(500, erreurDTO); } catch(ReferentNotFoundException e) { ErreurDTO erreurDTO = new ErreurDTO() { Code = 404, Message = e.Message, }; return NotFound(erreurDTO); } catch(Exception e) { logger.LogError(e.Message); ErreurDTO erreurDTO = new ErreurDTO() { Code = 500, Message = "Une erreur inconnue es survenue sur le serveur", }; return StatusCode(500, erreurDTO); } return Ok(notes); //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(long?)); //TODO: Uncomment the next line to return response 401 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(401, default(ErreurDTO)); //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404, default(ErreurDTO)); //TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(500, default(ErreurDTO)); } /// /// /// /// Modifier une note. /// /// Id d'une note /// Note modifié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/notes/{idNote}")] [Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("UpdateNote")] [SwaggerResponse(statusCode: 200, type: typeof(DetailsNoteDTO), description: "Note modifié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 IActionResult UpdateNote([FromBody]DetailsNoteDTO body, [FromRoute][Required]long? idNote) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(DetailsNoteDTO)); //TODO: Uncomment the next line to return response 401 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(401, default(ErreurDTO)); //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(404, default(ErreurDTO)); //TODO: Uncomment the next line to return response 415 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(415, default(ErreurDTO)); //TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(500, default(ErreurDTO)); string exampleJson = null; exampleJson = "{\n \"idAuteur\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"dateCreation\" : \"2000-01-23T04:56:07.000+00:00\",\n \"dateMiseAjour\" : \"2000-01-23T04:56:07.000+00:00\",\n \"titre\" : \"titre\",\n \"texte\" : \"texte\",\n \"id\" : 0,\n \"collaborateur\" : {\n \"businessUnit\" : {\n \"agence\" : {\n \"bu\" : [ null, null ],\n \"id\" : 6,\n \"nom\" : \"nom\"\n },\n \"id\" : 0,\n \"nom\" : \"nom\"\n },\n \"mailApside\" : \"\",\n \"dateArrivee\" : \"2000-01-23T04:56:07.000+00:00\",\n \"id\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"dateDepart\" : \"2000-01-23T04:56:07.000+00:00\",\n \"nom\" : \"nom\",\n \"prenom\" : \"prenom\"\n }\n}"; var example = exampleJson != null ? JsonConvert.DeserializeObject(exampleJson) : default(DetailsNoteDTO); //TODO: Change the data returned return new ObjectResult(example); } } }