Example #1
0
        public static void SaveTournamentPool(
            int idTorneo, int idDisciplina, int poolIndex,
            List <int> idAtleti,
            int numeroIncontriAdPersonam,
            DataGrid dataGridPool)
        {
            foreach (Int32 atleta in idAtleti)
            {
                RisultatiIncontriGironi res = new RisultatiIncontriGironi();

                res.idAtleta = atleta;

                foreach (MatchEntity match in dataGridPool.Items)
                {
                    bool doppiaMorte = match.DoppiaMorte;

                    if (!SqlDal_Pools.UpdateGironiIncontri(idTorneo, idDisciplina, poolIndex, match.IdRosso, match.PuntiRosso, match.IdBlu, match.PuntiBlu, doppiaMorte))
                    {
                        new MessageBoxCustom("Error during pool savings", MessageType.Error, MessageButtons.Ok);
                        return;
                    }

                    if (match.IdRosso == atleta) //se sono l'atleta a "sinistra"
                    {
                        if (doppiaMorte)
                        {
                            res.Sconfitte++;
                            res.PuntiSubiti += Math.Abs(3 - match.PuntiRosso);
                        }
                        else
                        {
                            if (match.PuntiRosso > match.PuntiBlu)
                            {
                                res.Vittorie++;
                            }
                            else if (match.PuntiRosso < match.PuntiBlu)
                            {
                                res.Sconfitte++;
                            }
                            else
                            {
                                if (match.PuntiRosso > match.PuntiBlu)
                                {
                                    res.Vittorie++;
                                }
                                else if (match.PuntiRosso < match.PuntiBlu)
                                {
                                    res.Sconfitte++;
                                }
                            }

                            res.PuntiFatti  += match.PuntiRosso;
                            res.PuntiSubiti += match.PuntiBlu;
                        }
                    }
                    else if (match.IdBlu == atleta)   //se sono l'atleta a "destra"
                    {
                        if (doppiaMorte)
                        {
                            res.Sconfitte++;
                            res.PuntiSubiti += Math.Abs(3 - match.PuntiBlu);
                        }

                        else
                        {
                            if ((match.PuntiBlu > match.PuntiRosso) && (match.PuntiBlu >= 3))
                            {
                                res.Vittorie++;
                            }
                            else if ((match.PuntiBlu < match.PuntiRosso) && (match.PuntiRosso >= 3))
                            {
                                res.Sconfitte++;
                            }
                            else
                            {
                                if (match.PuntiBlu > match.PuntiRosso)
                                {
                                    res.Vittorie++;
                                }
                                else if (match.PuntiBlu < match.PuntiRosso)
                                {
                                    res.Sconfitte++;
                                }
                            }

                            res.PuntiFatti  += match.PuntiBlu;
                            res.PuntiSubiti += match.PuntiRosso;
                        }
                    }
                }

                int delpaP = res.PuntiFatti - res.PuntiSubiti;
                res.NumeroIncontriDisputati = numeroIncontriAdPersonam;

                res.Differenziale = (Double)(delpaP + res.Vittorie) / res.NumeroIncontriDisputati;

                //salvare res in Gironi:
                //per ogni atleta , torneo e disciplina salvo i punti fatti, subiti, le vittorie ed il differenziale
                SqlDal_Pools.UpdateGironi(res, idTorneo, idDisciplina, poolIndex);
            }
        }