|
|
|
@ -42,166 +42,7 @@ namespace EPAServeur.Services |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
#region Services Sync |
|
|
|
|
/// <summary> |
|
|
|
|
/// Ajouter une nouvelle note dans la base de données |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="nouvelleNote">La nouvelle note a ajouté en base</param> |
|
|
|
|
/// <returns>La nouvelle note ajouté</returns> |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// <summary> |
|
|
|
|
/// Supprimer une note en fonction de son Id de manière async |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="idNote">Id de la note à supprimer</param> |
|
|
|
|
public void SupprimerNote(long? idNote) |
|
|
|
|
{ |
|
|
|
|
Note note = context.Note.Find(idNote); |
|
|
|
|
if (note != null) |
|
|
|
|
{ |
|
|
|
|
context.Remove(note); |
|
|
|
|
context.SaveChanges(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer une note en fonction de son id |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="idNote">Id de la note à récupérer</param> |
|
|
|
|
/// <returns>L'objet DTO de la note correspondant à l'id passé en paramètre</returns> |
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer la liste des notes qu'un auteur a écrit sur un collaborateur |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="idAuteur">Id de l'auteur des notes à récupérer</param> |
|
|
|
|
/// <param name="asc">Précise si la liste est trié dans l'ordre croissant ou décroissant</param> |
|
|
|
|
/// <param name="numPage">Numéro de la page qui est affiché du côté front</param> |
|
|
|
|
/// <param name="parPage">Nombre de notes à renvoyer</param> |
|
|
|
|
/// <param name="texte">permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte</param> |
|
|
|
|
/// <param name="tri">Choisir l'attribut par lequel est trié la liste</param> |
|
|
|
|
/// <returns>Retour la liste des notes à afficher</returns> |
|
|
|
|
public IEnumerable<AffichageNoteDTO> 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> AffichageNoteDTO = (from n in context.Note |
|
|
|
|
where n.IdAuteur == idAuteur |
|
|
|
|
select NoteToAffichageDTO(n)); |
|
|
|
|
*/ |
|
|
|
|
IEnumerable<Note> notes = (from n in context.Note |
|
|
|
|
where n.IdAuteur == idAuteur |
|
|
|
|
select n); |
|
|
|
|
IEnumerable<AffichageNoteDTO> 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); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer le nombre de notes qu'un auteur a écrit |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="idAuteur">Id de l'auteur des notes à récupérer</param> |
|
|
|
|
/// <param name="texte">permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte</param> |
|
|
|
|
/// <returns>Le nombre de notes</returns> |
|
|
|
|
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<Note> notes = (from n in context.Note |
|
|
|
|
where n.IdAuteur == idAuteur |
|
|
|
|
select n); |
|
|
|
|
IEnumerable<AffichageNoteDTO> 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(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Mettre à jour une note de manière async |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="idNote">Id de la note à modifier</param> |
|
|
|
|
/// <param name="note">Note avec les informations à jour</param> |
|
|
|
|
/// <returns>La note mise à jour</returns> |
|
|
|
|
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 |
|
|
|
|
/// <summary> |
|
|
|
|
/// 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 |
|
|
|
|
/// <summary> |
|
|
|
|
/// Transformer un objet note en objet pour afficher un note dans dans un tableau |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="note">Note à transformer</param> |
|
|
|
|
/// <param name="collaborateurService">Service collaborateur pour récupérer les informations des collaborateurs</param> |
|
|
|
|
/// <returns>La note transformée pour être affichée</returns> |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Transformer un objet note en objet pour afficher un note dans dans un tableau |
|
|
|
@ -456,29 +274,7 @@ namespace EPAServeur.Services |
|
|
|
|
return affichage; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Transformatino d'une note en DetailsNoteDTO |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="note">Note à transformer</param> |
|
|
|
|
/// <returns>Note transformer en DetailsNoteDTO</returns> |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Transformatino d'une note en DetailsNoteDTO de manière asynchrone |
|
|
|
|