private void cargarDistritos()
        {
            if (lbxCanton.Items.Count == 1)
            {
                //ResultadoTablas cant = (ResultadoTablas)cantones.Resultados.ElementAt(cbxCanton.SelectedIndex);
                ResultadoTablas cant = getElement(cantones, lbxCanton.Items[0].ToString());

                DTO dto = controlador.consultarDistritos(provinciaSeleccionada.Codigo.ToString(), cant.Codigo.ToString());
                distritos = dto.Resultados;

                ResultadoTablas obs;

                for (Iterator iter = dto.Resultados.getIterador(); iter.hasNext();)
                {
                    obs = (ResultadoTablas)iter.next();
                    cbxDistrito.Items.Add(obs.Nombre);
                }
            }
            else
            {
                //limpia los distritos
                cbxDistrito.Text = "";
                cbxDistrito.Items.Clear();
                lbxDistrito.Items.Clear();
                dtoConsultaDinamica.Distritos = null;
            }
        }
        public List <IResultado> consultarEdadQ(object obj)
        {
            string selectStatement           = (string)obj;
            List <ResultadoTablas> resultado = new List <ResultadoTablas>();

            SqlCommand cmd = new SqlCommand();

            cmd.CommandType = System.Data.CommandType.Text;
            cmd.Connection  = conexionSQL;
            cmd.CommandText = selectStatement;

            try
            {
                conexionSQL.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    ResultadoTablas tabla = new ResultadoTablas();
                    tabla.Codigo = 0;
                    tabla.Nombre = reader[0].ToString();

                    resultado.Add(tabla);
                }
                conexionSQL.Close();
                return(resultado.Cast <IResultado>().ToList());
            }
            catch (SqlException e)
            {
                return(null);
            }
        }
        public DTO consultarDinamica(object obj)
        {
            if (obj is DTO)
            {
                List <string> querys     = new List <string>();
                List <int>    cantidades = new List <int>();
                List <ResultadoConsultaDinamica> resultados = new List <ResultadoConsultaDinamica>();

                DTO entrada = (DTO)obj;
                DTO salida  = new DTO();

                //copia el DTO de la entrada
                DTO dtoGenerable = entrada.DeepCopy();

                //si tiene distritos, entonces se hace un query para cada uno de esos
                if (entrada.Distritos != null && entrada.Distritos.Count != 0)
                {
                    foreach (ResultadoTablas rt in entrada.Distritos)
                    {
                        dtoGenerable.Distritos = new List <ResultadoTablas>();
                        dtoGenerable.Distritos.Add(rt);

                        string consultaGenerada = generarConsulta(dtoGenerable);
                        querys.Add(consultaGenerada);
                        cantidades.Add(daoBD.consultarCantidad(consultaGenerada));
                    }

                    ResultadoTablas provincia = entrada.Provincias.ElementAt(0);
                    ResultadoTablas canton    = entrada.Cantones.ElementAt(0);
                    for (int i = 0; i < entrada.Distritos.Count; i++)
                    {
                        ResultadoTablas distrito = entrada.Distritos.ElementAt(i);

                        ResultadoConsultaDinamica result = (ResultadoConsultaDinamica)daoBD.consultarCoordenadas(provincia.Codigo.ToString(),
                                                                                                                 canton.Codigo.ToString(), distrito.Codigo.ToString());

                        result.Provincia = provincia.Nombre;
                        result.Canton    = canton.Nombre;
                        result.Distrito  = distrito.Nombre;
                        result.Cantidad  = cantidades.ElementAt(i);

                        resultados.Add(result);
                    }
                }
                //si tiene cantones, entonces se hace un query para cada uno de esos
                else if (entrada.Cantones != null && entrada.Cantones.Count != 0)
                {
                    foreach (ResultadoTablas rt in entrada.Cantones)
                    {
                        dtoGenerable.Cantones = new List <ResultadoTablas>();
                        dtoGenerable.Cantones.Add(rt);

                        string consultaGenerada = generarConsulta(dtoGenerable);
                        querys.Add(consultaGenerada);
                        cantidades.Add(daoBD.consultarCantidad(consultaGenerada));
                    }

                    ResultadoTablas provincia = entrada.Provincias.ElementAt(0);
                    for (int i = 0; i < entrada.Cantones.Count; i++)
                    {
                        ResultadoTablas canton = entrada.Cantones.ElementAt(i);

                        ResultadoConsultaDinamica result = (ResultadoConsultaDinamica)daoBD.consultarCoordenadas(provincia.Codigo.ToString(),
                                                                                                                 canton.Codigo.ToString(), "01");

                        result.Provincia = provincia.Nombre;
                        result.Canton    = canton.Nombre;
                        result.Distrito  = null;
                        result.Cantidad  = cantidades.ElementAt(i);

                        resultados.Add(result);
                    }
                }
                //si tiene provincias, entonces se hace un query para cada uno de esos
                else if (entrada.Provincias != null && entrada.Provincias.Count != 0)
                {
                    foreach (ResultadoTablas rt in entrada.Provincias)
                    {
                        dtoGenerable.Provincias = new List <ResultadoTablas>();
                        dtoGenerable.Provincias.Add(rt);

                        string consultaGenerada = generarConsulta(dtoGenerable);
                        querys.Add(consultaGenerada);
                        cantidades.Add(daoBD.consultarCantidad(consultaGenerada));
                    }

                    for (int i = 0; i < entrada.Provincias.Count; i++)
                    {
                        ResultadoTablas provincia = entrada.Provincias.ElementAt(i);

                        ResultadoConsultaDinamica result = (ResultadoConsultaDinamica)daoBD.consultarCoordenadas(provincia.Codigo.ToString(), "01", "01");

                        result.Provincia = provincia.Nombre;
                        result.Canton    = null;
                        result.Distrito  = null;
                        result.Cantidad  = cantidades.ElementAt(i);

                        resultados.Add(result);
                    }
                }
                //se hace a nivel general del país
                else
                {
                    dtoGenerable.Provincias = dtoGenerable.Cantones = dtoGenerable.Distritos = null;

                    string consultaGenerada = generarConsulta(dtoGenerable);
                    querys.Add(consultaGenerada);
                    int cantidad = daoBD.consultarCantidad(consultaGenerada);
                    cantidades.Add(cantidad);

                    ResultadoConsultaDinamica result = (ResultadoConsultaDinamica)daoBD.consultarCoordenadas("1", "01", "01");

                    result.Provincia = "País";
                    result.Canton    = null;
                    result.Distrito  = null;
                    result.Cantidad  = cantidad;

                    resultados.Add(result);
                }

                //return querys;
                //return cantidades;
                salida.Resultados = new ResultadosConsulta(resultados.Cast <IResultado>().ToList());
                return(salida);
            }

            return(null);
        }
        public string generarConsulta(DTO dto)
        {
            //El "encabezado" SIEMPRE es el mismo
            string encabezado = "select count(r.identificador) " +
                                "from registros r " +
                                "join distritos d on r.id_provincia = d.id_provincia and r.id_canton = d.id_canton and r.id_distrito = d.id_distrito " +
                                "join personas p on r.identificador = p.identificador where ";

            IndicadorEnum.TipoIndicador tipoIndicador;
            ResultadoTablas             resultado;
            ConsultaComponente          consulta = null;
            ConsultaComponente          nuevaConsulta;

            if (dto.Provincias != null && dto.Provincias.Count != 0)
            {
                foreach (ResultadoTablas prov in dto.Provincias)
                {
                    tipoIndicador = IndicadorEnum.TipoIndicador.Provincia;

                    if (consulta == null)
                    {
                        consulta = new Indicador(tipoIndicador, prov);
                        consulta = new WhereDecorator(null, consulta);
                    }
                    else
                    {
                        nuevaConsulta = new Indicador(tipoIndicador, prov);
                        consulta      = new WhereDecorator(consulta, nuevaConsulta);
                    }
                }
            }

            if (dto.Cantones != null && dto.Cantones.Count != 0)
            {
                foreach (ResultadoTablas cant in dto.Cantones)
                {
                    tipoIndicador = IndicadorEnum.TipoIndicador.Canton;

                    //si llega a este caso la consulta nunca va a ser null
                    nuevaConsulta = new Indicador(tipoIndicador, cant);
                    consulta      = new WhereDecorator(consulta, nuevaConsulta);
                }
            }

            if (dto.Distritos != null && dto.Distritos.Count != 0)
            {
                foreach (ResultadoTablas dist in dto.Distritos)
                {
                    tipoIndicador = IndicadorEnum.TipoIndicador.Distrito;

                    //si llega a este caso la consulta nunca va a ser null
                    nuevaConsulta = new Indicador(tipoIndicador, dist);
                    consulta      = new WhereDecorator(consulta, nuevaConsulta);
                }
            }

            if (dto.TipoAfectado != null)
            {
                tipoIndicador = IndicadorEnum.TipoIndicador.TipoAfectado;

                if (consulta == null)
                {
                    consulta = new Indicador(tipoIndicador, dto.TipoAfectado);
                    consulta = new WhereDecorator(null, consulta);
                }
                else
                {
                    nuevaConsulta = new Indicador(tipoIndicador, dto.TipoAfectado);
                    consulta      = new WhereDecorator(consulta, nuevaConsulta);
                }
            }

            if (dto.Sexo != null)
            {
                tipoIndicador = IndicadorEnum.TipoIndicador.Sexo;
                resultado     = new ResultadoTablas(-1, dto.Sexo);

                if (consulta == null)
                {
                    consulta = new Indicador(tipoIndicador, resultado);
                    consulta = new WhereDecorator(null, consulta);
                }
                else
                {
                    nuevaConsulta = new Indicador(tipoIndicador, resultado);
                    consulta      = new WhereDecorator(consulta, nuevaConsulta);
                }
            }

            if (dto.TipoLesion != null)
            {
                tipoIndicador = IndicadorEnum.TipoIndicador.TipoLesion;

                if (consulta == null)
                {
                    consulta = new Indicador(tipoIndicador, dto.TipoLesion);
                    consulta = new WhereDecorator(null, consulta);
                }
                else
                {
                    nuevaConsulta = new Indicador(tipoIndicador, dto.TipoLesion);
                    consulta      = new WhereDecorator(consulta, nuevaConsulta);
                }
            }

            if (dto.Annos != null && dto.Annos.Count != 0)
            {
                foreach (int anno in dto.Annos)
                {
                    tipoIndicador = IndicadorEnum.TipoIndicador.Anno;
                    resultado     = new ResultadoTablas(anno, "");

                    if (consulta == null)
                    {
                        consulta = new Indicador(tipoIndicador, resultado);
                        consulta = new WhereDecorator(null, consulta);
                    }
                    else
                    {
                        nuevaConsulta = new Indicador(tipoIndicador, resultado);
                        consulta      = new WhereDecorator(consulta, nuevaConsulta);
                    }
                }
            }

            if (dto.EdadQuinquenal != null)
            {
                tipoIndicador = IndicadorEnum.TipoIndicador.EdadQuinquenal;
                resultado     = new ResultadoTablas(-1, dto.EdadQuinquenal);

                if (consulta == null)
                {
                    consulta = new Indicador(tipoIndicador, resultado);
                    consulta = new WhereDecorator(null, consulta);
                }
                else
                {
                    nuevaConsulta = new Indicador(tipoIndicador, resultado);
                    consulta      = new WhereDecorator(consulta, nuevaConsulta);
                }
            }

            //si al llegar aquí sigue siendo null es porque no seleccionaron nada
            if (consulta == null)
            {
                //quita el where
                return(encabezado.Substring(0, encabezado.Length - 7));
            }

            string where = consulta.definirWhere();
            //quita el último and
            return(encabezado + where.Substring(0, where.Length - 5));
        }
示例#5
0
 public Indicador(IndicadorEnum.TipoIndicador tipo, IResultado resultado)
 {
     tipoIndicador     = tipo;
     resultadoConsulta = (ResultadoTablas)resultado;
 }