예제 #1
0
        /// <summary>
        /// Calcula los campos que aparecen el el footer de la tabla de resultados
        /// Calcula media, mediana, perfectos, ceros de cada problema, día y general
        /// así como número de estados y número de competidores
        /// </summary>
        public void calcularNumeros()
        {
            Problema prob;

            estados       = Resultados.obtenerEstadosParticipantes(numero, tipoOlimpiada);
            participantes = MiembroDelegacion.obtenerParticipantes(numero, tipoOlimpiada);

            int[] problemasDia = new int[3];

            // Calculamos las estadisticas por dia y por competencia y las guardamos en la base
            for (int i = 1; i <= 2; i++)
            {
                problemasDia[i] = Problema.obtenerCantidadDeProblemas(numero, tipoOlimpiada, i);

                prob = Resultados.calcularNumeros(numero, tipoOlimpiada, dia: i, totalProblemas: problemasDia[i]);
                prob.guardar(guardarTodo: false);

                List <Problema> lista = Problema.obtenerProblemasDeOMI(numero, tipoOlimpiada, i);
                foreach (Problema p in lista)
                {
                    if (p != null)
                    {
                        Problema pp = Resultados.calcularNumeros(numero, tipoOlimpiada, p.dia, p.numero);
                        p.media     = pp.media;
                        p.mediana   = pp.mediana;
                        p.perfectos = pp.perfectos;
                        p.ceros     = pp.ceros;
                        p.guardar(guardarTodo: false);
                    }
                }
            }

            problemasDia1 = problemasDia[1];
            problemasDia2 = problemasDia[2];
            prob          = Models.Resultados.calcularNumeros(numero, tipoOlimpiada, totalProblemas: problemasDia1 + problemasDia2);
            prob.guardar(guardarTodo: false);

            // Guardar en la base
            this.guardarDatos();
        }