예제 #1
0
        // vérifie si la date n'est pas dans un quarter ou si le joueur n'est pas déjà inscrit dans une feuille de match postérieure
        public Boolean checkDateTransfert(string nomCompletJoueur, DateTime date)
        {
            try
            {
                //récupère l'objet qui correspond au joueur
                JoueursService            js     = new JoueursService();
                FifaModeles.JoueursModele joueur = js.GetJoueurs(nomCompletJoueur);

                //vérifie si le joueur n'a pas joué un match à une date postérieure à celle du transfert
                JoueursParticipationService jps = new JoueursParticipationService();
                if (jps.checkJoueurSiPasParticipation(joueur.joueurId, date))
                {
                    //vérifie si la date n'est pas dans un quarter
                    QuartersService qs = new QuartersService();
                    if (qs.checkPasDansQuarter(date))
                    {
                        return(true);
                    }
                }
                return(false);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #2
0
        public void enregistrerTransferts(DataTable oTable)
        {
            try
            {
                if (checkTransferts(oTable))
                {
                    using (FifaManagerEphecEntities ctx = new FifaManagerEphecEntities(_Connection))
                    {
                        //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;


                        foreach (DataRowView row in oView)
                        {
                            //récupère l'id du joueur
                            Guid     joueurId      = new JoueursService().GetJoueurs(row["Joueur :"].ToString()).joueurId;
                            DateTime dateTransfert = (DateTime)row["Date du transfert :"];

                            //mets fin au précedent transfert si il existe et rajoute un jour à la date du transfert
                            if (row["Date arrivee :"].ToString() != "" && row["Equipe :"].ToString() != "")
                            {
                                ctx.Transferts_UpdateDateFin(joueurId, (DateTime)row["Date arrivee :"], dateTransfert, DateTime.Now);

                                dateTransfert = dateTransfert.AddDays(1);
                            }

                            //crée un nouveau transfert
                            if (row["combo"].ToString() != "")
                            {
                                Guid equipeInId = new EquipesService().getEquipe(row["combo"].ToString()).equipeId;
                                ctx.Tansferts_Add(joueurId, equipeInId, dateTransfert, DateTime.Now);
                            }
                        }
                        using (TransactionScope scope = new TransactionScope())
                        {
                            ctx.SaveChanges();
                            scope.Complete();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null && ex.InnerException is SqlException)
                {
                    TechnicalError oErreur = new TechnicalError((SqlException)ex.InnerException);
                    throw oErreur;
                }
                else
                {
                    throw ex;
                }
            }
        }
예제 #3
0
        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;
                }
            }
        }