public static List <MatchsModele> getListeMatchExclusionCartonRouge(Guid joueurId, Guid equipeId, QuartersModele quarter) { try { MatchsService ms = new MatchsService(); //obtient la liste des matchs joués par l'équipe du joueur en ordre chronologique ce quarter List <MatchsModele> lMatchsEquipe = ms.getMatchParticipationParUneEquipeParQuarter(equipeId, quarter.dateDebut, quarter.dateFin).OrderBy(x => x.matchDate).ToList(); CartesRougesService cs = new CartesRougesService(); //obtient la liste des matchs avec cartons rouges du joueur dans le quarter List <Guid> lmatchsAvecCartonsRouges = cs.getMatchsCartonsRouges(joueurId, quarter); List <MatchsModele> lMatchsExclusionJoueur = new List <MatchsModele>(); //vérifie si il y a des matchs avec cartons rouges if (lmatchsAvecCartonsRouges.Any()) { foreach (Guid matchId in lmatchsAvecCartonsRouges) { int ind = lMatchsEquipe.IndexOf(lMatchsEquipe.First(x => x.matchId == matchId)); int i = ind++; while (i < lMatchsEquipe.Count && i < ind + 3) { lMatchsExclusionJoueur.Add(lMatchsEquipe[i]); i++; } } } return(lMatchsExclusionJoueur); } catch (Exception ex) { throw ex; } }
// public static int CountCartesJaunesActives(Guid joueurId, Guid equipeId, QuartersModele quarter) { try { MatchsService ms = new MatchsService(); CartesJaunesService cjs = new CartesJaunesService(); //obtient la liste des matchs joués par le joueur en ordre chronologique ce quarter List <MatchsModele> lMatchsJoueur = ms.getMatchParticipationParUnJoueurParQuarter(joueurId, quarter.dateDebut, quarter.dateFin).OrderBy(x => x.matchDate).ToList(); //obtient la liste des matchs joués par l'équipe du joueur en ordre chronologique ce quarter List <MatchsModele> lMatchsEquipe = ms.getMatchParticipationParUneEquipeParQuarter(equipeId, quarter.dateDebut, quarter.dateFin).OrderBy(x => x.matchDate).ToList(); //obtient la liste des cartons jaunes du joueur List <CartonsJaunesModele> lCartonsJoueur = cjs.getCartonsDuJoueur(joueurId); List <MatchsModele> lMatchAvecCartonJauneDansQuarter = new List <MatchsModele>(); //rempli la liste des index des matchs dnas lesquels des cartons jaunes ont été obtenus par le joueur lors du quarter foreach (CartonsJaunesModele carton in lCartonsJoueur) { if (lMatchsEquipe.Any(x => x.matchId == carton.matchId)) { lMatchAvecCartonJauneDansQuarter.Add(lMatchsEquipe.First(x => x.matchId == carton.matchId)); } } int count = lMatchAvecCartonJauneDansQuarter.Count; if (lMatchsEquipe.Count != lMatchsJoueur.Count) { if (lMatchAvecCartonJauneDansQuarter.Any()) { //trie par ordre chronologique les matchs avec cartons lMatchAvecCartonJauneDansQuarter = lMatchAvecCartonJauneDansQuarter.OrderBy(x => x.matchDate).ToList(); List <MatchsModele> lMatchsSansLeJoueur = new List <MatchsModele>(); //récupère la liste des exclusions du joueurs List <MatchsModele> lMatchsExclusionJoueur = getListeMatchExclusionCartonRouge(joueurId, equipeId, quarter); foreach (MatchsModele match in lMatchsEquipe) { if (!lMatchsJoueur.Contains(match) && !lMatchsExclusionJoueur.Contains(match)) { lMatchsSansLeJoueur.Add(match); } } for (int j = 0; j < lMatchAvecCartonJauneDansQuarter.Count; j++) { if (lMatchsSansLeJoueur.Any(x => x.matchDate > lMatchAvecCartonJauneDansQuarter[j].matchDate)) { lMatchsSansLeJoueur.Remove(lMatchsSansLeJoueur.First(x => x.matchDate > lMatchAvecCartonJauneDansQuarter[j].matchDate)); count--; } } } } return(count); } catch (Exception ex) { throw ex; } }