Documentation

TSLAppDefaultCRUDController extends TSLAppDefaultController
in

Controlador sugerido como default para las aplicaciones tipo CRUD las cuales tiene operaciones de fetch,read,update y delete.

Por default , todos los input parametros que sean pasados por parseParameters seran procesados de tal forma que los 'null' se conviertan en reales NULL.

Siempre usaran un unico via de salida el cual esta preparado para responder a ajax calls.

Los response y constraint processor seran cargados dinamicamente a partir de los parametros libid (que libreria se esta usando) y filterformat (XML,json,etc)

El setup se hace a traves del arreglo setupOpts y debe ser realizado en la funcion setupData llamada durante la inicializacion de la clase. Por Ejemplo de dicho arreglo:

$this->setupOpts =  [
           "validateOptions" => [
                 "fetch" => [],
                 "read" => ["langId" => 'empresa', "validationId" => 'empresa_validation', "validationGroupId" => 'v_empresa', "validationRulesId" => 'getEmpresa'],
                 "add" => ["langId" => 'empresa', "validationId" => 'empresa_validation', "validationGroupId" => 'v_empresa', "validationRulesId" => 'addEmpresa'],
                 "del" => ["langId" => 'empresa', "validationId" => 'empresa_validation', "validationGroupId" => 'v_empresa', "validationRulesId" => 'delEmpresa'],
                 "upd" => ["langId" => 'empresa', "validationId" => 'empresa_validation', "validationGroupId" => 'v_empresa', "validationRulesId" => 'updEmpresa']
           ],
           "paramsList" => [
                 "fetch" => [],
                 "read" => ['empresa_id', 'verifyExist'],
                 "add" => ['empresa_razon_social', 'tipo_empresa_codigo','empresa_ruc', 'empresa_direccion', 'empresa_telefonos', 'empresa_fax', 'empresa_correo', 'activo'],
                 "del" => ['empresa_id', 'versionId'],
                 "upd" => ['empresa_id', 'empresa_razon_social', 'tipo_empresa_codigo', 'empresa_ruc', 'empresa_direccion', 'empresa_telefonos', 'empresa_fax',  'empresa_correo', 'versionId', 'activo'],
           ],
           "paramsFixableToNull" => ['empresa_','tipo_empresa_']
           "paramsFixableToValue" => ["empresa_id" => ["valueToFix" => 'null', "valueToReplace" => NULL, "isID" => true]],
           "paramToMapId" => 'empresa_id'
       ];

Donde:
validateOptions
Arreglo con la lista de valores requeridos para la validacion de cada operacion, el lenguaje,id de validacion, etc, las operaciones soportadas son fetch,add,del,read,del,upd

paramsList
Arreglo con la lista de parametros que utilizara el controller y pasara al DTO para luego armar el modelo requerido para la operacion.

paramsFixableToNull
Arreglo con la lista de parametros o patron de lista de parametros que se verificaran si deben cambiarse de 'null' a NULL Este arreglo puede contener un nombre parcial que identifique a un grupo de parametros , por ejemplo : usuarios quiere decir todo parametro que empiece con usuarios tales como usuarios_id,usuarios_nombre, etc o puede contener nombres exactos.

paramsFixableToValue
Arreglo con la lista de parametros que deben ser mapeados de valor.

paramToMapId
Define que parametro sera colocado como id para el caso de la lectura de un registro. por ejemplo usuarios_id representa el id de busqueda , en este caso este sera colocado como el id para buscar el registro a leer. *

Table of Contents

$setupOpts Debe ser inicializada durante el metodo setupData() array
$DTO El Data transfer Object TSLIDataTransferObj
$responseProcessor Instancia del encoder que procesara los datos resultados obtenidos en el DTO y los transformara al formato requerido por la vista de salida, por ejemplo JSON, XML. TSLIResponseProcessor
$DEBUG Si envia mensajes de debug o no. bool
__construct() Constructor , este invocara el metodo setupData el cual debera ser implementado para inicializar el arreglo $setupOpts. mixed
getBussinessService() Debe retornar la instancia del bussines service que usara este controlador. TSLAppCRUDBussinessService
setupData() Funcion que debe inicializar y setear los datos en $this->setupOpts Las clases que implementan deberan hacerlo para que todo funcione. void
preExecuteOperation() Por default este metodo no hace nada , las clases que requieran deberan hacer el override. void
executeCrudOperation() Metodo donde se ejecuta el proceso default del controller de acuerdo a la operacion solicitada. void
index() Pagina index para este controlador , maneja todos los casos , lectura, lista etc. mixed
__construct() TSLBaseController constructor. mixed
parseParameters() Funcion de apoyo para eliminar los parametros que llegan con el valor 'null' en texto ya que sera asumido como texto y no un real NULL en la capa de persistencia , de tal forma que en esos casos se asignara un real NULL al parametro, previo a su proceso posterior. void
getView() Retornara el nombre de la vista , realmente debera corresponder a la clase que implementa la vista de salida, estas vistas seran buscadas en el directorio views de la aplicacion. string
getResponseProcessor() Retornara la instancia del response processor para crear la salida adecuada a la vista , por ejemplo podria ser para JSON,XML u otro cualquiera. TSLIResponseProcessor
getDefaultFilterType() Define el tipo de parser default para el filtro el cual puede ser json,csv o xml. string
getDefaultSorterType() Define el tipo de parser default para los campos de sort el cual puede ser json,csv o xml. string
getFilterProcessor() Metodo hook que se usara si se desea utilizar por default un procesador de filtro diferente al default. null|TSLIInputProcessor
getSorterProcessor() Metodo hook que se usara si se desea utilizar por default un procesador de campos de sort diferente al default. null|TSLIInputProcessor
getConstraintProcessor() Cargara por default el constraint processor que el usuario haya definido para el tipo que se indique y de no indicarse el tipo buscara el default que para este caso es el de JSON. TSLIInputProcessor
getUserCode() La implementacion default buscara en la sesion la llave "usuario_code". string
getUserId() La implementacion default buscara en la sesion la llave "usuario_id". int
isLoggedIn() La implementacion default buscara en la sesion la llave "isLoggedIn" y de existir indicara que el usuario esta logeado. bool
getSessionData() Retorna el valor de un dato de sesion en base a una llave. mixed
setUserCode() Setea el codigo del usuario logeado , este valor tendra sentido ser seteado si isLoggedIn esta seteado. void
setUserId() Setea el id del usuario logeado , este valor tendra sentido ser seteado si isLoggedIn esta seteado. void
setLoggedIn() Setea si el usuario esta logeado o no al sistema. void
setSessionData() Guarda un valor en la sesion. void
unsetSessionData() Remueve un valor en la sesion. void
MyShutdown() Funcion callback al terminar el ciclo del controller en el cual se detectaran si hubo errores inesperados para ser colocados como parte de la salida. mixed
myErrorHandler() Funcion callback del sistema para en caso sucedan errores no controlados, colocara el mensaje de error como parte de la salida. mixed
MyExceptionHandler() Funcion callback en el caso de excepciones no controladas. mixed
fixParameter() Reemplaza el valor de un parametro por el enviado en el caso se cumpla la condicion de igualdad con el valueToSearch. mixed
validateInputData() Validara los parametros que vienen enviados desde el cliente (browser) y el resultado de dicha validacion sera colocado en el out message que es parte del DTO. bool
getUserResponseProcessor() Override si se usa un response especifico en algun caso y que no se cargue el default. string

Properties

$responseProcessor

Instancia del encoder que procesara los datos resultados obtenidos en el DTO y los transformara al formato requerido por la vista de salida, por ejemplo JSON, XML.

protected TSLIResponseProcessor $responseProcessor

Methods

__construct()

Constructor , este invocara el metodo setupData el cual debera ser implementado para inicializar el arreglo $setupOpts.

public __construct( ) : mixed

Crea las estructuras requeridas por el DTO carga el response processor, asi mismo setea el sistema de errores del PHP tales como el metodo de shutdown y el exception handler.

Return values
mixed

setupData()

Funcion que debe inicializar y setear los datos en $this->setupOpts Las clases que implementan deberan hacerlo para que todo funcione.

protected abstract setupData( ) : void

preExecuteOperation()

Por default este metodo no hace nada , las clases que requieran deberan hacer el override.

protected preExecuteOperation( $operationCode : string ) : void
Parameters
$operationCode : string

con la operacion a realizar por ejemplo 'add','delete'.

executeCrudOperation()

Metodo donde se ejecuta el proceso default del controller de acuerdo a la operacion solicitada.

private executeCrudOperation( $operationCode : string ) : void

Inicia procesando la validaion , de ser correcta se procede a pasar los parametros al DTO , asi mismo si si la operacion es fetch procesa los constraints y finalmente ejecuta el bussines service.

Parameters
$operationCode : string

las soportadas por este metodo son add,del,upd,read,fetch

index()

Pagina index para este controlador , maneja todos los casos , lectura, lista etc.

public index( ) : mixed

Basicamente su proceso es validar si el usuario esta logeado, de estarlo procesa los parametros , seteando los parametros a null si estan en la lista de nullables , luego pone valor a los parametros que estan en la lista de mapeados a un valor determinado, obtiene la operacion a ejecutar , prepara los datos de sesion y de acuerdo a la operacion ejecuta la operacion CRUD. La operacion se obtendra del parametro "_operationId"

Return values
mixed

__construct()

TSLBaseController constructor.

public __construct( ) : mixed

Crea las estructuras requeridas por el DTO carga el response processor, asi mismo setea el sistema de errores del PHP tales como el metodo de shutdown y el exception handler.

Return values
mixed

parseParameters()

Funcion de apoyo para eliminar los parametros que llegan con el valor 'null' en texto ya que sera asumido como texto y no un real NULL en la capa de persistencia , de tal forma que en esos casos se asignara un real NULL al parametro, previo a su proceso posterior.

protected parseParameters( $beginWith : mixed ) : void

En el caso $beginWith fuera un array entonces se chequeara para cada caso en el arreglo , esto es util cuando los parametros de entrada a chequear no tienen un solo prefijo.

Parameters
$beginWith : mixed

getView()

Retornara el nombre de la vista , realmente debera corresponder a la clase que implementa la vista de salida, estas vistas seran buscadas en el directorio views de la aplicacion.

protected abstract getView( ) : string

Este subdirectorio debe estar bajo el $application_folder definido para la aplicacion.

Return values
string

con el nombre de la clase de la vista

getResponseProcessor()

Retornara la instancia del response processor para crear la salida adecuada a la vista , por ejemplo podria ser para JSON,XML u otro cualquiera.

protected abstract getResponseProcessor( ) : TSLIResponseProcessor
Tags
throws

en caso no pueda cargarse el response processor.

Return values
TSLIResponseProcessor

la instancia del response processor

getDefaultFilterType()

Define el tipo de parser default para el filtro el cual puede ser json,csv o xml.

public getDefaultFilterType( ) : string

Este sera usado tanto para el Constraint processor y el response processor.

Return values
string

por default este controlador define JSON.

getDefaultSorterType()

Define el tipo de parser default para los campos de sort el cual puede ser json,csv o xml.

public getDefaultSorterType( ) : string
Return values
string

por default este controlador define JSON.

getFilterProcessor()

Metodo hook que se usara si se desea utilizar por default un procesador de filtro diferente al default.

public getFilterProcessor( ) : null|TSLIInputProcessor

Si se desea uno diferente hacer override , de lo contrario retorna null , que es lo mismo que indicar usese el default.

Return values
null|TSLIInputProcessor

: \TSLIInputProcessor con la instancia del filter processor

getSorterProcessor()

Metodo hook que se usara si se desea utilizar por default un procesador de campos de sort diferente al default.

public getSorterProcessor( ) : null|TSLIInputProcessor

Si se desea uno diferente hacer override , de lo contrario retorna null , que es lo mismo que indicar usese el default.

Return values
null|TSLIInputProcessor

: \TSLIInputProcessor con la instancia del sorter processor

getConstraintProcessor()

Cargara por default el constraint processor que el usuario haya definido para el tipo que se indique y de no indicarse el tipo buscara el default que para este caso es el de JSON.

public getConstraintProcessor( ) : TSLIInputProcessor

El usuario de la clase debera definir el metodo getFilterProcessor para indicar el constraint processor a usar y asi mismo indicar el tipo de processor a traves de getDefaultFilterType

Es importante indicar que si en el REQUEST viene indicado el parametro "filterformat" este sera tomado sobre el indicado por getDefaultFilterType.

Tags
see
see
Return values
TSLIInputProcessor

instancia de un constraint processor

getUserCode()

La implementacion default buscara en la sesion la llave "usuario_code".

public getUserCode( ) : string
Return values
string

con el codigo del usuario conectado a la session o null de no existir ninguno.

getUserId()

La implementacion default buscara en la sesion la llave "usuario_id".

public getUserId( ) : int
Return values
int

con el id del usuario logeado o -1 de no haber alguno.

isLoggedIn()

La implementacion default buscara en la sesion la llave "isLoggedIn" y de existir indicara que el usuario esta logeado.

public isLoggedIn( ) : bool
Return values
bool

true si el usuario esta logeado al sistema.

getSessionData()

Retorna el valor de un dato de sesion en base a una llave.

public getSessionData( $name : string ) : mixed
Parameters
$name : string

con el nombre llave del dato a buscar en la sesion.

Tags
inheritDoc
Return values
mixed

retorna el datro guardado en la sesion

setUserCode()

Setea el codigo del usuario logeado , este valor tendra sentido ser seteado si isLoggedIn esta seteado.

public setUserCode( $userCode : string ) : void
Parameters
$userCode : string

con el codigo del usuario a logearse.

Tags
inheritDoc

setUserId()

Setea el id del usuario logeado , este valor tendra sentido ser seteado si isLoggedIn esta seteado.

public setUserId( $userId : int ) : void
Parameters
$userId : int

con el id del usario logeado.

Tags
inheritDoc

setLoggedIn()

Setea si el usuario esta logeado o no al sistema.

public setLoggedIn( $isLoggedIn : bool ) : void
Parameters
$isLoggedIn : bool

true si el usuario esta logeado.

Tags
inheritDoc

setSessionData()

Guarda un valor en la sesion.

public setSessionData( $name : string , $data : mixed ) : void
Parameters
$name : string

con la llave del dato a agregar a la sesion.

$data : mixed

el valor a guardar en la sesion

Tags
inheritDoc

unsetSessionData()

Remueve un valor en la sesion.

public unsetSessionData( $name : string ) : void
Parameters
$name : string

con la llave del dato a remover a la sesion.

Tags
inheritDoc

MyShutdown()

Funcion callback al terminar el ciclo del controller en el cual se detectaran si hubo errores inesperados para ser colocados como parte de la salida.

public MyShutdown( ) : mixed
Return values
mixed

myErrorHandler()

Funcion callback del sistema para en caso sucedan errores no controlados, colocara el mensaje de error como parte de la salida.

public myErrorHandler( $errno : int , $errstr : string , $errfile : string , $errline : int ) : mixed
Parameters
$errno : int
$errstr : string
$errfile : string
$errline : int
Return values
mixed

MyExceptionHandler()

Funcion callback en el caso de excepciones no controladas.

public MyExceptionHandler( $exception : Throwable ) : mixed
Parameters
$exception : Throwable
Return values
mixed

fixParameter()

Reemplaza el valor de un parametro por el enviado en el caso se cumpla la condicion de igualdad con el valueToSearch.

protected fixParameter( $parameterName : string , $valueToSearch : string , $valueToReplace : mixed ) : mixed

Util por ejemplo si el lado cliente envia el string 'null' para indicar campo vacio y deseamos reemplazarlo por ejemplo con un NULL real.

Parameters
$parameterName : string

Nombre del parametro de entrada a trabajar

$valueToSearch : string

valor a buscar

$valueToReplace : mixed

valos por el cual reemplazar

Return values
mixed

con el valor del parametro modificado o NULL si el parametro no existe.

validateInputData()

Validara los parametros que vienen enviados desde el cliente (browser) y el resultado de dicha validacion sera colocado en el out message que es parte del DTO.

protected final validateInputData( $DTO : TSLIDataTransferObj , $langId : string , $validationId : string , $validationGroupId : string , $validationRulesId : string ) : bool

Como ejemplo de un archivo de validacion :

$config['v_colorclass'] = array(
'getColorClass' => array(
array(
'field' => 'color_class_codigo',
'label' => 'lang:color_class_codigo',
'rules' => 'required|alpha_dash|max_length[20]'
)
),
'updColorClass' => array(
array(
'field' => 'color_class_codigo',
'label' => 'lang:color_class_codigo',
'rules' => 'required|alpha_dash|max_length[20]'
),
array(
'field' => 'color_class_value',
'label' => 'lang:color_class_value',
'rules' => 'required|max_length[7]'
),
array(
'field' => 'color_class_protected',
'label' => 'lang:color_class_protected',
'rules' => 'required|is_boolean'
),
array(
'field' => 'versionId',
'label' => 'lang:versionId',
'rules' => 'required|integer'
)
),
'delColorClass' => array(
array(
'field' => 'color_class_codigo',
'label' => 'lang:color_class_codigo',
'rules' => 'required|alpha_dash|max_length[20]'
),
array(
'field' => 'versionId',
'label' => 'lang:versionId',
'rules' => 'required|integer'
)
),
'addColorClass' => array(
array(
'field' => 'color_class_codigo',
'label' => 'lang:color_class_codigo',
'rules' => 'required|alpha_dash|max_length[20]'
),
array(
'field' => 'color_class_value',
'label' => 'lang:color_class_value',
'rules' => 'required|max_length[7]'
),
array(
'field' => 'color_class_protected',
'label' => 'lang:color_class_protected',
'rules' => 'required|is_boolean'
)
)
);

y su respectivo archivo de lenguaje, donde estaran los nombres de los campos en el idioma que se este usando, como minimo seria asi en este ejemplo:

$lang['color_class_codigo'] = 'Codigo';
$lang['color_class_value'] = 'Valor';
$lang['color_class_protected'] = 'Protegido';
$lang['versionId'] = 'Version';
Parameters
$DTO : TSLIDataTransferObj

DTO donde residiran las respuestas a la validacion en caso exista errores y especificamente iran en el out message del mismo.

$langId : string

Nombre base del archivo que contendra las traducciones para los mensajes de error de validaciones de campos , pej. factura , hara que el framework busque el archivo factura_lang. Este archivo debe ir en el directorio application/language/[idioma] de la aplicacion.

$validationId : string

Nombre base del archivo que contendra las validaciones, pej. factura , hara que el framework busque el archivo facturavalidation Este archivo debe ir en el directorio application/config de la aplicacion. Para ver como se configura {@see https://codeigniter.com/userguide3/libraries/form_validation.html#overview}

$validationGroupId : string

Un archivo de validacion puede contener varios grupos, este parametro indicara el grupo.

$validationRulesId : string

Dentro de cada grupo habra u set de reglas para distintos casos como pueden ser una para agregar , eliminar, etc.

Return values
bool

TRUE si las validaciones fueron correctas y FALSE si no lo fueron, en este caso en el out message del DTO iran los mensajes de error de las validaciones para cada campo validado con error.

getUserResponseProcessor()

Override si se usa un response especifico en algun caso y que no se cargue el default.

protected getUserResponseProcessor( ) : string

Ver \TSLResponseProcessorLoaderHelper

Return values
string

con el nombre del procesador de salida definida por el usuario , de ser null se aplicara los metodos default de carga de dichas clases.

Search results