/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { // Si la busqueda permite buscar solo activos e inactivos if ($subOperation == 'fetchJoined') { $sql = 'select pruebas_clasificacion_codigo,pruebas_clasificacion_descripcion,pruebas_tipo_codigo,pc.unidad_medida_codigo,um.unidad_medida_regex_e,um.unidad_medida_regex_m,um.unidad_medida_tipo,' . 'pc.activo,pc.xmin as "versionId" from tb_pruebas_clasificacion pc ' . 'inner join tb_unidad_medida um on um.unidad_medida_codigo=pc.unidad_medida_codigo '; } else { $sql = 'select pruebas_clasificacion_codigo,pruebas_clasificacion_descripcion,pruebas_tipo_codigo,unidad_medida_codigo,activo,xmin as "versionId" from tb_pruebas_clasificacion pc'; } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where pc.activo=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' and ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { // Si la busqueda permite buscar solo activos e inactivos $sql = 'SELECT paises_codigo,paises_descripcion,paises_entidad,paises_use_apm,paises_use_docid,regiones_codigo,activo,xmin AS "versionId" FROM tb_paises '; if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where "activo"=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' and ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('like', 'ilike', $sql); return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { // Si la busqueda permite buscar solo activos e inactivos $sql = 'select clubes_codigo,clubes_descripcion,clubes_persona_contacto,clubes_telefono_oficina,clubes_telefono_celular,clubes_email,clubes_direccion,clubes_web_url,activo,xmin as "versionId" from tb_clubes '; if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where "activo"=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' and ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('like', 'ilike', $sql); return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { // Si la busqueda permite buscar solo activos e inactivos // $sql = 'select usuario_perfil_id,usuarios_id,perfil_id,activo,xmin as "versionId"'; if ($subOperation == 'fetchFull') { $sql = 'select usuario_perfil_id,usuarios_id,up.perfil_id,up.activo,up.xmin as "versionId",sys_systemcode from tb_sys_usuario_perfiles up inner join tb_sys_perfil pr on pr.perfil_id = up.perfil_id '; } else { $sql = 'select usuario_perfil_id,usuarios_id,up.perfil_id,up.activo,up.xmin as "versionId" from tb_sys_usuario_perfiles up '; } /* if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where activo=TRUE '; } */ $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' where ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { // Si la busqueda permite buscar solo activos e inactivos $sql = 'select records_tipo_codigo,records_tipo_descripcion,records_tipo_abreviatura,records_tipo_tipo,records_tipo_clasificacion,' . 'records_tipo_peso,records_tipo_protected,activo,xmin as "versionId" from tb_records_tipo '; if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where "activo"=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' and ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('like', 'ilike', $sql); return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { // Si la busqueda permite buscar solo activos e inactivos $sql = 'select entrenadores_codigo,entrenadores_ap_paterno,entrenadores_ap_materno,entrenadores_nombres,entrenadores_nombre_completo,entrenadores_nivel_codigo,activo,xmin as "versionId" from tb_entrenadores '; if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where "activo"=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' and ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation == 'fetchJoined') { $sql = 'select entrenadoresatletas_id,entrenadores_codigo,eatl.atletas_codigo,atletas_nombre_completo,entrenadoresatletas_desde,entrenadoresatletas_hasta,eatl.activo,eatl.xmin as "versionId" from tb_entrenadores_atletas eatl ' . 'inner join tb_atletas atl on eatl.atletas_codigo = atl.atletas_codigo '; } else { $sql = 'select entrenadoresatletas_id,entrenadores_codigo,atletas_codigo,entrenadoresatletas_desde,entrenadoresatletas_hasta,activo,xmin as "versionId" from tb_entrenadores_atletas eatl'; } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where "eatl.activo"=TRUE '; } // Que pasa si el campo a buscar existe en ambas partes del join? $where = $constraints->getFilterFieldsAsString(); if ($this->activeSearchOnly == TRUE) { if (strlen($where) > 0) { $sql .= ' and ' . $where; } } else { $sql .= ' where ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation == 'fetchJoined') { $sql = 'select competencias_codigo,competencias_descripcion,comp.competencia_tipo_codigo,ct.competencia_tipo_descripcion,comp.categorias_codigo,cat.categorias_descripcion,' . 'comp.paises_codigo,pais.paises_descripcion,comp.ciudades_codigo,ciu.ciudades_descripcion,ciu.ciudades_altura,EXTRACT(YEAR FROM competencias_fecha_inicio) as agno,competencias_fecha_inicio,competencias_fecha_final,competencias_es_oficial,competencias_clasificacion,comp.activo,comp.xmin as "versionId" from tb_competencias comp ' . 'left join tb_competencia_tipo ct on ct.competencia_tipo_codigo = comp.competencia_tipo_codigo ' . 'left join tb_categorias cat on cat.categorias_codigo = comp.categorias_codigo ' . 'left join tb_paises pais on pais.paises_codigo = comp.paises_codigo ' . 'left join tb_ciudades ciu on ciu.ciudades_codigo = comp.ciudades_codigo '; } else { $sql = 'select competencias_codigo,competencias_descripcion,comp.competencia_tipo_codigo,comp.categorias_codigo,' . 'comp.paises_codigo,comp.ciudades_codigo,competencias_fecha_inicio,competencias_fecha_final,competencias_es_oficial,' . 'competencias_clasificacion,comp.activo,comp.xmin as "versionId" from tb_competencias comp'; } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where comp.activo=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' and ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('like', 'ilike', $sql); return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation == 'fetchJoined') { $sql = 'select ligasclubes_id,ligas_codigo,lc.clubes_codigo,clubes_descripcion,ligasclubes_desde,ligasclubes_hasta,lc.activo,lc.xmin as "versionId" from tb_ligas_clubes lc ' . 'inner join tb_clubes club on lc.clubes_codigo = club.clubes_codigo '; } else { $sql = 'select ligasclubes_id,ligas_codigo,clubes_codigo,ligasclubes_desde,ligasclubes_hasta,activo,xmin as "versionId" from tb_ligas_clubes lc '; } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where "lc.activo"=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if ($this->activeSearchOnly == TRUE) { if (strlen($where) > 0) { $sql .= ' and ' . $where; } } else { $sql .= ' where ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('like', 'ilike', $sql); return $sql; }
/** * @{inheritdoc} * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation == 'fetchJoined') { $sql = 'SELECT postas_detalle_id,postas_id,pd.atletas_codigo,atletas_nombre_completo,pd.activo,pd.xmin AS "versionId" ' . 'FROM tb_postas_detalle pd ' . 'inner join tb_atletas atl on atl.atletas_codigo = pd.atletas_codigo'; } else { $sql = 'SELECT postas_detalle_id,postas_id,atletas_codigo,activo,xmin AS "versionId" FROM tb_postas_detalle pd'; } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where pd.activo=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { if ($this->activeSearchOnly == TRUE) { $sql .= ' and ' . $where; } else { $sql .= ' where ' . $where; } } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('like', 'ilike', $sql); return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation == 'fetchJoined') { $sql = 'select eatl.competencias_pruebas_id,eatl.competencias_pruebas_origen_id,eatl.competencias_codigo,atletas_resultados_id,eatl.pruebas_codigo,competencias_pruebas_fecha,' . '(case when apppruebas_viento_individual = TRUE THEN ar.atletas_resultados_viento ELSE competencias_pruebas_viento END) as competencias_pruebas_viento,' . 'competencias_pruebas_manual,competencias_pruebas_tipo_serie,competencias_pruebas_nro_serie,' . 'competencias_pruebas_anemometro, competencias_pruebas_material_reglamentario, competencias_pruebas_origen_combinada, competencias_pruebas_observaciones, ' . 'coalesce(atletas_codigo,\'' . $constraints->getFilterField('atletas_codigo') . '\') as atletas_codigo,atletas_resultados_resultado,atletas_resultados_puntos,atletas_resultados_puesto,pr.pruebas_descripcion,apppruebas_marca_menor,' . 'apppruebas_marca_menor,apppruebas_verifica_viento,unidad_medida_regex_e,unidad_medida_tipo,unidad_medida_regex_m,' . 'eatl.activo,ar.xmin as "versionId" ' . 'from tb_competencias_pruebas eatl ' . 'left join tb_atletas_resultados ar on ar.competencias_pruebas_id = eatl.competencias_pruebas_id ' . 'inner join tb_pruebas pr on pr.pruebas_codigo =eatl.pruebas_codigo ' . 'inner join tb_app_pruebas_values pv on pv.apppruebas_codigo = pr.pruebas_generica_codigo ' . 'inner join tb_pruebas_clasificacion cl on cl.pruebas_clasificacion_codigo = pv.pruebas_clasificacion_codigo ' . 'inner join tb_unidad_medida um on um.unidad_medida_codigo = cl.unidad_medida_codigo '; // 'where competencias_pruebas_origen_id is not null and atletas_codigo=\'46658908\''; } else { if ($subOperation == 'fetchDetalleForPrueba') { $sql = 'select * from sp_view_prueba_resultados_detalle(' . $constraints->getFilterField('atletas_resultados_id') . ') '; $constraints->removeFilterField('atletas_resultados_id'); } else { $sql = 'select competencias_pruebas_id,atletas_resultados_id,atletas_codigo,competencias_codigo,' . '(case when apppruebas_viento_individual = TRUE THEN eatl.atletas_resultados_viento ELSE competencias_pruebas_viento END) as competencias_pruebas_viento,' . 'competencias_pruebas_manual,' . 'pruebas_codigo,competencias_pruebas_origen_combinada,competencias_pruebas_fecha,' . 'competencias_pruebas_tipo_serie,competencias_pruebas_nro_serie,' . 'competencias_pruebas_anemometro,competencias_pruebas_material_reglamentario,' . 'competencias_pruebas_observaciones,atletas_resultados_resultado,atletas_resultados_puntos,atletas_resultados_puesto,' . 'activo,xmin as "versionId" from tb_atletas_resultados eatl ' . 'inner join tb_competencias_pruebas cp on cp.competencias_pruebas_id = eatl.competencias_pruebas_id ' . 'inner join tb_pruebas pr on pr.pruebas_codigo =eatl.pruebas_codigo ' . 'inner join tb_app_pruebas_values pv on pv.apppruebas_codigo = pr.pruebas_generica_codigo '; } } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where eatl.activo=TRUE '; } // Que pasa si el campo a buscar existe en ambas partes del join? $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { if ($this->activeSearchOnly == TRUE) { $sql .= ' and ' . $where; } else { $sql .= ' where ' . $where; } } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('"atletas_resultados_id"', 'eatl.atletas_resultados_id', $sql); return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { // Si la busqueda permite buscar solo activos e inactivos $sql = 'select perfil_id,sys_systemcode,perfil_codigo,perfil_descripcion,activo,xmin as "versionId" from tb_sys_perfil'; if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where activo=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' and ' . $where; } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation == 'fetchJoined') { $sql = 'SELECT * FROM ( SELECT records_id, records_tipo_codigo, rec.atletas_resultados_id, rec.categorias_codigo, apppruebas_codigo, apppruebas_descripcion, (CASE WHEN eatl.postas_id IS NOT NULL THEN (SELECT array_to_string(ARRAY(SELECT unnest(array_agg(atl.atletas_codigo)) ORDER BY 1), \',\') FROM tb_postas_detalle pd INNER JOIN tb_postas po ON po.postas_id = pd.postas_id INNER JOIN tb_atletas atl ON atl.atletas_codigo = pd.atletas_codigo WHERE pd.postas_id = eatl.postas_id GROUP BY pd.postas_id) ELSE atl.atletas_codigo END) AS atletas_codigo, (CASE WHEN eatl.postas_id IS NOT NULL THEN (SELECT array_to_string(ARRAY(SELECT unnest(array_agg(atl.atletas_ap_paterno)) ORDER BY 1), \',\') FROM tb_postas_detalle pd INNER JOIN tb_postas po ON po.postas_id = pd.postas_id INNER JOIN tb_atletas atl ON atl.atletas_codigo = pd.atletas_codigo WHERE pd.postas_id = eatl.postas_id GROUP BY pd.postas_id) ELSE atletas_nombre_completo END ) AS atletas_nombre_completo, atl.atletas_sexo, fn_get_marca_normalizada_tonumber(fn_get_marca_normalizada_totext(atletas_resultados_resultado, um.unidad_medida_codigo, cp.competencias_pruebas_manual, pv.apppruebas_factor_manual), um.unidad_medida_codigo) AS numb_resultado, atletas_resultados_resultado, ciudades_altura, coalesce((CASE WHEN apppruebas_viento_individual = TRUE THEN eatl.atletas_resultados_viento ELSE competencias_pruebas_viento END),0.00) AS competencias_pruebas_viento, competencias_pruebas_fecha, co.competencias_descripcion || \' / \' || ciudades_descripcion || \' / \' || paises_descripcion AS lugar, --co.competencias_descripcion, --ciudades_descripcion, --paises_descripcion, eatl.postas_id, rec.activo, rec.xmin AS "versionId" FROM tb_records rec INNER JOIN tb_atletas_resultados eatl ON eatl.atletas_resultados_id = rec.atletas_resultados_id INNER JOIN tb_competencias_pruebas cp ON cp.competencias_pruebas_id = eatl.competencias_pruebas_id INNER JOIN tb_atletas atl ON eatl.atletas_codigo = atl.atletas_codigo INNER JOIN tb_pruebas pr ON pr.pruebas_codigo = cp.pruebas_codigo INNER JOIN tb_app_pruebas_values pv ON pv.apppruebas_codigo = pr.pruebas_generica_codigo INNER JOIN tb_competencias co ON co.competencias_codigo = cp.competencias_codigo INNER JOIN tb_ciudades ciu ON ciu.ciudades_codigo = co.ciudades_codigo INNER JOIN tb_paises pa ON pa.paises_codigo = ciu.paises_codigo INNER JOIN tb_pruebas_clasificacion cl ON cl.pruebas_clasificacion_codigo = pv.pruebas_clasificacion_codigo INNER JOIN tb_unidad_medida um ON um.unidad_medida_codigo = cl.unidad_medida_codigo ) rec'; } else { $sql = 'SELECT records_id,records_tipo_codigo,atletas_resultados_id,categorias_codigo,records_id_origen,records_protected,activo,xmin AS "versionId" FROM tb_records rec'; } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where "rec.activo"=TRUE '; } // Que pasa si el campo a buscar existe en ambas partes del join? $where = $constraints->getFilterFieldsAsString(); // echo $where; if ($this->activeSearchOnly == TRUE) { if (strlen($where) > 0) { $sql .= ' and ' . $where; } } else { if (strlen($where) > 0) { $sql .= ' where ' . $where; } } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('like', 'ilike', $sql); return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { /* @var $record CompetenciasPruebasModel */ if ($subOperation == 'fetchPruebasPorCompetencia') { // Aqui solo se devolveran las pruebas genericas que componen una competencia , por ende // se espera coo parametro el codigo de competencia, es similar a la anterior pero esperando diferente // parametro , las separa por comodidad. La lista solo contendra las pruebas ya actualmente // definidas como parte de la competencia $where = $constraints->getFilterFieldsAsString(); $sql = 'select cp.competencias_pruebas_id,cp.competencias_codigo, pr.pruebas_codigo, cp.competencias_pruebas_fecha,cp.competencias_pruebas_viento,cp.competencias_pruebas_manual, cp.competencias_pruebas_origen_combinada, cp.competencias_pruebas_tipo_serie,cp.competencias_pruebas_nro_serie,cp.competencias_pruebas_anemometro, cp.competencias_pruebas_material_reglamentario, cp.competencias_pruebas_observaciones, pr.pruebas_generica_codigo, pv.apppruebas_descripcion, pr.pruebas_descripcion || \' (\' || (case when pruebas_sexo = \'F\' then \'Damas\' else \'Varones\' end) || \')\' as pruebas_descripcion, pv.apppruebas_multiple, (case when cp.competencias_pruebas_tipo_serie IN (\'SU\',\'FI\') then cp.competencias_pruebas_tipo_serie else (cp.competencias_pruebas_tipo_serie || \'-\' || cp.competencias_pruebas_nro_serie) end) as serie, cp.competencias_pruebas_origen_id,pruebas_sexo,cp.xmin as "versionId" from tb_competencias_pruebas cp inner join tb_pruebas pr on pr.pruebas_codigo = cp.pruebas_codigo inner join tb_app_pruebas_values pv on pv.apppruebas_codigo = pr.pruebas_generica_codigo where ' . str_replace('"competencias_', 'cp."competencias_', $where) . 'order by pruebas_sexo,apppruebas_descripcion,cp.competencias_pruebas_tipo_serie,cp.competencias_pruebas_nro_serie'; } else { if ($subOperation == 'fetchCompetenciasResultadoPrueba') { // Devuelve los datos de una tleta para una especifica prueba , si la prueba es null retornara todos // sus resultados. $sql = 'select * from sp_view_resultados_competencia_especifica(\'' . $constraints->getFilterField('competencias_codigo') . '\',\'' . $constraints->getFilterField('pruebas_codigo') . '\',\'' . $constraints->getFilterField('pruebas_sexo') . '\',null,null) '; $constraints->removeFilterField('pruebas_codigo'); $constraints->removeFilterField('competencias_codigo'); $constraints->removeFilterField('pruebas_sexo'); // echo $sql; } else { if ($subOperation == 'fetchPruebasValidasForCompetencia') { // Lista de todas las competencias posibles de crear para una determinada competencia esten creadas o no, por la // posibilidad que se requiere crear series o grupos, Si una combinada es parte ya de la competencia , no // aparecera en esta lista, ya que no se puede definir 2 veces. // // El query busca todas las posibles pruebas para la categoria de la competencia , menos la combinadas ya definidasd // Devuelve informacion complemnetaria de las pruebas para su posible trabajo/validacion en el lado solicitante. $sql = 'select * from ( select pruebas_codigo,pruebas_descripcion || \' (\' || (case when pruebas_sexo = \'F\' then \'Damas\' else \'Varones\' end) || \')\' as pruebas_descripcion, pruebas_generica_codigo, pr.categorias_codigo, pruebas_sexo, pg.apppruebas_multiple, pg.apppruebas_verifica_viento, pg.apppruebas_descripcion, pg.apppruebas_viento_individual, pg.apppruebas_nro_atletas, unidad_medida_tipo, unidad_medida_regex_e, unidad_medida_regex_m, (SELECT competencias_pruebas_id FROM tb_competencias_pruebas where pruebas_codigo = (select pruebas_codigo from tb_pruebas_detalle where pruebas_detalle_prueba_codigo=pr.pruebas_codigo) and competencias_codigo=\'' . $constraints->getFilterField('competencias_codigo') . '\') as competencias_pruebas_origen_id from tb_pruebas pr inner join tb_app_pruebas_values pg on pg.apppruebas_codigo = pr.pruebas_generica_codigo inner join tb_pruebas_clasificacion pc on pc.pruebas_clasificacion_codigo = pg.pruebas_clasificacion_codigo inner join tb_unidad_medida um on um.unidad_medida_codigo = pc.unidad_medida_codigo where pr.categorias_codigo = (select categorias_codigo from tb_competencias where competencias_codigo=\'' . $constraints->getFilterField('competencias_codigo') . '\')) results '; $constraints->removeFilterField('competencias_codigo'); } else { $sql = 'select cp.competencias_pruebas_id,cp.competencias_codigo, cp.pruebas_codigo, cp.competencias_pruebas_fecha,cp.competencias_pruebas_viento,cp.competencias_pruebas_manual, cp.competencias_pruebas_origen_combinada, cp.competencias_pruebas_tipo_serie,cp.competencias_pruebas_nro_serie,cp.competencias_pruebas_anemometro, cp.competencias_pruebas_material_reglamentario, cp.competencias_pruebas_observaciones,cp.competencias_pruebas_origen_id, competencias_pruebas_origen_combinada, cp.xmin as "versionId" from tb_competencias_pruebas cp '; } } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where eatl.activo = TRUE '; } // Que pasa si el campo a buscar existe en ambas partes del join? $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { if ($this->activeSearchOnly == TRUE) { $sql .= ' and ' . $where; } else { $sql .= ' where ' . $where; } } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } } $sql = str_replace('like', 'ilike', $sql); // echo $sql; return $sql; }
/** * @see TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation == 'fetchForList') { // USamos un campo virtual que es atletas_agno el cual es computado , por ende se usa un select /// extermo para que el where lo pueda usar. $sql = 'select atletas_codigo ,atletas_nombre_completo,atletas_sexo,' . 'paises_codigo from tb_atletas a'; } else { if ($subOperation == 'fetchForListByPosta') { // USamos un campo virtual que es atletas_agno el cual es computado , por ende se usa un select /// extermo para que el where lo pueda usar. $atletas_codigo = $constraints->getFilterField('atletas_codigo'); if ($atletas_codigo) { $where = $constraints->getFilterFieldsAsString(); $sql = 'SELECT a.atletas_codigo, a.atletas_nombre_completo FROM tb_atletas a '; if (strlen($where) > 0) { $sql .= ' where ' . $where; } } else { $sql = 'SELECT a.atletas_codigo, a.atletas_nombre_completo FROM tb_atletas a WHERE atletas_sexo = (SELECT pr.pruebas_sexo FROM tb_postas ps INNER JOIN tb_competencias_pruebas cp ON cp.competencias_pruebas_id = ps.competencias_pruebas_id INNER JOIN tb_pruebas pr ON pr.pruebas_codigo = cp.pruebas_codigo WHERE ps.postas_id = ' . $constraints->getFilterField('postas_id') . ') '; $constraints->removeFilterField('postas_id'); $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' and ' . $where . ' and a.atletas_protected=FALSE '; } else { $sql .= 'and a.atletas_protected=FALSE '; } } } else { if ($subOperation == 'fetchForListByPrueba') { // USamos un campo virtual que es atletas_agno el cual es computado , por ende se usa un select /// extermo para que el where lo pueda usar. $sql = 'SELECT DISTINCT CASE WHEN ar.postas_id IS NULL THEN a.atletas_codigo ELSE pd.atletas_codigo END AS atletas_codigo, CASE WHEN ar.postas_id IS NOT NULL THEN (SELECT atletas_nombre_completo FROM tb_atletas WHERE atletas_codigo = pd.atletas_codigo) ELSE atletas_nombre_completo END AS atletas_nombre_completo FROM tb_atletas a INNER JOIN tb_atletas_resultados ar ON ar.atletas_codigo = a.atletas_codigo INNER JOIN tb_competencias_pruebas cp ON cp.competencias_pruebas_id = ar.competencias_pruebas_id INNER JOIN tb_pruebas pc ON pc.pruebas_codigo = cp.pruebas_codigo LEFT JOIN tb_postas po ON po.competencias_pruebas_id = cp.competencias_pruebas_id AND po.postas_id = ar.postas_id LEFT JOIN tb_postas_detalle pd ON pd.postas_id = ar.postas_id '; } else { if ($subOperation == 'fetchForListByPruebaGenerica') { $sql = 'SELECT DISTINCT -- IMPORTANTE , si es una posta dado que no existe un unico codigo de atleta -- lo simulamos con el concatenado ordenado de los codigos de los atletas de las postas. -- Si se desea ubicar a una posta DEBERA ENVIARSE el valor de atletas_resultados_id del resultado -- si no la respuesta sera incorrecta. (CASE WHEN ar.postas_id IS NOT NULL THEN (SELECT array_to_string(ARRAY(SELECT unnest(array_agg(atl.atletas_codigo)) ORDER BY 1), \',\') FROM tb_postas_detalle pd INNER JOIN tb_postas po ON po.postas_id = pd.postas_id INNER JOIN tb_atletas atl ON atl.atletas_codigo = pd.atletas_codigo WHERE pd.postas_id = ar.postas_id GROUP BY pd.postas_id) ELSE a.atletas_codigo END) AS atletas_codigo, (CASE WHEN ar.postas_id IS NOT NULL THEN (SELECT array_to_string(ARRAY(SELECT unnest(array_agg(atl.atletas_ap_paterno)) ORDER BY 1), \',\') FROM tb_postas_detalle pd INNER JOIN tb_postas po ON po.postas_id = pd.postas_id INNER JOIN tb_atletas atl ON atl.atletas_codigo = pd.atletas_codigo WHERE pd.postas_id = ar.postas_id GROUP BY pd.postas_id) ELSE atletas_nombre_completo END) AS atletas_nombre_completo FROM tb_atletas a INNER JOIN tb_atletas_resultados ar ON ar.atletas_codigo = a.atletas_codigo INNER JOIN tb_competencias_pruebas cp ON cp.competencias_pruebas_id = ar.competencias_pruebas_id INNER JOIN tb_pruebas pc ON pc.pruebas_codigo = cp.pruebas_codigo INNER JOIN tb_app_pruebas_values pv ON pv.apppruebas_codigo = pc.pruebas_generica_codigo'; } else { if ($subOperation == 'fetchForListForResultados') { $sql = 'SELECT * FROM (SELECT atletas_codigo ,atletas_nombre_completo,atletas_sexo,activo FROM tb_atletas WHERE atletas_protected != TRUE ) a'; } else { // USamos un campo virtual que es atletas_agno el cual es computado , por ende se usa un select /// extermo para que el where lo pueda usar. $sql = 'SELECT * FROM (SELECT atletas_codigo ,atletas_ap_paterno ,atletas_ap_materno,atletas_nombres,atletas_nombre_completo,atletas_sexo,' . 'atletas_nro_documento,atletas_nro_pasaporte,paises_codigo,atletas_fecha_nacimiento,EXTRACT(YEAR FROM atletas_fecha_nacimiento)::CHARACTER VARYING AS atletas_agno,atletas_telefono_casa,' . 'atletas_telefono_celular,atletas_email,atletas_direccion,atletas_observaciones,atletas_talla_ropa_buzo,atletas_talla_ropa_poloshort,atletas_talla_zapatillas,atletas_norma_zapatillas,' . 'atletas_url_foto,atletas_protected,activo,xmin AS "versionId" FROM tb_atletas WHERE atletas_protected != TRUE) a'; } } } } } if ($this->activeSearchOnly == TRUE) { // Solo activos if ($subOperation == 'fetchForListByPosta') { $sql .= ' and a.activo=TRUE '; } else { $sql .= ' where a.activo=TRUE '; } } if ($subOperation !== 'fetchForListByPosta') { $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { if ($this->activeSearchOnly == TRUE) { $sql .= ' and ' . $where; } else { $sql .= ' where ' . $where; } } } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } $sql = str_replace('"atletas_codigo"', 'a.atletas_codigo', $sql); // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('like', 'ilike', $sql); // echo $sql; return $sql; }
/** * @{inheritdoc} * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation === 'fetchJoinedWithNames') { $postas_id = $constraints->getFilterField('postas_id'); if ($postas_id) { $sql = 'SELECT * FROM ( SELECT po.postas_id,postas_descripcion,array_to_string(ARRAY(SELECT unnest(array_agg(atl.atletas_ap_paterno)) ORDER BY 1),\',\') AS postas_atletas FROM tb_postas po LEFT JOIN tb_postas_detalle pd ON pd.postas_id = po.postas_id LEFT JOIN tb_atletas atl ON atl.atletas_codigo = pd.atletas_codigo WHERE po.postas_id=' . $postas_id . ' GROUP BY po.postas_id ORDER BY postas_descripcion ) res'; $constraints->removeFilterField('postas_id'); } else { $sql = 'SELECT * FROM ( SELECT po.postas_id,postas_descripcion,array_to_string(ARRAY(SELECT unnest(array_agg(atl.atletas_ap_paterno)) ORDER BY 1),\',\') AS postas_atletas FROM tb_postas po LEFT JOIN tb_postas_detalle pd ON pd.postas_id = po.postas_id LEFT JOIN tb_atletas atl ON atl.atletas_codigo = pd.atletas_codigo WHERE po.competencias_pruebas_id=' . $constraints->getFilterField('competencias_pruebas_id') . ' GROUP BY po.postas_id ORDER BY postas_descripcion ) res'; $constraints->removeFilterField('competencias_pruebas_id'); } } else { $sql = 'SELECT postas_id,postas_descripcion,competencias_pruebas_id,activo,xmin AS "versionId" FROM tb_postas '; } if ($this->activeSearchOnly == TRUE && $subOperation != 'fetchJoinedWithNames') { // Solo activos $sql .= ' where activo=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { if ($this->activeSearchOnly == TRUE && $subOperation != 'fetchJoinedWithNames') { $sql .= ' and ' . $where; } else { $sql .= ' where ' . $where; } } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('like', 'ilike', $sql); //echo $sql; return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation == 'fetchJoined') { $sql = 'select pruebas_codigo,pruebas_descripcion,pruebas_generica_codigo,cla.pruebas_clasificacion_descripcion,pr.categorias_codigo,cat.categorias_descripcion,pruebas_sexo,' . 'pruebas_record_hasta,pruebas_anotaciones,pg.apppruebas_multiple,pruebas_protected,pr.activo,pr.xmin as "versionId" from tb_pruebas pr ' . 'inner join tb_categorias cat on pr.categorias_codigo = cat.categorias_codigo ' . 'inner join tb_app_pruebas_values pg on pg.apppruebas_codigo = pr.pruebas_generica_codigo ' . 'inner join tb_pruebas_clasificacion cla on pg.pruebas_clasificacion_codigo = cla.pruebas_clasificacion_codigo '; } else { if ($subOperation == 'fetchJoinedFull') { $sql = 'select pruebas_codigo,pruebas_descripcion,pruebas_sexo,pr.categorias_codigo,categorias_descripcion,pg.apppruebas_marca_menor,pg.apppruebas_marca_mayor,apppruebas_multiple,' . 'apppruebas_verifica_viento,unidad_medida_regex_e,unidad_medida_regex_m,unidad_medida_tipo,pc.unidad_medida_codigo,pr.activo,pr.xmin as "versionId" ' . ' from tb_pruebas pr ' . 'inner join tb_app_pruebas_values pg on pg.apppruebas_codigo= pr.pruebas_generica_codigo ' . 'inner join tb_pruebas_clasificacion pc on pc.pruebas_clasificacion_codigo = pg.pruebas_clasificacion_codigo ' . 'inner join tb_unidad_medida um on um.unidad_medida_codigo=pc.unidad_medida_codigo ' . 'inner join tb_categorias cat on cat.categorias_codigo = pr.categorias_codigo '; } else { $sql = 'select pruebas_codigo,pruebas_descripcion,pruebas_generica_codigo,categorias_codigo,pruebas_sexo,' . 'pruebas_record_hasta,pruebas_anotaciones,pruebas_protected,activo,xmin as "versionId" from tb_pruebas pr'; } } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where pr.activo=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { if ($this->activeSearchOnly == TRUE) { $sql .= ' and ' . $where; } else { $sql .= ' where ' . $where; } } // Para la sub operacion fetchJoinedFull acotamos que no se presenten la pruebas que pertenecen // a combinadas , ya que estan no pueden ser agregadas independientemente a un resultado. // Asi mismo no mostramos las postas ya que no se soporta operaciones sobre ellas en este DAO // eso debe hacerse por los resultados de competencias/pruebas. if ($subOperation == 'fetchJoinedFull') { // ya existe where if (strpos($sql, 'where') !== false) { $sql = str_replace('where', 'where apppruebas_nro_atletas <= 1 and pr.pruebas_codigo not in (select pruebas_detalle_prueba_codigo from tb_pruebas_detalle) and ', $sql); } else { $sql .= ' where apppruebas_nro_atletas <= 1 and pr.pruebas_codigo not in (select pruebas_detalle_prueba_codigo from tb_pruebas_detalle)'; } } // echo $sql; if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('"categorias_codigo"', 'pr.categorias_codigo', $sql); $sql = str_replace('like', 'ilike', $sql); return $sql; }
/** * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { if ($subOperation == 'fetchJoined') { $sql = 'SELECT atletas_resultados_id, ar.competencias_pruebas_id, ar.atletas_codigo, atletas_nombre_completo, atletas_resultados_resultado, atletas_resultados_puntos, atletas_resultados_puesto, atletas_resultados_viento, ar.postas_id, (CASE WHEN ar.postas_id IS NOT NULL THEN (SELECT max(postas_descripcion) || \' - \' || array_to_string(ARRAY(SELECT unnest(array_agg(atl.atletas_ap_paterno)) ORDER BY 1), \',\') FROM tb_postas_detalle pd INNER JOIN tb_postas po ON po.postas_id = pd.postas_id INNER JOIN tb_atletas atl ON atl.atletas_codigo = pd.atletas_codigo WHERE pd.postas_id = ar.postas_id GROUP BY pd.postas_id) ELSE NULL END ) AS postas_atletas, ar.activo, ar.xmin AS "versionId" FROM tb_atletas_resultados ar INNER JOIN tb_atletas AT ON AT.atletas_codigo = ar.atletas_codigo '; } else { $sql = 'select atletas_resultados_id,atletas_codigo,competencias_pruebas_id,atletas_resultados_resultado,atletas_resultados_puesto,atletas_resultados_puntos' . ',atletas_resultados_viento,atletas_resultados_protected,' . 'activo,xmin as "versionId" from tb_atletas_resultados'; } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where ar.activo=TRUE '; } // Que pasa si el campo a buscar existe en ambas partes del join? $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { if ($this->activeSearchOnly == TRUE) { $sql .= ' and ' . $where; } else { $sql .= ' where ' . $where; } } if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } $sql = str_replace('"competencias_pruebas_id"', 'ar.competencias_pruebas_id', $sql); // echo $sql; return $sql; }
/** * HAce un fetch a todos los registros de 2 manera la normal y la fetchWithAccess , esta segunda * hace un join al menu para determinar los accesos permitidos , es basicamente para uso del GUI * al definir los perfiles. * * @see \TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { $sql = 'select perfdet_id,perfil_id,perfdet_accessdef,perfdet_accleer,perfdet_accagregar,perfdet_accactualizar,perfdet_acceliminar,' . 'perfdet_accimprimir,pd.activo,pd.xmin as "versionId" '; if ($subOperation === 'fetchWithAccess') { $sql .= ',pd.menu_id,menu_accesstype ,menu_descripcion,menu_parent_id,menu_orden from tb_sys_perfil_detalle pd '; $sql .= 'left join tb_sys_menu m on m.menu_id = pd.menu_id '; } else { $sql .= ' from tb_sys_perfil_detalle pd '; } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where pd.activo=TRUE '; } $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { $sql .= ' and ' . $where; } // Si la solicitud es la lista preparada con join para basicamente el GUI // el orden siempre sera menu_orden if ($subOperation === 'fetchWithAccess') { $sql .= ' order by menu_orden'; } else { if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } return $sql; }
/** * @see TSLBasicRecordDAO::getFetchQuery() */ protected function getFetchQuery(\TSLDataModel &$record = NULL, \TSLRequestConstraints &$constraints = NULL, $subOperation = NULL) { /* @var $record AtletasPruebasResultadosModel */ // Las 2 primeras operaciones no requieren proceso alguno de parametors fuera del modelo, como filtros , limites ,etc if ($subOperation == 'fetchPruebasPorAtleta') { // Aqui solo se devolveran en que pruebas genericas ha participado historicamente el atleta especificado, se espera el codigo de atleta como parametro $atletas_codigo = $constraints->getFilterField('atletas_codigo'); $sql = 'SELECT DISTINCT pv.apppruebas_codigo,pv.apppruebas_descripcion FROM tb_atletas_resultados ar INNER JOIN tb_competencias_pruebas cp ON cp.competencias_pruebas_id = ar.competencias_pruebas_id INNER JOIN tb_pruebas pr ON pr.pruebas_codigo = cp.pruebas_codigo INNER JOIN tb_app_pruebas_values pv ON pv.apppruebas_codigo = pr.pruebas_generica_codigo WHERE ar.atletas_codigo = \'' . $atletas_codigo . '\'' . 'UNION ALL SELECT DISTINCT pv.apppruebas_codigo,pv.apppruebas_descripcion FROM tb_postas_detalle pd INNER JOIN tb_postas po ON po.postas_id = pd.postas_id INNER JOIN tb_competencias_pruebas cp ON cp.competencias_pruebas_id = po.competencias_pruebas_id INNER JOIN tb_atletas_resultados ar on ar.competencias_pruebas_id = cp.competencias_pruebas_id INNER JOIN tb_pruebas pr ON pr.pruebas_codigo = cp.pruebas_codigo INNER JOIN tb_app_pruebas_values pv ON pv.apppruebas_codigo = pr.pruebas_generica_codigo WHERE pd.atletas_codigo = \'' . $atletas_codigo . '\'' . ' ORDER BY apppruebas_descripcion'; $constraints->removeFilterField('atletas_codigo'); } else { if ($subOperation == 'fetchPruebasPorCompetencia') { // Aqui solo se devolveran las pruebas genericas que componen una competencia , por ende // se espera coo parametro el codigo de competencia, es similar a la anterior pero esperando diferente // parametro , las separa por comodidad. $where = $constraints->getFilterFieldsAsString(); $sql = 'SELECT DISTINCT pv.apppruebas_codigo,pv.apppruebas_descripcion FROM tb_atletas_resultados ar ' . 'INNER JOIN tb_competencias_pruebas cp ON cp.competencias_pruebas_id = ar.competencias_pruebas_id ' . 'INNER JOIN tb_pruebas pr ON pr.pruebas_codigo = cp.pruebas_codigo ' . 'INNER JOIN tb_app_pruebas_values pv ON pv.apppruebas_codigo = pr.pruebas_generica_codigo ' . 'WHERE' . $where . 'order BY apppruebas_descripcion'; } else { if ($subOperation == 'fetchForRecords') { // Aqui solo se devolveran las pruebas genericas de uno o mas atletas , se espera como filto un atleta y // una prueba para una seleccion afinada. Se retiran las pruebas con viento ilegal $atletas_codigo = $constraints->getFilterField('atletas_codigo'); $apppruebas_codigo = $constraints->getFilterField('apppruebas_codigo'); $constraints->removeFilterField('atletas_codigo'); $constraints->removeFilterField('apppruebas_codigo'); $sql = 'SELECT * FROM (SELECT atletas_resultados_id, (CASE WHEN eatl.postas_id IS NOT NULL THEN (SELECT array_to_string(ARRAY(SELECT unnest(array_agg(atl.atletas_codigo)) ORDER BY 1), \',\') FROM tb_postas_detalle pd INNER JOIN tb_postas po ON po.postas_id = pd.postas_id INNER JOIN tb_atletas atl ON atl.atletas_codigo = pd.atletas_codigo WHERE pd.postas_id = eatl.postas_id GROUP BY pd.postas_id) ELSE atl.atletas_codigo END) AS atletas_codigo, apppruebas_codigo, (CASE WHEN coalesce((CASE WHEN apppruebas_viento_individual = TRUE THEN eatl.atletas_resultados_viento ELSE competencias_pruebas_viento END), 0.00) > apppruebas_viento_limite_normal THEN -10000.00 ELSE coalesce((CASE WHEN apppruebas_viento_individual = TRUE THEN eatl.atletas_resultados_viento ELSE competencias_pruebas_viento END), 0.00) END) AS competencias_pruebas_viento, co.categorias_codigo, co.competencias_descripcion, ciudades_descripcion, paises_descripcion, ciudades_altura, competencias_pruebas_fecha, atletas_resultados_resultado AS numb_resultado FROM tb_atletas_resultados eatl INNER JOIN tb_competencias_pruebas cp ON cp.competencias_pruebas_id = eatl.competencias_pruebas_id INNER JOIN tb_atletas atl ON eatl.atletas_codigo = atl.atletas_codigo INNER JOIN tb_pruebas pr ON pr.pruebas_codigo = cp.pruebas_codigo INNER JOIN tb_app_pruebas_values pv ON pv.apppruebas_codigo = pr.pruebas_generica_codigo INNER JOIN tb_competencias co ON co.competencias_codigo = cp.competencias_codigo INNER JOIN tb_ciudades ciu ON ciu.ciudades_codigo = co.ciudades_codigo INNER JOIN tb_paises pa ON pa.paises_codigo = ciu.paises_codigo INNER JOIN tb_pruebas_clasificacion cl ON cl.pruebas_clasificacion_codigo = pv.pruebas_clasificacion_codigo INNER JOIN tb_unidad_medida um ON um.unidad_medida_codigo = cl.unidad_medida_codigo where apppruebas_codigo=\'' . $apppruebas_codigo . '\' and competencias_pruebas_anemometro = TRUE AND competencias_pruebas_material_reglamentario = TRUE AND -- competencias_pruebas_manual = false and atletas_resultados_resultado != \'0\' AND atletas_resultados_resultado IS NOT NULL AND atletas_resultados_resultado <> \'\' ) res WHERE res.competencias_pruebas_viento != -10000.00 AND atletas_codigo = \'' . $atletas_codigo . '\' ' . 'ORDER BY competencias_pruebas_fecha'; } else { if ($subOperation == 'fetchJoined') { $sql = 'SELECT * FROM (' . 'SELECT atletas_resultados_id, cp.pruebas_codigo, eatl.atletas_codigo, -- Esto para resolver los casos de postas (CASE WHEN eatl.postas_id IS NOT NULL THEN (SELECT max(postas_descripcion) || \' - \' || array_to_string(ARRAY(SELECT unnest(array_agg(atl.atletas_ap_paterno)) ORDER BY 1), \',\') FROM tb_postas_detalle pd INNER JOIN tb_postas po ON po.postas_id = pd.postas_id INNER JOIN tb_atletas atl ON atl.atletas_codigo = pd.atletas_codigo WHERE pd.postas_id = eatl.postas_id GROUP BY pd.postas_id) ELSE atletas_nombre_completo END ) AS atletas_nombre_completo, pr.pruebas_descripcion, cp.competencias_pruebas_tipo_serie, cp.competencias_pruebas_nro_serie, cp.competencias_codigo, (CASE WHEN apppruebas_viento_individual = TRUE THEN eatl.atletas_resultados_viento ELSE competencias_pruebas_viento END) AS competencias_pruebas_viento, atletas_resultados_puesto, competencias_pruebas_manual, apppruebas_multiple, co.categorias_codigo, competencias_pruebas_material_reglamentario, competencias_pruebas_anemometro, co.competencias_descripcion, ciudades_descripcion, paises_descripcion, atl.atletas_sexo, ciudades_altura, competencias_pruebas_observaciones, atletas_resultados_protected, competencias_pruebas_fecha, atletas_resultados_resultado, atletas_resultados_puntos, (CASE WHEN competencias_pruebas_tipo_serie IN (\'SU\', \'FI\') THEN competencias_pruebas_tipo_serie ELSE (competencias_pruebas_tipo_serie || \'-\' || competencias_pruebas_nro_serie) END) AS serie, (CASE WHEN competencias_pruebas_material_reglamentario = FALSE OR competencias_pruebas_anemometro = FALSE OR competencias_pruebas_manual = TRUE OR ciudades_altura = TRUE THEN TRUE ELSE FALSE END) AS obs, eatl.competencias_pruebas_id, eatl.postas_id, eatl.activo, eatl.xmin AS "versionId" FROM tb_atletas_resultados eatl INNER JOIN tb_competencias_pruebas cp ON cp.competencias_pruebas_id = eatl.competencias_pruebas_id INNER JOIN tb_atletas atl ON eatl.atletas_codigo = atl.atletas_codigo INNER JOIN tb_pruebas pr ON pr.pruebas_codigo = cp.pruebas_codigo INNER JOIN tb_app_pruebas_values pv ON pv.apppruebas_codigo = pr.pruebas_generica_codigo INNER JOIN tb_competencias co ON co.competencias_codigo = cp.competencias_codigo INNER JOIN tb_ciudades ciu ON ciu.ciudades_codigo = co.ciudades_codigo INNER JOIN tb_paises pa ON pa.paises_codigo = ciu.paises_codigo WHERE competencias_pruebas_origen_combinada = FALSE' . ' ) answer '; } else { if ($subOperation == 'fetchAtletasResultadoPrueba') { // Devuelve los datos de una tleta para una especifica prueba , si la prueba es null retornara todos // sus resultados. $sql = 'SELECT * FROM sp_view_resultados_atleta(\'' . $constraints->getFilterField('atletas_codigo') . '\',\'' . $constraints->getFilterField('apppruebas_codigo') . '\',NULL,NULL) '; $constraints->removeFilterField('apppruebas_codigo'); $constraints->removeFilterField('atletas_codigo'); } else { $sql = 'select atletas_resultados_id, atletas_codigo, competencias_codigo, pruebas_codigo,' . 'atletas_resultados_viento, atletas_resultados_puesto, atletas_resultados_manual,' . 'competencias_pruebas_fecha, competencias_pruebas_viento,' . 'competencias_pruebas_tipo_serie, competencias_pruebas_nro_serie, competencias_pruebas_anemometro,' . 'competencias_pruebas_material_reglamentario, competencias_pruebas_manual, competencias_pruebas_observaciones,' . 'atletas_resultados_resultado, atletas_resultados_puntos, ' . 'atletas_resultados_puesto, activo, xmin as "versionId" from tb_atletas_resultados eatl ' . 'inner join tb_competencias_pruebas cp on cp.competencias_pruebas_id = eatl.competencias_pruebas_id ' . 'inner join tb_pruebas pr on pr.pruebas_codigo = cp.pruebas_codigo ' . 'inner join tb_app_pruebas_values pv on pv.apppruebas_codigo = pr.pruebas_generica_codigo '; } } if ($this->activeSearchOnly == TRUE) { // Solo activos $sql .= ' where eatl.activo = TRUE '; } // Que pasa si el campo a buscar existe en ambas partes del join? $where = $constraints->getFilterFieldsAsString(); if (strlen($where) > 0) { if ($this->activeSearchOnly == TRUE) { $sql .= ' and ' . $where; } else { $sql .= ' where ' . $where; } } // TRUCO: dado que en pantalla se muestra e resultado para formato visual , ese // campo no puede ser usado para el sort , en este caso se cambia por el real // uniformizado. (norm_resultado) // Asi mismo para el fetch principal de todas las pruebas , retiramos de la pantalla principal aquellas // que son parte de una prueba combinada, ya que estas se editaran a traves de las mismas. if ($subOperation == 'fetchAtletasResultadoPrueba') { $sql = str_replace('atletas_resultados_resultado', 'norm_resultado', $sql); } // order by? if (isset($constraints)) { $orderby = $constraints->getSortFieldsAsString(); if ($orderby !== NULL) { $sql .= ' order by ' . $orderby; } } // Chequeamos paginacion $startRow = $constraints->getStartRow(); $endRow = $constraints->getEndRow(); if ($endRow > $startRow) { $sql .= ' LIMIT ' . ($endRow - $startRow) . ' OFFSET ' . $startRow; } } } } $sql = str_replace('like', 'ilike', $sql); // echo $sql; return $sql; }