administrador.base.orm.where.limpia_filtros - gamboamartin/administrador GitHub Wiki

limpia_filtros

La función limpia_filtros toma un objeto de filtros y un array de claves para filtrar, validando que cada clave esté presente y no vacía en el objeto de filtros. Si una clave no está definida, se asigna un valor vacío (''). Además, elimina cualquier espacio en blanco al principio y al final de los valores de los filtros. Si hay algún error en el proceso de validación, se devuelve un array de error detallado.

Signatura

final public function limpia_filtros(stdClass $filtros, array $keys_data_filter): stdClass|array

Parámetros

stdClass $filtros

  • Tipo: stdClass
  • Descripción: Este parámetro es un objeto que contiene los filtros que se desean limpiar o completar. Las claves de este objeto deben corresponder a las claves especificadas en $keys_data_filter.

array $keys_data_filter

  • Tipo: array
  • Descripción: Un array de claves que deben estar presentes en el objeto $filtros. Si alguna clave no está presente, se añade con un valor vacío. Cada clave también es limpiada de espacios en blanco al principio y al final.

Retorna

stdClass|array

  • Tipo: stdClass o array
  • Descripción: Si la operación es exitosa, la función devuelve el objeto $filtros modificado con las claves limpias y los valores ajustados. Si ocurre un error, como que alguna clave esté vacía, se devuelve un array de error con detalles sobre la causa del fallo.

Explicación Detallada

  1. Validación inicial de claves:

    • Recorre cada clave en el array $keys_data_filter y la limpia de espacios en blanco usando trim().
    • Si alguna clave está vacía después de la limpieza, se devuelve un array de error indicando que una clave está vacía.
  2. Verificación de la existencia de claves en el objeto de filtros:

    • Si alguna clave del array $keys_data_filter no existe en el objeto $filtros, se asigna un valor vacío ('') a esa clave.
  3. Limpieza de valores en el objeto de filtros:

    • Una vez que todas las claves están presentes, se recorre nuevamente el array $keys_data_filter y se limpia el valor de cada clave en el objeto $filtros usando trim() para eliminar los espacios en blanco al principio y al final.

Ejemplos

$filtros = new stdClass();
$filtros->nombre = " Juan ";
$filtros->apellido = "Perez";
$keys_data_filter = ['nombre', 'apellido', 'edad'];

$resultado = $this->limpia_filtros($filtros, $keys_data_filter);

// Resultado esperado:
// $filtros->nombre = "Juan";
// $filtros->apellido = "Perez";
// $filtros->edad = "";

Código de la Función

inal public function limpia_filtros(stdClass $filtros, array $keys_data_filter): stdClass|array
    {
        foreach($keys_data_filter as $key){
            $key = trim($key);
            if($key === ''){
                return $this->error->error(mensaje: 'Error el key esta vacio', data: $keys_data_filter, es_final: true);
            }
            if(!isset($filtros->$key)){
                $filtros->$key = '';
            }
        }
        foreach($keys_data_filter as $key){
            $filtros->$key = trim($filtros->$key);
        }

        return $filtros;
    }