public Boolean checkNoMatchswithFeuilleAfter(DateTime dateTransfert, EquipesModele equipeNew, EquipesModele equipeOld) { try { FeuillesDeMatchService fms = new FeuillesDeMatchService(); List <FeuillesDeMatchModele> lFeuilleMatch = fms.ListAll(); if (equipeNew != null) { if (lFeuilleMatch.Any(x => x.Matchs.matchDate > dateTransfert && (x.Matchs.equipe1Id == equipeNew.equipeId || x.Matchs.equipe2Id == equipeNew.equipeId))) { return(false); } } if (equipeOld != null) { if (lFeuilleMatch.Any(x => x.Matchs.matchDate > dateTransfert && (x.Matchs.equipe1Id == equipeOld.equipeId || x.Matchs.equipe2Id == equipeOld.equipeId))) { return(false); } } return(true); } catch (Exception ex) { throw ex; } }
//vérifie si l'équipe envoyée est bien dans les 3 derniers du championnat à la date envoyée public Boolean isLastThree(EquipesModele equipe, DateTime date) { try { int NBEQUIPE = 3; EquipesParticipationService eps = new EquipesParticipationService(); DataView oView = new GenerationTabClassementEquipe().getClassementEquipe(date).DefaultView; //trie le tableau de manière ascendante oView.Sort = "Points Totaux asc"; //vérifie que l'équipe d'arrivée est bien dans le championnat if (eps.isParticipation(equipe, date)) { if (oView.Count > NBEQUIPE) { for (int i = 0; i < NBEQUIPE; i++) { //vérifie si l'équipe est dans les 3 dernières row du tableau if (oView[i]["Equipe :"].ToString() == equipe.nom) { return(true); } } // retourne un BusinessError si l'équipe n'est pas dans les NBEQUIPE derniers BusinessError bErreur = new BusinessError("L'équipe d'arrivée (" + equipe.nom + ") n'est pas classée dans les " + NBEQUIPE + " dernières équipes du classement"); throw bErreur; } else { return(true); } } return(true); } catch (Exception ex) { if (ex.InnerException != null && ex.InnerException is SqlException) { TechnicalError oErreur = new TechnicalError((SqlException)ex.InnerException); throw oErreur; } else { throw ex; } } }
// récupère le nombre de points pour une équipe à un quarter public int getPoints(EquipesModele equipe, List <MatchsModele> lMatchs, QuartersModele quarter) { int count = 0; foreach (MatchsModele match in lMatchs) { if (match.equipe1Id == equipe.equipeId && match.matchDate <= quarter.dateFin && match.matchDate >= quarter.dateDebut) { count += match.equipe1Points; } if (match.equipe2Id == equipe.equipeId && match.matchDate <= quarter.dateFin && match.matchDate >= quarter.dateDebut) { count += match.equipe2Points; } } return(count); }
// récupère le nombre de goals pour une équipe à un quarter public int getGoals(EquipesModele equipe, List <MatchsModele> lMatchs, QuartersModele quarter) { List <GoalsModele> lGoals = new GoalsService().ListAll(); int count = 0; foreach (GoalsModele goal in lGoals) { if (goal.equipeId == equipe.equipeId) { foreach (MatchsModele match in lMatchs) { if (match.matchId == goal.matchId && match.matchDate <= quarter.dateFin && match.matchDate >= quarter.dateDebut) { count++; } } } } return(count); }
// récupère le nombre de cartons rouges pour une équipe à un quarter public int getCartesRouges(EquipesModele equipe, List <MatchsModele> lMatchs, QuartersModele quarter) { List <CartonsRougesModele> lcr = new CartesRougesService().ListAll(); int count = 0; foreach (CartonsRougesModele cr in lcr) { if (cr.equipeId == equipe.equipeId) { foreach (MatchsModele match in lMatchs) { if (match.matchId == cr.matchId && match.matchDate <= quarter.dateFin && match.matchDate >= quarter.dateDebut) { count++; } } } } return(count); }
public Boolean checkMatchsAllPlayedBefore(DateTime dateTransfert, EquipesModele equipeNew, EquipesModele equipeOld) { try { MatchsService ms = new MatchsService(); List <MatchsModele> lMatchs = ms.ListAll(); DateTime debutChampionnat = new DateTime(dateTransfert.Year, 1, 1); if (equipeNew != null) { if (lMatchs.Any(x => x.isPlayed == false && (x.equipe1Id == equipeNew.equipeId || x.equipe2Id == equipeNew.equipeId) && x.matchDate < dateTransfert && x.matchDate >= debutChampionnat)) { return(false); } } if (equipeOld != null) { if (lMatchs.Any(x => x.isPlayed == false && (x.equipe1Id == equipeOld.equipeId || x.equipe2Id == equipeOld.equipeId) && x.matchDate < dateTransfert && x.matchDate >= debutChampionnat)) { return(false); } } return(true); } catch (Exception ex) { throw ex; } }
public Boolean checkTransferts(DataTable oTable) { try { //transforme la table en vue et applique un filtre pour n'avoir que les lignes modifiées DataView oView = oTable.DefaultView; oView.RowStateFilter = DataViewRowState.ModifiedCurrent; if (checkTableTransfert(oView)) { foreach (DataRowView row in oView) { //obtient le joueur JoueursService js = new JoueursService(); FifaModeles.JoueursModele joueur = js.GetJoueurs(row["Joueur :"].ToString()); EquipesService es = new EquipesService(); //obtient l'équipe et le nombre de joueur avant transfert et le nombre de transfert pour l'équipeNew si elle existe int nbTransfertsIn = 0; int nbJoueurNew = NOMBREMINJOUEUR; EquipesModele equipeNew = new EquipesModele(); EquipesModele equipeOld = new EquipesModele(); if (row["combo"].ToString() != "") { //obtient l'équipe et le nombre de joueur avant transfert et le nombre de transfert pour l'équipeNew equipeNew = es.getEquipe(row["combo"].ToString()); //obtient le nombre de transfert nbTransfertsIn = nombreTransfertEquipeNew(oView, equipeNew.nom); //obtient le nombre de joueur avant transfert nbJoueurNew = nombreJoueurEquipe(equipeNew.equipeId, (DateTime)row["Date du transfert :"]); } //obtient l'équipe et le nombre de joueur avant transfert et le nombre de transfert pour l'équipeOld si elle existe int nbTransfertsOut = 0; int nbJoueur = NOMBREMINJOUEUR; if (row["Equipe :"].ToString() != "") { equipeOld = es.getEquipe(row["Equipe :"].ToString()); //obtient le nombre de transfert nbTransfertsOut = nombreTransfertEquipeOld(oView, equipeOld.nom); //obtient le nombre de joueur avant transfert nbJoueur = nombreJoueurEquipe(equipeOld.equipeId, (DateTime)row["Date du transfert :"]); } IntersaisonsService inter = new IntersaisonsService(); //vérifie si tous les matchs antérieurs sont jouées if (checkMatchsAllPlayedBefore((DateTime)row["Date du transfert :"], equipeNew, equipeOld)) { if (checkNoMatchswithFeuilleAfter((DateTime)row["Date du transfert :"], equipeNew, equipeOld)) { if ((nbJoueurNew + nbTransfertsIn) <= NOMBREMAXJOUEUR) { //vérifie si l'équipe d'arrivée est bien les x derniers du championnat à la date xx //si l'équipe d'arrivée n'est pas inscrite dans le championnat renvoie également true //sinon renvoie une Business erreur if (!inter.checkPasDansIntersaison((DateTime)row["Date du transfert :"])) { if ((nbJoueur - nbTransfertsOut) >= NOMBREMINJOUEUR) { if (equipeNew != null) { ClassementEquipe classement = new ClassementEquipe(); if (classement.isLastThree(equipeNew, (DateTime)row["Date du transfert :"])) { } } } else { // retourne un BusinessError si il n'y aurait plus assez de joueurs BusinessError bErreur = new BusinessError("Il y a trop de transferts de sortie pour l'équipe de départ"); throw bErreur; } } } else { // retourne un BusinessError si il y aurait trop de joueurs BusinessError bErreur = new BusinessError("Il y a trop de transferts d'entrée pour l'équipe d'arrivée"); throw bErreur; } } else { // retourne un BusinessError si il y a des matchs joués postérieurs BusinessError bErreur = new BusinessError("Une des équipes a déjà rempli une feuille de match après la date de transfert"); throw bErreur; } } else { // retourne un BusinessError si il y a des matchs antérieurs non joués BusinessError bErreur = new BusinessError("Tous les matchs antérieurs (de la saison) des équipes sélectionnées doivent être joués"); throw bErreur; } } } else { // retourne un BusinessError si il n'y aurait plus assez de joueurs BusinessError bErreur = new BusinessError("Toutes les cellules de date de transfert ne sont pas remplies"); throw bErreur; } return(true); } catch (Exception ex) { if (ex.InnerException != null && ex.InnerException is SqlException) { TechnicalError oErreur = new TechnicalError((SqlException)ex.InnerException); throw oErreur; } else { throw ex; } } }