administrador.base.orm.filtros.complemento - gamboamartin/administrador GitHub Wiki

complemento

La función complemento se encarga de procesar un objeto stdClass llamado $complemento, aplicando una serie de filtros y parámetros adicionales utilizando la información de un modelo. La función realiza las siguientes acciones:

  1. Limpia los filtros del objeto $complemento.
  2. Inicializa los parámetros SQL necesarios.
  3. Asegura que el objeto $complemento contenga todas las claves requeridas. Si ocurre algún error en cualquier paso del proceso, devuelve un array con los detalles del error.

Signatura

private function complemento(stdClass $complemento, modelo $modelo): array|stdClass

Parámetros

stdClass $complemento

  • Tipo: stdClass
  • Descripción: El objeto que contiene los datos que serán procesados, incluyendo filtros y parámetros SQL.

modelo $modelo

  • Tipo: modelo
  • Descripción: Un objeto de tipo modelo que contiene las columnas y filtros necesarios para procesar el complemento.

Retorno

array|stdClass

  • Tipo: array o `stdClass**
  • Descripción:
    • Si la operación es exitosa, devuelve un objeto stdClass con los filtros limpiados, los parámetros SQL inicializados y las claves necesarias aseguradas.
    • Si ocurre un error en cualquier parte del proceso, devuelve un array con un mensaje de error y los detalles correspondientes.

Explicación Detallada

  1. Limpieza de filtros:

    • La función comienza limpiando los filtros en el objeto $complemento utilizando las columnas extra del modelo como referencia para los datos a filtrar. Si ocurre un error durante este proceso, devuelve un mensaje de error.
    $complemento_ = (new where())->limpia_filtros(filtros: $complemento, keys_data_filter: $modelo->columnas_extra);
    if (errores::$error) {
        return $this->error->error(mensaje: 'Error al limpiar filtros', data: $complemento_);
    }
    
  2. Inicialización de parámetros SQL:

    • Después de limpiar los filtros, se inicializan los parámetros SQL utilizando la función init_params_sql. Esta función asegura que los parámetros necesarios para la consulta SQL estén correctamente configurados. Si ocurre un error, se devuelve un array de error.
    $complemento_r = (new where())->init_params_sql(complemento: $complemento_, keys_data_filter: $modelo->keys_data_filter);
    if (errores::$error) {
        return $this->error->error(mensaje: 'Error al inicializar params', data: $complemento_r);
    }
    
  3. Inicialización del complemento:

    • Finalmente, la función asegura que el objeto $complemento_r contenga todas las claves necesarias mediante la función inicializa_complemento. Si ocurre un error en este paso, se captura y se devuelve un mensaje de error.
    $complemento_r = $this->inicializa_complemento(complemento: $complemento_r);
    if (errores::$error) {
        return $this->error->error(mensaje: 'Error al inicializar complemento', data: $complemento_r);
    }
    
  4. Retorno del objeto $complemento_r:

    • Si todas las operaciones son exitosas, la función devuelve el objeto $complemento_r con los filtros y parámetros ajustados.
    return $complemento_r;
    

Ejemplo de uso

$complemento = new stdClass();
$modelo = new modelo();

$resultado = $this->complemento($complemento, $modelo);

// Resultado esperado:
// $complemento contiene los filtros limpiados, los parámetros SQL inicializados, y las claves necesarias aseguradas.

Código de la Función

private function complemento(stdClass $complemento, modelo $modelo): array|stdClass
    {
        $complemento_ = (new where())->limpia_filtros(filtros: $complemento,keys_data_filter:  $modelo->columnas_extra);
        if(errores::$error){
            return $this->error->error(mensaje:'Error al limpiar filtros',data:$complemento_);
        }

        $complemento_r = (new where())->init_params_sql(complemento: $complemento_,
            keys_data_filter: $modelo->keys_data_filter);
        if(errores::$error){
            return $this->error->error(mensaje:'Error al inicializar params',data:$complemento_r);
        }

        $complemento_r = $this->inicializa_complemento(complemento: $complemento_r);
        if(errores::$error){
            return $this->error->error(mensaje:'Error al inicializar complemento',data:$complemento_r);
        }
        return $complemento_r;
    }