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 clavefecha
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 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_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.
- 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 operadorAND
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.
- 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_1
ycampo_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;
}