diff --git a/EPAServeur/Services/EngagementService.cs b/EPAServeur/Services/EngagementService.cs index ad750a5..3b35cd7 100644 --- a/EPAServeur/Services/EngagementService.cs +++ b/EPAServeur/Services/EngagementService.cs @@ -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 GetEngagementsCountAsync(List idBUs, List etatsEngagement, bool? asc, int? numPage, int? parPage, string texte, string tri) + public async Task GetEngagementsCountAsync(List idBUs, List etatsEngagement, string texte) { IQueryable query; + IEnumerable engagements; + IEnumerable engagementDTOs; + IEnumerable 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 } /// - /// 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 /// - /// + /// /// /// - private IQueryable ActionFilter(IQueryable query, string action) - { - if (string.IsNullOrWhiteSpace(action)) - return query; + private IEnumerable CollaborateurFilter(IEnumerable 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()) ); } /// @@ -325,6 +333,9 @@ namespace EPAServeur.Services /// private EngagementDTO GetEngagementDTO(Engagement engagement, IEnumerable collaborateurDTOs) { + if (engagement == null || collaborateurDTOs == null || !collaborateurDTOs.Any()) + return null; + EngagementDTO engagementDTO = new EngagementDTO() { Id = engagement.IdEngagement, @@ -348,6 +359,9 @@ namespace EPAServeur.Services /// private async Task> GetCollaborateurDTOs(Engagement engagement) { + if (engagement == null) + return null; + List guids = new List(); guids.Add((Guid?)engagement.Ep.IdCollaborateur); @@ -363,7 +377,7 @@ namespace EPAServeur.Services /// private async Task> GetCollaborateurDTOs(IEnumerable engagements) { - if (!engagements.Any()) + if (engagements == null || !engagements.Any()) return null; List 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 /// private Engagement SetReponseEngagement(Engagement engagement, EngagementDTO engagementDTO) { + if (engagement == null || engagementDTO == null) + return null; + engagement.EtatEngagement = engagementDTO.EtatEngagement; switch (engagement.EtatEngagement)