Remplacement du filtre par action d'engagement par un filtre par nom et prénom du collaborateur et suppression de la pagination et du tri pour le count

develop
jboinembalome 4 years ago
parent 670cf11891
commit 87f887be0c
  1. 46
      EPAServeur/Services/EngagementService.cs

@ -91,7 +91,6 @@ namespace EPAServeur.Services
query = epContext.Engagement.Include(engagement => engagement.Ep); query = epContext.Engagement.Include(engagement => engagement.Ep);
query = IdBUsFilter(query, idBUs); query = IdBUsFilter(query, idBUs);
query = EtatsEngagementFilter(query, etatsEngagement); query = EtatsEngagementFilter(query, etatsEngagement);
query = ActionFilter(query, texte);
query = OrderByColumn(query, asc, tri); query = OrderByColumn(query, asc, tri);
query = SkipAndTake(query, parPage, numPage); query = SkipAndTake(query, parPage, numPage);
@ -100,23 +99,31 @@ namespace EPAServeur.Services
collaborateurDTOs = await GetCollaborateurDTOs(engagements); collaborateurDTOs = await GetCollaborateurDTOs(engagements);
engagementDTOs = engagements.Select(engagement => GetEngagementDTO(engagement, collaborateurDTOs)); engagementDTOs = engagements.Select(engagement => GetEngagementDTO(engagement, collaborateurDTOs));
engagementDTOs = CollaborateurFilter(engagementDTOs, texte);
return engagementDTOs; 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; IQueryable<Engagement> query;
IEnumerable<Engagement> engagements;
IEnumerable<EngagementDTO> engagementDTOs;
IEnumerable<CollaborateurDTO> collaborateurDTOs;
long count; long count;
query = epContext.Engagement.Include(engagement => engagement.Ep); query = epContext.Engagement.Include(engagement => engagement.Ep);
query = IdBUsFilter(query, idBUs); query = IdBUsFilter(query, idBUs);
query = EtatsEngagementFilter(query, etatsEngagement); 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; return count;
} }
@ -279,17 +286,18 @@ namespace EPAServeur.Services
} }
/// <summary> /// <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> /// </summary>
/// <param name="query"></param> /// <param name="engagementDTOs"></param>
/// <param name="intitule"></param> /// <param name="intitule"></param>
/// <returns></returns> /// <returns></returns>
private IQueryable<Engagement> ActionFilter(IQueryable<Engagement> query, string action) private IEnumerable<EngagementDTO> CollaborateurFilter(IEnumerable<EngagementDTO> engagementDTOs, string texte)
{ {
if (string.IsNullOrWhiteSpace(action)) if (string.IsNullOrWhiteSpace(texte))
return query; 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> /// <summary>
@ -325,6 +333,9 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private EngagementDTO GetEngagementDTO(Engagement engagement, IEnumerable<CollaborateurDTO> collaborateurDTOs) private EngagementDTO GetEngagementDTO(Engagement engagement, IEnumerable<CollaborateurDTO> collaborateurDTOs)
{ {
if (engagement == null || collaborateurDTOs == null || !collaborateurDTOs.Any())
return null;
EngagementDTO engagementDTO = new EngagementDTO() EngagementDTO engagementDTO = new EngagementDTO()
{ {
Id = engagement.IdEngagement, Id = engagement.IdEngagement,
@ -348,6 +359,9 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(Engagement engagement) private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(Engagement engagement)
{ {
if (engagement == null)
return null;
List<Guid?> guids = new List<Guid?>(); List<Guid?> guids = new List<Guid?>();
guids.Add((Guid?)engagement.Ep.IdCollaborateur); guids.Add((Guid?)engagement.Ep.IdCollaborateur);
@ -363,7 +377,7 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(IEnumerable<Engagement> engagements) private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(IEnumerable<Engagement> engagements)
{ {
if (!engagements.Any()) if (engagements == null || !engagements.Any())
return null; return null;
List<Guid?> guids = engagements.SelectMany(engagement => new[] { (Guid?)engagement.Ep.IdCollaborateur, engagement.Ep.IdReferent }).ToList(); 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 collaborateur;
CollaborateurDTO referent; CollaborateurDTO referent;
if (ep == null || collaborateurDTOs == null || !collaborateurDTOs.Any())
return null;
collaborateur = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdCollaborateur); collaborateur = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdCollaborateur);
referent = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdReferent); referent = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdReferent);
@ -411,6 +428,9 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private Engagement SetReponseEngagement(Engagement engagement, EngagementDTO engagementDTO) private Engagement SetReponseEngagement(Engagement engagement, EngagementDTO engagementDTO)
{ {
if (engagement == null || engagementDTO == null)
return null;
engagement.EtatEngagement = engagementDTO.EtatEngagement; engagement.EtatEngagement = engagementDTO.EtatEngagement;
switch (engagement.EtatEngagement) switch (engagement.EtatEngagement)

Loading…
Cancel
Save