@ -177,6 +177,29 @@ namespace EPAServeur.Services
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
@ -307,151 +330,29 @@ namespace EPAServeur.Services
return AffichageNoteDTO . Count ( ) ;
}
/// <summary>
/// Mettre à jour une note
/// </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 async Task < DetailsNoteDTO > UpdateNoteAsync ( 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 = await context . Note . FindAsync ( 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 ;
await context . SaveChangesAsync ( ) ;
return NoteToDetailSDTO ( noteToUpdate ) ;
}
# endregion
/ *
#region Services
/// <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="idCollaborateur">Id du collaborateur pour lesquelles les notes ont été écrites</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 > 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 > 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 ;
}
/// <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 ) ;
if ( note = = null )
throw new NoteNotFoundException ( ) ;
return NoteToDetailSDTO ( note ) ;
}
public IEnumerable < AffichageNoteDTO > GetNotes ( bool? asc , int? numPage , int? parPage , string texte , string tri )
{
throw new NotImplementedException ( ) ;
}
/// <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 )
{
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 > 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 ;
}
/// <summary>
/// Supprimer une note en fonction de son Id
/// </summary>
/// <param name="idNote">Id de la note à supprimer</param>
/// <returns>Si oui ou non la notea bien été supprimé</returns>
public void SupprimerNote ( long? idNote )
{
Note note = context . Note . Find ( idNote ) ;
if ( note = = null )
throw new NoteNotFoundException ( ) ;
context . Remove ( note ) ;
context . SaveChanges ( ) ;
}
/// <summary>
/// Mettre à jour une note
/// </summary>
/// <param name="idNote">Id de la note à modifier</param>
/// <param name="note"></param>
/// <returns></returns>
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 ) ;
}
/// <summary>
/// Vérifier si un objet DetailsNoteDTO possède est valide pour ajout ou mise à jour
/// </summary>
/// <remarks> Un objet DetailsNoteDTO est valide si aucune de ses propriétés n'est à null</remarks>
/// <param name="note"></param>
/// <returns>true si l'objet est valide, false sinon</returns>
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
/// <summary>