public WhereDecorator(ConsultaComponente componente, ConsultaComponente nuevoComponente) : base(componente, nuevoComponente) { }
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)); }
public ConsultaDecorator(ConsultaComponente comp, ConsultaComponente nuevoComp) { componente = comp; nuevoComponente = nuevoComp; }