src.where.sql_fecha - gamboamartin/where GitHub Wiki

sql_fecha

La función sql_fecha es una función privada que genera una cláusula SQL basada en un rango de fechas. Valida que el objeto stdClass contenga las propiedades requeridas (fecha, campo_1, y campo_2) y que la fecha sea válida. Si la validación es exitosa, construye una cláusula SQL que compara si la fecha está dentro del rango definido por campo_1 y campo_2.

Signatura

private function sql_fecha(string $and, stdClass $data): string|array

Parámetros

  • string $and:
    Una cadena que representa el operador lógico AND que se utilizará en la cláusula SQL para unir esta condición con otras.

  • stdClass $data:
    Un objeto que debe contener las propiedades fecha (la fecha a validar), campo_1 (el campo inicial del rango), y campo_2 (el campo final del rango).

Retorna

  • string|array:
    Retorna la cláusula SQL generada 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 de la existencia de las claves requeridas:

    • La función verifica que las propiedades fecha, campo_1, y campo_2 estén presentes en el objeto $data.
    • Si alguna de las propiedades falta, se genera un mensaje de error y se retorna un array con el mensaje de error.
  2. Validación de contenido de las claves:

    • La función también verifica que los valores de fecha, campo_1, y campo_2 no estén vacíos.
    • Si alguno de estos valores está vacío, se genera un mensaje de error y se retorna un array con el mensaje de error.
  3. Validación de la fecha:

    • La función llama a valida_fecha() para verificar que el valor de la propiedad fecha sea una fecha válida.
    • Si la validación de la fecha falla, se genera un mensaje de error y se retorna un array con el mensaje de error.
  4. Generación de la cláusula SQL:

    • Si todas las validaciones son exitosas, la función construye una cláusula SQL que compara si fecha está dentro del rango definido por campo_1 y campo_2.
  5. Retorno de la cláusula SQL:

    • La función retorna la cláusula SQL generada.

Ejemplos

$data = new stdClass();
$data->fecha = '2023-08-15';
$data->campo_1 = 'fecha_inicio';
$data->campo_2 = 'fecha_fin';
$and = 'AND';

$resultado = $this->sql_fecha($and, $data);

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

Código de la Función

private function sql_fecha(string $and, stdClass $data): string|array
    {
        $keys = array('fecha','campo_1','campo_2');
        foreach($keys as $key){
            if(!isset($data->$key)){
                return $this->error->error(mensaje: 'error no existe $data->'.$key, data: $data, es_final: true);
            }
            if(trim($data->$key) === ''){
                return $this->error->error(mensaje:'error esta vacio $data->'.$key, data:$data, es_final: true);
            }
        }
        $keys = array('fecha');
        foreach($keys as $key){
            $valida = $this->validacion->valida_fecha(fecha: $data->$key);
            if(errores::$error){
                return $this->error->error(mensaje:'error al validar '.$key,data: $valida);
            }
        }

        return "$and('$data->fecha' >= $data->campo_1 AND '$data->fecha' <= $data->campo_2)";
    }
⚠️ **GitHub.com Fallback** ⚠️