@ -91,7 +91,6 @@ namespace EPAServeur.Services
query = epContext . Engagement . Include ( engagement = > engagement . Ep ) ;
query = IdBUsFilter ( query , idBUs ) ;
query = EtatsEngagementFilter ( query , etatsEngagement ) ;
query = ActionFilter ( query , texte ) ;
query = OrderByColumn ( query , asc , tri ) ;
query = SkipAndTake ( query , parPage , numPage ) ;
@ -100,23 +99,31 @@ namespace EPAServeur.Services
collaborateurDTOs = await GetCollaborateurDTOs ( engagements ) ;
engagementDTOs = engagements . Select ( engagement = > GetEngagementDTO ( engagement , collaborateurDTOs ) ) ;
engagementDTOs = CollaborateurFilter ( engagementDTOs , texte ) ;
return engagementDTOs ;
}
public async Task < long > GetEngagementsCountAsync ( List < long > idBUs , List < EtatEngagement > etatsEngagement , bool? asc , int? numPage , int? parPage , string texte , string tri )
public async Task < long > GetEngagementsCountAsync ( List < long > idBUs , List < EtatEngagement > etatsEngagement , string texte )
{
IQueryable < Engagement > query ;
IEnumerable < Engagement > engagements ;
IEnumerable < EngagementDTO > engagementDTOs ;
IEnumerable < CollaborateurDTO > collaborateurDTOs ;
long count ;
query = epContext . Engagement . Include ( engagement = > engagement . Ep ) ;
query = IdBUsFilter ( query , idBUs ) ;
query = EtatsEngagementFilter ( query , etatsEngagement ) ;
query = ActionFilter ( query , texte ) ;
query = OrderByColumn ( query , asc , tri ) ;
query = SkipAndTake ( query , parPage , numPage ) ;
count = await query . CountAsync ( ) ;
engagements = await query . ToListAsync ( ) ;
collaborateurDTOs = await GetCollaborateurDTOs ( engagements ) ;
engagementDTOs = engagements . Select ( engagement = > GetEngagementDTO ( engagement , collaborateurDTOs ) ) ;
engagementDTOs = CollaborateurFilter ( engagementDTOs , texte ) ;
count = engagementDTOs . Count ( ) ;
return count ;
}
@ -279,17 +286,18 @@ namespace EPAServeur.Services
}
/// <summary>
/// Ajouter un filtre pour récupérer les engagements en fonction d'une action
/// Ajouter un filtre pour récupérer les engagements en fonction du nom et du prénom du collaborateur
/// </summary>
/// <param name="query "></param>
/// <param name="engagementDTOs "></param>
/// <param name="intitule"></param>
/// <returns></returns>
private IQuery able < Engagement > ActionFilter ( IQuery able< Engagement > query , string action )
{
if ( string . IsNullOrWhiteSpace ( action ) )
return query ;
private IEnumer able < EngagementDTO > CollaborateurFilter ( IEnumer able< EngagementDTO > engagementDTOs , string texte )
{
if ( string . IsNullOrWhiteSpace ( texte ) )
return engagementDTOs ;
return query . Where ( engagement = > engagement . Action . ToLower ( ) . Contains ( action . ToLower ( ) ) ) ;
return engagementDTOs . Where ( engagement = > ( engagement . Ep . Collaborateur . Nom + " " + engagement . Ep . Collaborateur . Prenom ) . ToLower ( ) . Contains ( texte . ToLower ( ) ) | |
( engagement . Ep . Collaborateur . Prenom + " " + engagement . Ep . Collaborateur . Nom ) . ToLower ( ) . Contains ( texte . ToLower ( ) ) ) ;
}
/// <summary>
@ -325,6 +333,9 @@ namespace EPAServeur.Services
/// <returns></returns>
private EngagementDTO GetEngagementDTO ( Engagement engagement , IEnumerable < CollaborateurDTO > collaborateurDTOs )
{
if ( engagement = = null | | collaborateurDTOs = = null | | ! collaborateurDTOs . Any ( ) )
return null ;
EngagementDTO engagementDTO = new EngagementDTO ( )
{
Id = engagement . IdEngagement ,
@ -348,6 +359,9 @@ namespace EPAServeur.Services
/// <returns></returns>
private async Task < IEnumerable < CollaborateurDTO > > GetCollaborateurDTOs ( Engagement engagement )
{
if ( engagement = = null )
return null ;
List < Guid ? > guids = new List < Guid ? > ( ) ;
guids . Add ( ( Guid ? ) engagement . Ep . IdCollaborateur ) ;
@ -363,7 +377,7 @@ namespace EPAServeur.Services
/// <returns></returns>
private async Task < IEnumerable < CollaborateurDTO > > GetCollaborateurDTOs ( IEnumerable < Engagement > engagements )
{
if ( ! engagements . Any ( ) )
if ( engagements = = null | | ! engagements . Any ( ) )
return null ;
List < Guid ? > guids = engagements . SelectMany ( engagement = > new [ ] { ( Guid ? ) engagement . Ep . IdCollaborateur , engagement . Ep . IdReferent } ) . ToList ( ) ;
@ -381,6 +395,9 @@ namespace EPAServeur.Services
CollaborateurDTO collaborateur ;
CollaborateurDTO referent ;
if ( ep = = null | | collaborateurDTOs = = null | | ! collaborateurDTOs . Any ( ) )
return null ;
collaborateur = collaborateurDTOs . FirstOrDefault ( collaborateurDTO = > collaborateurDTO . Id = = ep . IdCollaborateur ) ;
referent = collaborateurDTOs . FirstOrDefault ( collaborateurDTO = > collaborateurDTO . Id = = ep . IdReferent ) ;
@ -411,6 +428,9 @@ namespace EPAServeur.Services
/// <returns></returns>
private Engagement SetReponseEngagement ( Engagement engagement , EngagementDTO engagementDTO )
{
if ( engagement = = null | | engagementDTO = = null )
return null ;
engagement . EtatEngagement = engagementDTO . EtatEngagement ;
switch ( engagement . EtatEngagement )