<?php
class SuperControllerCore extends InternoController{
	
	public function indexAction(){
		
		$this->view->titulo = 'ACL';
		
		$grid = new LSTPerfiles();
		$grid->setClase('Perfil');
		$grid->setMetodo('getAll');
		
		$grdController = new LSTController();
		$grdController->setClase('Controller');
		$grdController->setMetodo('getAll');
		
		
		$tab = new VstTab();
		$tab->addTab('Perfiles', $grid);
		$tab->addTab('Controller', $grdController);
		
		$ly = $this->getLayout();
		$ly->reg_contenido->addElement($tab);
		
		//$this->regionContenido->addElement($grdController);
		//$this->regionContenido->addElement($grid);
	
	}
	
	public function limpiaaclAction(){
		$request = new Zend_Controller_Request_Http();
		$response = new Zend_Controller_Response_Http();
		$listado_contraladores = Vista::loadAllListadoAcl();
		$lista = array();
		foreach ($listado_contraladores->getDatos() as $controlador){
			$lista[$controlador['id_controller']]['nombre'] = $controlador['controller'];
			$lista[$controlador['id_controller']]['vistas'][$controlador['id_vista']] = $controlador['vista'];
			
			
			
			
			
		}
		foreach ($lista as $key => $value){
			$nombreController = ucfirst($value['nombre']).'Controller';
			if (class_exists($nombreController)) {
			
				$objetoC = new $nombreController($request, $response); 
				foreach ($value['vistas'] as $key_vista => $vista){
					$nombreMetodo = $vista .'Action';
					if(!method_exists($objetoC, $nombreMetodo)){
						$objetoV = new Vista($key_vista);
						$objetoV->remove();
					}
				}
			} else{
				$objeto_controlador = new Controller($key);
				$objeto_controlador->remove();
			}
			
		}
		$this->_redirect('super/listado');
		
	}
	
	
	public function listadoAction(){
		$botonera = new VstCaja();
		$boton = new VstBoton('/super/limpiaacl', BASEURL, 'limpiar ACL', 'limpiar ACL');
		$boton->setClase('btn-primary btn');
		$botonera->addElement($boton);
		if($this->getRequest()->isPost()) {
			Vista::guardaPermisos($_POST['perfil']);
		}
		$grid = new LSTAcl();
		$ly = $this->getLayout();
		$ly->reg_contenido->addElement($botonera);
		$ly->reg_contenido->addElement($grid);
	}
	
	public function editarAction()
	{
		
		$id = (int) $this->_request->getParam('id', -1);
		$objeto = new Perfil($id);
		$formulario = new FRMPerfil($objeto);
		$this->getLayout()->reg_contenido->addElement($formulario);
	
	}
	
	public function verAction()
	{
	
		$id = (int) $this->_request->getParam('id', -1);
	
		$objeto = new Cliente($id);
		
		$formulario = new FRMCliente($objeto);
		$formulario->soloLectura();
		
		$this->getLayout()->reg_contenido->addElement($formulario);
	
	}
	
	
	public function eliminarAction(){
		$id = (int) $this->_request->getParam('id', -1);
		
		$cliente = new Cliente($id);
		$cliente->remove();
		$this->_redirect('clientes/index');
	}
	
	public function configuracionAction(){
	
		$formulario = new FRMConfiguracion();
		$this->getLayout()->reg_contenido->addElement($formulario);
	}
}