@ -106,6 +106,77 @@ namespace EPAServeur.Services
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 ( ) ;
}
# endregion
#region Services Async
@ -173,6 +244,69 @@ namespace EPAServeur.Services
return await NoteToDetailSDTOAsync ( 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 async Task < IEnumerable < AffichageNoteDTO > > GetNotesByAuteurAsync ( Guid ? idAuteur , bool? asc , int? numPage , int? parPage , string texte , string tri )
{
Collaborateur auteur = await collaborateurApi . ChercherCollabIdAsync ( 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 ;
IEnumerable < Note > notes = context . Note . Where ( n = > n . IdAuteur = = idAuteur ) ;
var task = notes . Select ( n = > NoteToAffichageDTOAsync ( n ) ) ;
IEnumerable < AffichageNoteDTO > AffichageNoteDTO = await Task . WhenAll ( task ) ;
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 async Task < int > GetNotesByAuteurCountAsync ( Guid ? idAuteur , string texte )
{
Collaborateur auteur = await collaborateurApi . ChercherCollabIdAsync ( idAuteur ) ;
if ( auteur = = null )
throw new ReferentNotFoundException ( "L'auteur de la note n'existe pas" ) ;
IEnumerable < Note > notes = context . Note . Where ( n = > n . IdAuteur = = idAuteur ) ;
var task = notes . Select ( n = > NoteToAffichageDTOAsync ( n ) ) ;
IEnumerable < AffichageNoteDTO > AffichageNoteDTO = await Task . WhenAll ( task ) ;
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 ( ) ;
}
# endregion
/ *
@ -379,15 +513,42 @@ namespace EPAServeur.Services
/// <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 )
private AffichageNoteDTO NoteToAffichageDTO ( Note note )
{
//CollaborateurDTO collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur);
/ *
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
/// </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 async Task < AffichageNoteDTO > NoteToAffichageDTOAsync ( Note note )
{
string infoCollab = "Aucun collaborateur lié" ;
Collaborateur collaborateur = await collaborateurApi . ChercherCollabIdAsync ( ( Guid ? ) note . IdCollaborateur ) ;
if ( collaborateur ! = null )
infoCollab = collaborateur . Prenom + " " + collaborateur . Nom ;
AffichageNoteDTO affichage = new AffichageNoteDTO ( )
{
Id = note . IdNote ,
IdCollaborateur = note . IdCollaborateur ,
Collaborateur = collaborateur . Prenom + collaborateur . Nom ,
Collaborateur = infoCollab ,
Titre = note . Titre ,
DateMiseAJour = note . DateMiseAJour
} ;
@ -403,7 +564,7 @@ namespace EPAServeur.Services
{
CollaborateurDTO collaborateur = collaborateurService . GetCollaborateurById ( note . IdCollaborateur ) ;
if ( collaborateur = = null )
throw new CollaborateurNotFoundException ( "Il est impossible de récupérer une note donc le collaborateur n'existe plus" ) ;
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 ,