src.where.setea_filtro_rango - gamboamartin/where GitHub Wiki

setea_filtro_rango

La función setea_filtro_rango es una función privada que se utiliza para construir una cláusula SQL combinando un filtro de rango existente con una nueva condición. La función asegura que, si el filtro de rango ya contiene información, la nueva condición no esté vacía. Además, agrega condicionalmente un operador AND si el filtro de rango ya tiene contenido.

Signatura

private function setea_filtro_rango(string $condicion, string $filtro_rango_sql):array|string

Parámetros

  • string $condicion:
    La nueva condición SQL que se desea agregar al filtro de rango existente. Esta cadena se limpia de espacios en blanco antes de ser procesada.

  • string $filtro_rango_sql:
    La cadena SQL que representa el filtro de rango existente. Esta cadena también se limpia de espacios en blanco antes de ser procesada.

Retorna

  • array|string:
    Retorna una cadena que representa la cláusula SQL combinada. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Limpieza de las cadenas de entrada:

    • La función elimina los espacios en blanco al inicio y al final de las cadenas $filtro_rango_sql y $condicion utilizando trim().
  2. Validación de la condición cuando el filtro de rango tiene contenido:

    • Si $filtro_rango_sql no está vacío y $condicion está vacía, la función genera un mensaje de error y retorna un array con el mensaje de error.
  3. Generación del operador AND si es necesario:

    • La función llama a and_filtro_fecha() para obtener la cadena AND si $filtro_rango_sql no está vacío.
    • Si ocurre un error durante este proceso, se genera un mensaje de error y se retorna un array con el mensaje de error.
  4. Combinación del filtro de rango y la nueva condición:

    • La función concatena $filtro_rango_sql con la cadena AND y la nueva $condicion para formar la cláusula SQL final.
  5. Retorno de la cláusula SQL combinada:

    • La función retorna la cadena $filtro_rango_sql que representa la cláusula SQL combinada.

Ejemplos

$filtro_rango_sql = "fecha >= '2023-01-01'";
$condicion = "fecha <= '2023-12-31'";
$resultado = $this->setea_filtro_rango($condicion, $filtro_rango_sql);

// Resultado esperado:
// "fecha >= '2023-01-01' AND fecha <= '2023-12-31'"
// Un array de error si ocurre algún problema.

Código de la Función

private function setea_filtro_rango(string $condicion, string $filtro_rango_sql):array|string
    {
        $filtro_rango_sql = trim($filtro_rango_sql);
        $condicion = trim($condicion);

        if(trim($filtro_rango_sql) !=='' && trim($condicion) === ''){

            return  $this->error->error(mensaje: 'Error if filtro_rango tiene info $condicion no puede venir vacio',
                data: $filtro_rango_sql, es_final: true);
        }

        $and = $this->and_filtro_fecha(txt: $filtro_rango_sql);
        if(errores::$error){
            return $this->error->error(mensaje:'error al integrar and ',data: $and);
        }


        $filtro_rango_sql.= $and.$condicion;

        return $filtro_rango_sql;
    }