Пример #1
0
        public object execute(DbConnection connection)
        {
            ClasificacionDAO     clasificacionDAO     = new ClasificacionDAO();
            PartidoDAO           partidoDAO           = new PartidoDAO();
            EquiposParticipanDAO equiposParticipanDAO = new EquiposParticipanDAO();

            var listaEquiposParticipantes = equiposParticipanDAO.verEquiposParticipan(connection, null, cod_Competicion);

            var listaPartidosJornada = partidoDAO.verPartidosVOCompeticionJornada(connection,
                                                                                  null, cod_Competicion, Convert.ToString(jornada));

            var listaPartidosCompeticion = partidoDAO.buscarPartidosEquipos(connection, null, 0, 0, cod_Competicion, null, 0);

            int numeroPartidosCompeticion = (listaEquiposParticipantes.Count) * (listaEquiposParticipantes.Count - 1);

            if (jornada == "Ninguna")
            {
                return(false);
            }


            //Si ya se ha actualizado la clasificacion esa jornada, no se puede volver a actualizar
            if (clasificacionDAO.obtenerUltimaJornada(connection, null, cod_Competicion) == Int32.Parse(jornada))
            {
                return(false);
            }



            if (listaPartidosCompeticion == null)
            {
                return(false);
            }
            //Si ya ha acabado la temporada , se acabó
            if (listaPartidosCompeticion.Count == numeroPartidosCompeticion)
            {
                return(false);
            }

            //si no ha empezado la temporada, no se puede actualizar nada
            if (listaPartidosJornada == null)
            {
                return(false);
            }


            if (listaPartidosJornada.Count != (listaEquiposParticipantes.Count / 2))
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
        public object execute(DbConnection connection, DbTransaction transaction)
        {
            var partidoDAO        = new PartidoDAO();
            var clasificacionDAO  = new ClasificacionDAO();
            var equiposParticipan = new EquiposParticipanDAO();
            var competicionDAO    = new CompeticionDAO();
            var clasificacion     = new List <ClasificacionVO>();



            int ptosLocal = 0, ptosVisitante = 0, golesFavorLocal = 0, golesContraLocal = 0;
            int golesFavorVisitante = 0, golesContraVisitante = 0;
            int ganadosLocal = 0, perdidosLocal = 0, empatadosLocal = 0;
            int ganadosVisitante = 0, perdidosVisitante = 0, empatadosVisitante = 0;
            int jornada                   = clasificacionDAO.obtenerUltimaJornada(connection, transaction, cod_Competicion);
            var listaEquiposParticipantes = equiposParticipan.verEquiposParticipan(connection, transaction, cod_Competicion);


            if (clasificacionDAO.listaClasificacionVOsJornadaTemporada(connection,
                                                                       transaction, cod_Competicion, jornada) == null)
            {
                int contador = 1;

                foreach (var equipo in listaEquiposParticipantes)
                {
                    clasificacion.Add(new ClasificacionVO(cod_Competicion, 0, equipo.Cod_Equipo, contador, 0, 0, 0, 0, 0, 0));
                    contador++;
                }
                jornada = 1;
            }
            else
            {
                clasificacion = clasificacionDAO.listaClasificacionVOsJornadaTemporada(connection, transaction,
                                                                                       cod_Competicion, jornada);
                int numeroEquiposParticipantes = listaEquiposParticipantes.Count;

                if (numeroEquiposParticipantes != clasificacion.Count)
                {
                    throw new InstanceNotFoundException(1, "no hay la clasif justa");
                }

                jornada++;
            }



            var listaPartidosJornada = partidoDAO.verPartidosVOCompeticionJornada(connection,
                                                                                  transaction, cod_Competicion, Convert.ToString(jornada));


            if (listaPartidosJornada.Count != (listaEquiposParticipantes.Count / 2))
            {
                throw new InstanceNotFoundException(1, "no hay los partidos justos");
            }



            foreach (PartidoVO partido in listaPartidosJornada)
            {
                foreach (ClasificacionVO item in clasificacion)
                {
                    if (item.Cod_Equipo == partido.Cod_Local)
                    {
                        ptosLocal        = item.Puntos;
                        ganadosLocal     = item.Ganados;
                        perdidosLocal    = item.Perdidos;
                        empatadosLocal   = item.Empatados;
                        golesFavorLocal  = item.Goles_Favor;
                        golesContraLocal = item.Goles_Contra;
                    }
                    if (item.Cod_Equipo == partido.Cod_Visitante)
                    {
                        ptosVisitante        = item.Puntos;
                        ganadosVisitante     = item.Ganados;
                        perdidosVisitante    = item.Perdidos;
                        empatadosVisitante   = item.Empatados;
                        golesFavorVisitante  = item.Goles_Favor;
                        golesContraVisitante = item.Goles_Contra;
                    }
                }


                if (partido.Goles_Local > partido.Goles_Visitante)
                {
                    clasificacion = actualizarClasificacion(new ClasificacionVO(partido.Cod_Competicion, jornada,
                                                                                partido.Cod_Local, 1, ganadosLocal + 1, perdidosLocal, empatadosLocal, golesFavorLocal + partido.Goles_Local,
                                                                                partido.Goles_Visitante + golesContraLocal, ptosLocal + 3), clasificacion);

                    clasificacion = actualizarClasificacion(new ClasificacionVO(partido.Cod_Competicion, jornada,
                                                                                partido.Cod_Visitante, 1, ganadosVisitante, perdidosVisitante + 1, empatadosVisitante, golesFavorVisitante + partido.Goles_Visitante,
                                                                                partido.Goles_Local + golesContraVisitante, ptosVisitante), clasificacion);
                }
                else if (partido.Goles_Visitante > partido.Goles_Local)
                {
                    clasificacion = actualizarClasificacion(new ClasificacionVO(partido.Cod_Competicion, jornada,
                                                                                partido.Cod_Local, 1, ganadosLocal, perdidosLocal + 1, empatadosLocal, golesFavorLocal + partido.Goles_Local,
                                                                                partido.Goles_Visitante + golesContraLocal, ptosLocal), clasificacion);

                    clasificacion = actualizarClasificacion(new ClasificacionVO(partido.Cod_Competicion, jornada,
                                                                                partido.Cod_Visitante, 1, ganadosVisitante + 1, perdidosVisitante, empatadosVisitante, golesFavorVisitante + partido.Goles_Visitante,
                                                                                partido.Goles_Local + golesContraVisitante, ptosVisitante + 3), clasificacion);
                }
                else
                {
                    clasificacion = actualizarClasificacion(new ClasificacionVO(partido.Cod_Competicion, jornada,
                                                                                partido.Cod_Local, 1, ganadosLocal, perdidosLocal, empatadosLocal + 1, golesFavorLocal + partido.Goles_Local,
                                                                                partido.Goles_Visitante + golesContraLocal, ptosLocal + 1), clasificacion);

                    clasificacion = actualizarClasificacion(new ClasificacionVO(partido.Cod_Competicion, jornada,
                                                                                partido.Cod_Visitante, 1, ganadosVisitante, perdidosVisitante, empatadosVisitante + 1, golesFavorVisitante + partido.Goles_Visitante,
                                                                                partido.Goles_Local + golesContraVisitante, ptosVisitante + 1), clasificacion);
                }
            }


            int posicion = 1;

            foreach (ClasificacionVO item in clasificacion)
            {
                item.Posicion = posicion;

                clasificacionDAO.create(connection, transaction, item);
                posicion++;
            }

            return(clasificacion);
        }