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 = 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 IQueryable<Engagement> ActionFilter(IQueryable<Engagement> query, string action)
private IEnumerable<EngagementDTO> CollaborateurFilter(IEnumerable<EngagementDTO> engagementDTOs, string texte)
{
if (string.IsNullOrWhiteSpace(action))
return query;
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)

Loading…
Cancel
Save