<?php
/**
* Descripción del Controlador %%TMPL_CONTROL%%
*
* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio.
* Quisque volutpat mattis eros. Nullam malesuada erat ut turpis.
*
* @package Constructor\Controlador
* @license GPL
* @author Generado por SICAM
*/
class %%TMPL_CONTROL%%Controlador extends Controladores {
/**
* Función para ser consumida desde la API
* @api
* @return JSON Datos de todos los %%TMPL_CONTROL%%
*/
function todos($request, $response, $args = array()) {
Api::ejecutarGet($request, %%TMPL_MODELO%%::todos());
}
/**
* Vista que se encarga de organizar la forma de presentar
* los registros de %%TMPL_CONTROL%% al usuario.
* @return HTML Listado de %%TMPL_CONTROL%%.
*/
function mostrarTodos() {
Vistas::mostrar('%%TMPL_COMPONENTE%%', '%%TMPL_CONTROL%%s/listado');
}
/**
* Permite mostrar en forma de tabla los registros de %%TMPL_CONTROL%%.
* @return HTML Formulario solo con datos inciales o necesarios.
*/
function tablaListado() {
$%%TMPL_CONTROL%%s = %%TMPL_MODELO%%::todos();
Vistas::mostrar('%%TMPL_COMPONENTE%%', '%%TMPL_CONTROL%%s/tbl-%%TMPL_CONTROL%%s', array(
'%%TMPL_CONTROL%%s' => $%%TMPL_CONTROL%%s));
}
/**
* Responde con el formulario de %%TMPL_CONTROL%% vacio, solo datos necesarios.
* LLama a la función que devuleve el formulario pero
* sin enviarle los datos de %%TMPL_CONTROL%%.
* Esta función se crea para poder gestionar el permiso de NUEVO %%TMPL_CONTROL%%
* @return HTML Formulario solo con datos inciales o necesarios.
*/
function mostrarFormularioNuevo() {
$this->mostrarFormulario();
}
/**
* Recibe el ID del %%TMPL_CONTROL%% y obtiene sus datos para ser enviados
* al formulario, y asi cargar los datos en los inputs.
* Esta función se crea para poder gestionar el permiso de EDITAR %%TMPL_CONTROL%%
* @return HTML Formulario con los datos del %%TMPL_CONTROL%% a editar.
*/
function mostrarFormularioEditar() {
$%%TMPL_CONTROL%% = %%TMPL_MODELO%%::datos($this->%%TMPL_CONTROL%%ID);
$this->mostrarFormulario($%%TMPL_CONTROL%%);
}
/**
* Muestra el Formulario procesado para ser mostrado al usuario.
* Se le envian unos datos inciales para la carga de la vista, y
* se envia los datos del %%TMPL_CONTROL%% cuando se esta editando.
* @return HTML Vista del Formulario de %%TMPL_CONTROL%%
*/
private function mostrarFormulario($%%TMPL_CONTROL%% = null) {
Vistas::mostrar('%%TMPL_COMPONENTE%%', '%%TMPL_CONTROL%%s/form-%%TMPL_CONTROL%%', array(
'versionSICAM' => Parametros::valor('VERSIONSICAM'),
'Vigencia' => Vigencia::actual(),
'Categorias' => Categorias::todas(),
'%%TMPL_CONTROL%%' => $%%TMPL_CONTROL%%
));
}
/**
* Guardar Datos Recibidos, bien sea como un registro nuevo, o como una actualización.
* Despues imprime las Respuesta del Sistema a la ejecución de la operacion
*/
function guardarDatos() {
$carpeta%%TMPL_CONTROL%% = '%%TMPL_COMPONENTE%%/%%TMPL_CONTROL%%s/';
$this->urlARCHIVO = $this->recibirArchivos(
$this->archivoENVIADO, DIR_ARCHIVOS . $carpeta%%TMPL_CONTROL%%, uniqid('%%TMPL_CONTROL%%-') . "." . Archivos::extension($this->archivoENVIADO)
);
if (empty($this->%%TMPL_CONTROL%%ID)) {
echo $this->guardarNuevo();
} else {
echo $this->guardarCambios();
}
}
/**
* Función que toma los datos enviados y crea un nuevo registro
* @return RespuestasSistema
*/
private function guardarNuevo() {
$creadoID = %%TMPL_MODELO%%::guardar(
$this->%%TMPL_CONTROL%%CATEGORIA, $this->%%TMPL_CONTROL%%CODIGO, $this->%%TMPL_CONTROL%%TITULO, $this->%%TMPL_CONTROL%%DESCRIPCION, $urlARCHIVO, $this->%%TMPL_CONTROL%%ESTADO
);
if ($creadoID) {
return Respuestassistema::exito("Nuevo Registro CREADO con EXITO");
} else {
return Respuestassistema::fallo("No se pudo CREAR el nuevo %%TMPL_CONTROL%%. Si vuelve a suceder, contacte con el Centro TICS.");
}
}
/**
* Función que toma los datos enviados y actualiza el registro
* @return RespuestasSistema
*/
private function guardarCambios() {
$%%TMPL_CONTROL%% = %%TMPL_MODELO%%::datos($this->%%TMPL_CONTROL%%ID);
if (is_null($this->urlARCHIVO)) {
$this->urlARCHIVO = $%%TMPL_CONTROL%%->%%TMPL_CONTROL%%URLARCHIVO;
}
$actualizado = %%TMPL_MODELO%%::actualizar(
$this->%%TMPL_CONTROL%%ID, $this->%%TMPL_CONTROL%%CATEGORIA, $this->%%TMPL_CONTROL%%CODIGO, $this->%%TMPL_CONTROL%%TITULO, $this->%%TMPL_CONTROL%%DESCRIPCION, $urlARCHIVO, $this->%%TMPL_CONTROL%%ESTADO
);
if ($actualizado) {
return RespuestasSistema::exito("Registro ACTUALIZADO con EXITO.");
} else {
return RespuestasSistema::fallo("No se actualizó el %%TMPL_CONTROL%%. Verifique los datos, o contacte al Centro TICS.");
}
}
/**
* Toma el archivo enviado y lo mueve a la ubicacion y con el nombre enviado.
* @param String $archivoRECIBIDO archivo enviado por POST
* @param String $carpetaMOVIDO Carpeta donde se debe guardar el archivo
* @param String $nuevoNOMBRE Nombre con el que se va ha lamacenar el archivo
* @return String Ruta WEB o URL de donde fue guardado el archivo recibido.
*
* @author [Juan Pablo Llinás Ramírez] [jpllinas@ccsm.org.co]
*/
private function recibirArchivos($archivoRECIBIDO, $carpetaMOVIDO, $nuevoNOMBRE) {
if (!empty($archivoRECIBIDO)) {
$archivoMovido = Archivos::moverArchivoRecibido($archivoRECIBIDO, $carpetaMOVIDO, $nuevoNOMBRE);
if ($archivoMovido) {
return URL_ARCHIVOS . $carpetaMOVIDO . $nuevoNOMBRE;
}
}
return null;
}
/**
* Eliminar un registro de la base de datos.
* Esta operación es irreversible.
* Si se tiene la referencia integral activada, la base de datos no va
* dejar eliminar si tiene otros registros asociados.
* @return RespuestasSistema Resultado de la Operacion que se envia al cliente
*/
function eliminar() {
$this->operacionConSoloID('eliminar');
}
/**
* Cambiar el estado de un registro de la base de datos.
* Esta operacion cambia a estado ACTIVO el registro.
* @return RespuestasSistema Resultado de la Operacion
*/
function reactivar() {
$this->operacionConSoloID('reactivar');
}
/**
* Cambiar el estado de un registro de la base de datos.
* Esta operacion cambia a estado DESACTIVO / SUSPENDIDO / CANCELADO el registro.
* @return RespuestasSistema Resultado de la Operacion
*/
function desactivar() {
$this->operacionConSoloID('desactivar');
}
/**
* Se identificó que la forma de tratar las operaciones que solo necesitan
* un id para ejecutar se pueden todas tratar como en esta funcion
* @return RespuestasSistema Resultado de la Operacion que se envia al cliente
*/
private function operacionConSoloID($operacionMODELO) {
$%%TMPL_CONTROL%%ParaEliminar = $this->checks_%%TMPL_CONTROL%%;
if (count($%%TMPL_CONTROL%%ParaEliminar)) {
$n = 0;
foreach ($%%TMPL_CONTROL%%ParaEliminar as $%%TMPL_CONTROL%%ELIMINAR):
if (%%TMPL_MODELO%%::$operacionMODELO($%%TMPL_CONTROL%%ELIMINAR)) {
$n++;
}
endforeach;
if ($n == 0) {
echo RespuestasSistema::error('No fue posible realizar la OPERACION [' . strtoupper($operacionMODELO) . ']. Contacte al centro TICS.');
} else if ($n == count($%%TMPL_CONTROL%%ParaEliminar)) {
echo RespuestasSistema::exito('Se realizó la OPERACION [' . strtoupper($operacionMODELO) . '] exitosamente!');
} else {
echo RespuestasSistema::error('Hubo un error al [' . strtoupper($operacionMODELO) . '] alguno de los registros. Verifica los datos, o contacta al centro TICS.');
}
} else {
echo RespuestasSistema::error('No llegarón los datos para [' . strtoupper($operacionMODELO) . ']. Contacta al centro TICS');
}
}
/**
* Vista que se encarga de mostrar todos los detalles/datos asociados a
* los registros de %%TMPL_CONTROL%%.
* @return HTML Datos e información de %%TMPL_CONTROL%%.
*/
function verDetalles() {
$%%TMPL_CONTROL%% = %%TMPL_MODELO%%::datos($this->%%TMPL_CONTROL%%ID);
Vistas::mostrar('%%TMPL_COMPONENTE%%', '%%TMPL_CONTROL%%s/ver-%%TMPL_CONTROL%%', array(
'%%TMPL_CONTROL%%' => $%%TMPL_CONTROL%%));
}
}