src.where.genera_sql_filtro_fecha - gamboamartin/where GitHub Wiki

genera_sql_filtro_fecha

La función genera_sql_filtro_fecha es una función privada que genera una cláusula SQL para filtrar por un rango de fechas. La función valida el filtro de fechas, genera los datos necesarios, y construye la cláusula SQL utilizando un operador AND para unirla con otras posibles condiciones de la consulta.

Signatura


private function genera_sql_filtro_fecha(array $fil_fecha, string $filtro_fecha_sql): array|string

Parámetros

  • array $fil_fecha:
    Un array asociativo que debe contener las claves campo_1, campo_2, y fecha. La clave fecha debe estar asociada a una fecha válida.

  • string $filtro_fecha_sql:
    Un string que contiene la parte de la consulta SQL relacionada con otros posibles filtros de fecha. Este valor será utilizado para concatenar el nuevo filtro de fecha con un operador AND.

Retorna

  • array|string:
    Retorna una cláusula SQL como una cadena si la validación es exitosa. En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Validación del filtro de fecha:

    • La función llama a valida_data_filtro_fecha() para validar que el array $fil_fecha contenga las claves requeridas y que la fecha sea válida.
    • Si la validación falla, se genera un mensaje de error y se retorna un array con el mensaje de error.
  2. Generación de los datos del filtro de fecha:

    • La función llama a data_filtro_fecha() para extraer los datos del filtro de fecha y generar un objeto con las propiedades campo_1, campo_2, y fecha.
    • Si ocurre un error al generar los datos, se genera un mensaje de error y se retorna un array con el mensaje de error.
  3. Obtención del operador AND:

    • La función llama a and_filtro_fecha() para obtener el operador AND si es necesario concatenar la nueva cláusula con otros filtros de fecha existentes.
    • Si ocurre un error al obtener el operador AND, se genera un mensaje de error y se retorna un array con el mensaje de error.
  4. Generación de la cláusula SQL de fecha:

    • La función llama a sql_fecha() para generar la cláusula SQL que compara si la fecha está dentro del rango definido por campo_1 y campo_2.
    • Si ocurre un error al generar la cláusula SQL, se genera un mensaje de error y se retorna un array con el mensaje de error.
  5. Retorno de la cláusula SQL:

    • Si todo es exitoso, la función retorna la cláusula SQL generada.

Ejemplos

$fil_fecha = [
    'campo_1' => 'fecha_inicio',
    'campo_2' => 'fecha_fin',
    'fecha' => '2023-08-15'
];
$filtro_fecha_sql = '';

$resultado = $this->genera_sql_filtro_fecha($fil_fecha, $filtro_fecha_sql);

// Resultado esperado:
// "AND('2023-08-15' >= fecha_inicio AND '2023-08-15' <= fecha_fin)"

Código de la Función

private function genera_sql_filtro_fecha(array $fil_fecha, string $filtro_fecha_sql): array|string
    {
        $valida = $this->valida_data_filtro_fecha(fil_fecha: $fil_fecha);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al validar fecha',data: $valida);
        }

        $data = $this->data_filtro_fecha(fil_fecha: $fil_fecha);
        if(errores::$error){
            return $this->error->error(mensaje:'Error al generar datos',data:$data);
        }

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

        $sql = $this->sql_fecha(and:$and,data:  $data);
        if(errores::$error){
            return $this->error->error(mensaje:'Error al obtener sql',data:$sql);
        }
        return $sql;
    }