From 39519bfc348cb2432c0b00b71c6678b9c14c0327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Wed, 16 Dec 2020 14:42:28 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20l'ajout=20d'une=20n?= =?UTF-8?q?ote?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EPAServeur/Controllers/NotesApi.cs | 106 +++++++- EPAServeur/IServices/INoteService.cs | 8 +- EPAServeur/Services/NoteService.cs | 366 +++++++++++++++++---------- 3 files changed, 343 insertions(+), 137 deletions(-) diff --git a/EPAServeur/Controllers/NotesApi.cs b/EPAServeur/Controllers/NotesApi.cs index 9e82c2d..045c410 100644 --- a/EPAServeur/Controllers/NotesApi.cs +++ b/EPAServeur/Controllers/NotesApi.cs @@ -18,6 +18,11 @@ 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; namespace IO.Swagger.Controllers { @@ -26,7 +31,25 @@ 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; + } + + /// /// /// @@ -39,8 +62,8 @@ namespace IO.Swagger.Controllers /// Une erreur est survenue sur le serveur [HttpPost] [Route("/api/notes/")] - [Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] - [ValidateModelState] + //[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é")] @@ -49,6 +72,77 @@ namespace IO.Swagger.Controllers [SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")] public virtual IActionResult AddNote([FromBody]DetailsNoteDTO body) { + try + { + body = noteService.AjouterNote(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)); @@ -63,13 +157,7 @@ namespace IO.Swagger.Controllers //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); } /// diff --git a/EPAServeur/IServices/INoteService.cs b/EPAServeur/IServices/INoteService.cs index 6b69c12..9068a3e 100644 --- a/EPAServeur/IServices/INoteService.cs +++ b/EPAServeur/IServices/INoteService.cs @@ -10,7 +10,7 @@ namespace EPAServeur.IServices { public interface INoteService { - //bool? asc, int? numPage, int? parPAge, string texte, string tri) + /* public IEnumerable GetNotes(bool? asc, int? numPage, int? parPAge, string texte, string tri); public IEnumerable GetNotesByAuteur(Guid? idAuteur, bool? asc, int? numPage, int? parPAge, string texte, string tri); public DetailsNoteDTO GetNoteById(long? idNote); @@ -18,5 +18,11 @@ namespace EPAServeur.IServices public DetailsNoteDTO AjouterNote(DetailsNoteDTO nouvelleNote); public void SupprimerNote(long? idNote); public DetailsNoteDTO UpdateNote(long? idNote, DetailsNoteDTO note); + */ + DetailsNoteDTO AjouterNote(DetailsNoteDTO note); + Task AjouterNoteAsync(DetailsNoteDTO note); + + + } } diff --git a/EPAServeur/Services/NoteService.cs b/EPAServeur/Services/NoteService.cs index 5a01e3c..474786f 100644 --- a/EPAServeur/Services/NoteService.cs +++ b/EPAServeur/Services/NoteService.cs @@ -2,6 +2,7 @@ using EPAServeur.Exceptions; using EPAServeur.IServices; using EPAServeur.Models.Notes; +using IO.Swagger.ApiCollaborateur; using IO.Swagger.DTO; using IO.Swagger.ModelCollaborateur; using System; @@ -18,180 +19,290 @@ namespace EPAServeur.Services public class NoteService : INoteService { #region Variables + /* /// - /// API pour accéder aux données collaborateur en passant par le service collaborateur + /// Service collaborateur pour récupérer les données collaborateurs /// private readonly ICollaborateurService collaborateurService; + */ + + private readonly ICollaborateurApi collaborateurApi; + /// /// Contexte pour interagir avec la base de données MySQL du serveur EP /// private readonly EpContext context; #endregion #region Constructeurs - public NoteService(ICollaborateurService _collaborateurService, EpContext _context) + public NoteService(ICollaborateurApi _collaborateurApi, EpContext _context) { - collaborateurService = _collaborateurService; + //collaborateurService = _collaborateurService; + collaborateurApi = _collaborateurApi; context = _context; } #endregion + #region Services Sync /// /// Ajouter une nouvelle note dans la base de données /// /// La nouvelle note a ajouté en base - /// + /// La nouvelle note ajouté public DetailsNoteDTO AjouterNote(DetailsNoteDTO nouvelleNote) { - if (!IsDetailsNoteValide(nouvelleNote)) - throw new NoteInvalideException(); + //vérifier qu'il n'y a aucune valeur null + CheckNoteValide(nouvelleNote); + + //vérifier que le référent existe + Collaborateur auteur = collaborateurApi.ChercherCollabId(nouvelleNote.IdAuteur); + CheckReferent(auteur); + + //vérifier que le collaborateur existe + Collaborateur collaborateur = collaborateurApi.ChercherCollabId(nouvelleNote.Collaborateur.Id); + CheckCollaborateur(collaborateur); + + //transformer la note DTO en Note Note note = DetailsNoteDTOToNouvelleNote(nouvelleNote); + + //ajouter la note et sauvegarder context.Note.Add(note); context.SaveChanges(); - return NoteToDetailSDTO(note); + nouvelleNote.Id = note.IdNote; + return nouvelleNote; } - #region Services - /// - /// Récupérer la liste des notes qu'un auteur a écrit sur un collaborateur - /// - /// Id de l'auteur des notes à récupérer - /// Id du collaborateur pour lesquelles les notes ont été écrites - /// Précise si la liste est trié dans l'ordre croissant ou décroissant - /// Numéro de la page qui est affiché du côté front - /// Nombre de notes à renvoyer - /// permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte - /// Choisir l'attribut par lequel est trié la liste - /// Retour la liste des notes à afficher - public IEnumerable GetNotesByCollaborateur(Guid? idAuteur, Guid? idCollaborateur, bool? asc, int? numPage, int? parPage, string texte, string tri) - { - //Stopwatch stopwatch = new Stopwatch(); - //stopwatch.Start(); - if (collaborateurService.GetCollaborateurById(idAuteur) == null) - throw new ReferentNotFoundException(); - //stopwatch.Stop(); - //Console.WriteLine("Durée d'exécution GetProfil 1: {0}", stopwatch.Elapsed.TotalSeconds); - //stopwatch.Restart(); - if (collaborateurService.GetCollaborateurById(idAuteur) == null || collaborateurService.GetCollaborateurById(idCollaborateur) == null) - throw new CollaborateurNotFoundException(); - //stopwatch.Stop(); - //Console.WriteLine("Durée d'exécution GetProfil 2: {0}", stopwatch.Elapsed.TotalSeconds); - if (texte == null) - texte = ""; - else - texte = texte.ToLower(); - int skip = (numPage.Value - 1) * parPage.Value; - int take = parPage.Value; - IEnumerable AffichageNoteDTO = (from n in context.Note - where n.IdAuteur == idAuteur && n.IdCollaborateur == idCollaborateur - select NoteToAffichageDTO(n, collaborateurService)); - AffichageNoteDTO = (from a in AffichageNoteDTO - where a.Titre.ToLower().Contains(texte) - select a).Skip(skip).Take(take); - return AffichageNoteDTO; - } + #endregion + #region Services Async /// - /// Récupérer une note en fonction de son id + /// Ajouter une nouvelle note dans la base de données de manière async /// - /// Id de la note à récupérer - /// L'objet DTO de la note correspondant à l'id passé en paramètre - public DetailsNoteDTO GetNoteById(long? idNote) + /// La nouvelle note a ajouté en base + /// La nouvelle note ajouté + public async Task AjouterNoteAsync(DetailsNoteDTO nouvelleNote) { - Note note = context.Note.Find(idNote); - if (note == null) - throw new NoteNotFoundException(); - return NoteToDetailSDTO(note); - } + //vérifier qu'il n'y a aucune valeur null + CheckNoteValide(nouvelleNote); + + //vérifier que le référent existe + Collaborateur auteur = await collaborateurApi.ChercherCollabIdAsync((Guid?)nouvelleNote.IdAuteur); + CheckReferent(auteur); + + //vérifier que le collaborateur existe + Collaborateur collaborateur = await collaborateurApi.ChercherCollabIdAsync(nouvelleNote.Collaborateur.Id); + CheckCollaborateur(collaborateur); - public IEnumerable GetNotes(bool? asc, int? numPage, int? parPage, string texte, string tri) - { - throw new NotImplementedException(); - } + //transformer la note DTO en Note + Note note = DetailsNoteDTOToNouvelleNote(nouvelleNote); - /// - /// Récupérer la liste des notes qu'un auteur a écrit sur un collaborateur - /// - /// Id de l'auteur des notes à récupérer - /// Précise si la liste est trié dans l'ordre croissant ou décroissant - /// Numéro de la page qui est affiché du côté front - /// Nombre de notes à renvoyer - /// permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte - /// Choisir l'attribut par lequel est trié la liste - /// Retour la liste des notes à afficher - public IEnumerable GetNotesByAuteur(Guid? idAuteur, bool? asc, int? numPage, int? parPage, string texte, string tri) - { - if (collaborateurService.GetCollaborateurById(idAuteur) == null) - throw new CollaborateurNotFoundException(); - if (texte == null) - texte = ""; - else - texte = texte.ToLower(); - int skip = (numPage.Value - 1) * parPage.Value; - int take = parPage.Value; - //Stopwatch stopwatch = new Stopwatch(); - //stopwatch.Start(); - IEnumerable AffichageNoteDTO = (from n in context.Note - where n.IdAuteur == idAuteur - select NoteToAffichageDTO(n, collaborateurService)); - //stopwatch.Stop(); - //Console.WriteLine("Durée d'exécution numéro 1: {0}", stopwatch.Elapsed.TotalSeconds); - //stopwatch.Restart(); - AffichageNoteDTO = (from a in AffichageNoteDTO - where a.Collaborateur.ToLower().Contains(texte) || a.Titre.ToLower().Contains(texte) - select a).Skip(skip).Take(take); - //stopwatch.Stop(); - //Console.WriteLine("Durée d'exécution numéro 2: {0}", stopwatch.Elapsed.TotalSeconds); - return AffichageNoteDTO; + //ajouter la note et sauvegarder + await context.Note.AddAsync(note); + await context.SaveChangesAsync(); + nouvelleNote.Id = note.IdNote; + return nouvelleNote; } + #endregion + + + /* + + #region Services + /// + /// Récupérer la liste des notes qu'un auteur a écrit sur un collaborateur + /// + /// Id de l'auteur des notes à récupérer + /// Id du collaborateur pour lesquelles les notes ont été écrites + /// Précise si la liste est trié dans l'ordre croissant ou décroissant + /// Numéro de la page qui est affiché du côté front + /// Nombre de notes à renvoyer + /// permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte + /// Choisir l'attribut par lequel est trié la liste + /// Retour la liste des notes à afficher + public IEnumerable GetNotesByCollaborateur(Guid? idAuteur, Guid? idCollaborateur, bool? asc, int? numPage, int? parPage, string texte, string tri) + { + //Stopwatch stopwatch = new Stopwatch(); + //stopwatch.Start(); + if (collaborateurService.GetCollaborateurById(idAuteur) == null) + throw new ReferentNotFoundException(); + //stopwatch.Stop(); + //Console.WriteLine("Durée d'exécution GetProfil 1: {0}", stopwatch.Elapsed.TotalSeconds); + //stopwatch.Restart(); + if (collaborateurService.GetCollaborateurById(idAuteur) == null || collaborateurService.GetCollaborateurById(idCollaborateur) == null) + throw new CollaborateurNotFoundException(); + //stopwatch.Stop(); + //Console.WriteLine("Durée d'exécution GetProfil 2: {0}", stopwatch.Elapsed.TotalSeconds); + + if (texte == null) + texte = ""; + else + texte = texte.ToLower(); + int skip = (numPage.Value - 1) * parPage.Value; + int take = parPage.Value; + IEnumerable AffichageNoteDTO = (from n in context.Note + where n.IdAuteur == idAuteur && n.IdCollaborateur == idCollaborateur + select NoteToAffichageDTO(n, collaborateurService)); + AffichageNoteDTO = (from a in AffichageNoteDTO + where a.Titre.ToLower().Contains(texte) + select a).Skip(skip).Take(take); + return AffichageNoteDTO; + } + + /// + /// Récupérer une note en fonction de son id + /// + /// Id de la note à récupérer + /// L'objet DTO de la note correspondant à l'id passé en paramètre + public DetailsNoteDTO GetNoteById(long? idNote) + { + Note note = context.Note.Find(idNote); + if (note == null) + throw new NoteNotFoundException(); + return NoteToDetailSDTO(note); + } + + public IEnumerable GetNotes(bool? asc, int? numPage, int? parPage, string texte, string tri) + { + throw new NotImplementedException(); + } + + /// + /// Récupérer la liste des notes qu'un auteur a écrit sur un collaborateur + /// + /// Id de l'auteur des notes à récupérer + /// Précise si la liste est trié dans l'ordre croissant ou décroissant + /// Numéro de la page qui est affiché du côté front + /// Nombre de notes à renvoyer + /// permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte + /// Choisir l'attribut par lequel est trié la liste + /// Retour la liste des notes à afficher + public IEnumerable GetNotesByAuteur(Guid? idAuteur, bool? asc, int? numPage, int? parPage, string texte, string tri) + { + if (collaborateurService.GetCollaborateurById(idAuteur) == null) + throw new CollaborateurNotFoundException(); + if (texte == null) + texte = ""; + else + texte = texte.ToLower(); + int skip = (numPage.Value - 1) * parPage.Value; + int take = parPage.Value; + //Stopwatch stopwatch = new Stopwatch(); + //stopwatch.Start(); + IEnumerable AffichageNoteDTO = (from n in context.Note + where n.IdAuteur == idAuteur + select NoteToAffichageDTO(n, collaborateurService)); + //stopwatch.Stop(); + //Console.WriteLine("Durée d'exécution numéro 1: {0}", stopwatch.Elapsed.TotalSeconds); + //stopwatch.Restart(); + AffichageNoteDTO = (from a in AffichageNoteDTO + where a.Collaborateur.ToLower().Contains(texte) || a.Titre.ToLower().Contains(texte) + select a).Skip(skip).Take(take); + //stopwatch.Stop(); + //Console.WriteLine("Durée d'exécution numéro 2: {0}", stopwatch.Elapsed.TotalSeconds); + return AffichageNoteDTO; + } + + /// + /// Supprimer une note en fonction de son Id + /// + /// Id de la note à supprimer + /// Si oui ou non la notea bien été supprimé + public void SupprimerNote(long? idNote) + { + Note note = context.Note.Find(idNote); + if (note == null) + throw new NoteNotFoundException(); + context.Remove(note); + context.SaveChanges(); + } + + /// + /// Mettre à jour une note + /// + /// Id de la note à modifier + /// + /// + public DetailsNoteDTO UpdateNote(long? idNote, DetailsNoteDTO note) + { + if (idNote != note.Id) + throw new NoteIdImcompatibleException(); + if (!CheckNoteValide(note)) + throw new NoteInvalideException(); + Note noteToUpdate = context.Note.Find(idNote); + noteToUpdate.Titre = note.Titre; + noteToUpdate.Texte = note.Texte; + noteToUpdate.DateMiseAJour = DateTime.Now; + context.SaveChanges(); + return NoteToDetailSDTO(noteToUpdate); + } + /// + /// Vérifier si un objet DetailsNoteDTO possède est valide pour ajout ou mise à jour + /// + /// Un objet DetailsNoteDTO est valide si aucune de ses propriétés n'est à null + /// + /// true si l'objet est valide, false sinon + private bool CheckNoteValide(DetailsNoteDTO note) + { + return !(note == null || note.IdAuteur == null || note.Collaborateur == null || note.Collaborateur.Id == null || note.Titre == null || note.Texte == null) ; + } + #endregion + + */ + + #region fonctions privees /// - /// Supprimer une note en fonction de son Id + /// Vérfier si la note est valide /// - /// Id de la note à supprimer - /// Si oui ou non la notea bien été supprimé - public void SupprimerNote(long? idNote) + /// La note a vérifié + private void CheckNoteValide(DetailsNoteDTO note) { - Note note = context.Note.Find(idNote); + //vérifier que la note n'est pas null if (note == null) - throw new NoteNotFoundException(); - context.Remove(note); - context.SaveChanges(); + throw new NoteInvalideException("Aucune note n'a été reçue"); + + //vérfier que la note a bien un auteur + if (note.IdAuteur == null || !note.IdAuteur.HasValue) + throw new NoteInvalideException("Il impossible d'enregistrer sans donnée sur la personne qui l'a écrite"); + + //vérifier que la note est bien lié à un collaboarteur identifiable sur le serveur distant (avec une id) + if (note.Collaborateur == null || note.Collaborateur.Id == null || !note.Collaborateur.Id.HasValue) + throw new NoteInvalideException("Il est impossible d'enregistrer une note qui n'est pas lié à un collaborateur"); + + //vérifier que le titre de la note est valide + if (note.Titre == null || note.Titre == "" || note.Titre.Length < 3) + throw new NoteInvalideException("Vous devez saisir un titre d'au moins 3 caractères"); + + //vérifier que le texte de la note est valide + if(note.Texte == null || note.Texte == "" || note.Texte.Length < 3) + throw new NoteInvalideException("Vous devez saisir une note d'au moins 3 caractères"); } /// - /// Mettre à jour une note + /// Vérifier que l'auteur de la note existe et est toujours présent dans l'entreprise /// - /// Id de la note à modifier - /// - /// - public DetailsNoteDTO UpdateNote(long? idNote, DetailsNoteDTO note) + /// L'auteur de la note + private void CheckReferent(Collaborateur auteur) { - if (idNote != note.Id) - throw new NoteIdImcompatibleException(); - if (!IsDetailsNoteValide(note)) - throw new NoteInvalideException(); - Note noteToUpdate = context.Note.Find(idNote); - noteToUpdate.Titre = note.Titre; - noteToUpdate.Texte = note.Texte; - noteToUpdate.DateMiseAJour = DateTime.Now; - context.SaveChanges(); - return NoteToDetailSDTO(noteToUpdate); + if (auteur == null) + throw new ReferentNotFoundException("Les informations de l'auteur de la note n'ont pas été trouvé"); + if (auteur.DateDepart.HasValue) + throw new CollaborateurPartiException("Vous ne pouvez pas créer ou modifier de note si vous avez quitté l'entreprise"); } /// - /// Vérifier si un objet DetailsNoteDTO possède est valide pour ajout ou mise à jour + /// Vérifier que le collaborateur concerné par la note existe et est toujorus présent dans l'entreprise /// - /// Un objet DetailsNoteDTO est valide si aucune de ses propriétés n'est à null - /// - /// true si l'objet est valide, false sinon - private bool IsDetailsNoteValide(DetailsNoteDTO note) + /// Le collaborateur concerné + private void CheckCollaborateur(Collaborateur collaborateur) { - return !(note == null || note.IdAuteur == null || note.Collaborateur == null || note.Collaborateur.Id == null || note.Titre == null || note.Texte == null) ; + if (collaborateur == null) + throw new CollaborateurNotFoundException("Le collaborateur pour qui la note est écrite n'a pas été trouvé"); + if (collaborateur.DateDepart.HasValue) + throw new CollaborateurPartiException("Vous ne pouvez pas créer ou modifier de note si vous avez quitté l'entreprise"); } - #endregion - + #endregion #region ObjectToDTO /// /// Transformer un objet note en objet pour afficher un note dans dans un tableau @@ -199,9 +310,10 @@ namespace EPAServeur.Services /// Note à transformer /// Service collaborateur pour récupérer les informations des collaborateurs /// La note transformée pour être affichée - private static AffichageNoteDTO NoteToAffichageDTO(Note note, ICollaborateurService collaborateurService) + private AffichageNoteDTO NoteToAffichageDTO(Note note) { - CollaborateurDTO collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur); + //CollaborateurDTO collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur); + Collaborateur collaborateur = collaborateurApi.ChercherCollabId((Guid?)note.IdCollaborateur); AffichageNoteDTO affichage = new AffichageNoteDTO() { Id = note.IdNote, @@ -228,7 +340,7 @@ namespace EPAServeur.Services Titre = note.Titre, Texte = note.Texte, IdAuteur = note.IdAuteur, - Collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur) + //Collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur) }; return details; }