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 clavescampo_1,campo_2, yfecha. La clavefechadebe 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 operadorAND.
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
-
Validación del filtro de fecha:
- La función llama a
valida_data_filtro_fecha()para validar que el array$fil_fechacontenga 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.
- La función llama a
-
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 propiedadescampo_1,campo_2, yfecha. - Si ocurre un error al generar los datos, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función llama a
-
Obtención del operador
AND:- La función llama a
and_filtro_fecha()para obtener el operadorANDsi 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.
- La función llama a
-
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 porcampo_1ycampo_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.
- La función llama a
-
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;
}