diff --git a/EPAServeur/IServices/INoteService.cs b/EPAServeur/IServices/INoteService.cs index 864a9c5..668af87 100644 --- a/EPAServeur/IServices/INoteService.cs +++ b/EPAServeur/IServices/INoteService.cs @@ -10,26 +10,11 @@ namespace EPAServeur.IServices { public interface INoteService { - /* - 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); - public IEnumerable GetNotesByCollaborateur(Guid? idAuteur, Guid? idCollaborateur, bool? asc, int? numPage, int? parPAge, string texte, string tri); - 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); - void SupprimerNote(long? idNote); void SupprimerNoteAsync(long? idNote); - DetailsNoteDTO GetNoteById(long? idNote); Task GetNoteByIdAsync(long? idNote); - IEnumerable GetNotesByAuteur(Guid? idAuteur, bool? asc, int? numPage, int? parPAge, string texte, string tri); Task> GetNotesByAuteurAsync(Guid? idAuteur, bool? asc, int? numPage, int? parPAge, string texte, string tri); - int GetNotesByAuteurCount(Guid? idAuteur, string texte); Task GetNotesByAuteurCountAsync(Guid? idAuteur, string texte); - DetailsNoteDTO UpdateNote(long? idNote, DetailsNoteDTO note); Task UpdateNoteAsync(long? idNote, DetailsNoteDTO note); diff --git a/EPAServeur/Services/NoteService.cs b/EPAServeur/Services/NoteService.cs index 40b0bbb..40130e9 100644 --- a/EPAServeur/Services/NoteService.cs +++ b/EPAServeur/Services/NoteService.cs @@ -42,166 +42,7 @@ namespace EPAServeur.Services } #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) - { - //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(); - nouvelleNote.Id = note.IdNote; - return nouvelleNote; - } - - // - /// Supprimer une note en fonction de son Id de manière async - /// - /// Id de la note à supprimer - public void SupprimerNote(long? idNote) - { - Note note = context.Note.Find(idNote); - if (note != null) - { - context.Remove(note); - context.SaveChanges(); - } - } - - /// - /// 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); - - //vérifier l'existance de la note - if (note == null) - throw new NoteNotFoundException(); - //vérifier l'existence de l'auteur - Collaborateur auteur = collaborateurApi.ChercherCollabId(note.IdAuteur); - if (auteur == null) - throw new ReferentNotFoundException("L'auteur de la note n'existe pas"); - - return NoteToDetailSDTO(note); - } - - - /// - /// 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) - { - Collaborateur auteur = collaborateurApi.ChercherCollabId(idAuteur); - if (auteur == null) - throw new ReferentNotFoundException("L'auteur de la note n'existe pas"); - - 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)); - */ - IEnumerable notes = (from n in context.Note - where n.IdAuteur == idAuteur - select n); - IEnumerable AffichageNoteDTO = (from n in notes - select NoteToAffichageDTO(n)); - - if (texte != null) - { - texte = texte.ToLower(); - AffichageNoteDTO = (from a in AffichageNoteDTO - where a.Collaborateur.ToLower().Contains(texte) || a.Titre.ToLower().Contains(texte) - select a); - } - return AffichageNoteDTO.Skip(skip).Take(take); - } - - /// - /// Récupérer le nombre de notes qu'un auteur a écrit - /// - /// Id de l'auteur des notes à récupérer - /// permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte - /// Le nombre de notes - public int GetNotesByAuteurCount(Guid? idAuteur, string texte) - { - Collaborateur auteur = collaborateurApi.ChercherCollabId(idAuteur); - if (auteur == null) - throw new ReferentNotFoundException("L'auteur de la note n'existe pas"); - - IEnumerable notes = (from n in context.Note - where n.IdAuteur == idAuteur - select n); - IEnumerable AffichageNoteDTO = (from n in notes - select NoteToAffichageDTO(n)); - - if (texte != null) - { - texte = texte.ToLower(); - AffichageNoteDTO = (from a in AffichageNoteDTO - where a.Collaborateur.ToLower().Contains(texte) || a.Titre.ToLower().Contains(texte) - select a); - } - - return AffichageNoteDTO.Count(); - } - - - /// - /// Mettre à jour une note de manière async - /// - /// Id de la note à modifier - /// Note avec les informations à jour - /// La note mise à jour - public DetailsNoteDTO UpdateNote(long? idNote, DetailsNoteDTO note) - { - if (idNote != note.Id) - throw new NoteIdImcompatibleException("L'id de la note a mettre à jour et la note a mettre à jour sont incompatble"); - CheckNoteValide(note); - Note noteToUpdate = context.Note.Find(idNote); - if (!noteToUpdate.DateCreation.Equals(note.DateCreation) || note.Collaborateur.Id != noteToUpdate.IdCollaborateur || note.IdAuteur != noteToUpdate.IdAuteur) - throw new NoteIdImcompatibleException("La note a mettre à jour et la note en base de données ne correspondent pas"); - noteToUpdate.Titre = note.Titre; - noteToUpdate.Texte = note.Texte; - noteToUpdate.DateMiseAJour = DateTime.Now; - note.DateMiseAjour = DateTime.Now; - context.SaveChanges(); - return NoteToDetailSDTO(noteToUpdate); - } - - #endregion - + #region Services Async /// /// Ajouter une nouvelle note dans la base de données de manière async @@ -258,7 +99,7 @@ namespace EPAServeur.Services //vérifier l'existance de la note if (note == null) - throw new NoteNotFoundException(); + throw new NoteNotFoundException("La note cherchée n'a pas été trouvée"); //vérifier l'existence de l'auteur Collaborateur auteur = await collaborateurApi.ChercherCollabIdAsync(note.IdAuteur); if (auteur == null) @@ -350,7 +191,7 @@ namespace EPAServeur.Services noteToUpdate.DateMiseAJour = DateTime.Now; note.DateMiseAjour = DateTime.Now; await context.SaveChangesAsync(); - return NoteToDetailSDTO(noteToUpdate); + return await NoteToDetailSDTOAsync(noteToUpdate); } #endregion @@ -408,30 +249,7 @@ namespace EPAServeur.Services #endregion #region ObjectToDTO - /// - /// Transformer un objet note en objet pour afficher un note dans dans un tableau - /// - /// Note à transformer - /// Service collaborateur pour récupérer les informations des collaborateurs - /// La note transformée pour être affichée - private AffichageNoteDTO NoteToAffichageDTO(Note note) - { - /* - string infoCollab = "Aucun collaborateur lié"; - Collaborateur collaborateur = collaborateurApi.ChercherCollabId((Guid?)note.IdCollaborateur); - if (collaborateur != null) - infoCollab = collaborateur.Prenom + collaborateur.Nom; - */ - AffichageNoteDTO affichage = new AffichageNoteDTO() - { - Id = note.IdNote, - IdCollaborateur = note.IdCollaborateur, - Collaborateur = "ui", - Titre = note.Titre, - DateMiseAJour = note.DateMiseAJour - }; - return affichage; - } + /// /// Transformer un objet note en objet pour afficher un note dans dans un tableau @@ -456,29 +274,7 @@ namespace EPAServeur.Services return affichage; } - /// - /// Transformatino d'une note en DetailsNoteDTO - /// - /// Note à transformer - /// Note transformer en DetailsNoteDTO - private DetailsNoteDTO NoteToDetailSDTO(Note note) - { - /*CollaborateurDTO collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur); - if (collaborateur == null) - throw new CollaborateurNotFoundException("Il est impossible de récupérer une note dont le collaborateur n'existe plus"); - */ - DetailsNoteDTO details = new DetailsNoteDTO() - { - Id = note.IdNote, - DateCreation = note.DateCreation, - DateMiseAjour = note.DateMiseAJour, - Titre = note.Titre, - Texte = note.Texte, - IdAuteur = note.IdAuteur, - Collaborateur = new CollaborateurDTO(), - }; - return details; - } + /// /// Transformatino d'une note en DetailsNoteDTO de manière asynchrone