<?php

/**
 * perfiles actions.
 *
 * @package    comisiones
 * @subpackage perfiles
 * @author     Software House LTDA <gerencia@sofhouse.net>
 * @version    SVN: $Id: actions.class.php 9301 2008-05-27 01:08:46Z dwhittle $
 */
class perfilesActions extends sfActions
{
  protected $Mensajes = array(
                               '&&&' => 'Se ha actualizado el perfil correctamente',
                               '&&&&' => 'Se ha creado el perfil correctamente',
  );
  /**
   * Executes index action
   *
   * @param sfRequest $request A request object
   */
  public function executeIndex($request)
  {
    $this->perfiles = PerfilesPeer::doSelect(new Criteria());
    $request->getParameterHolder()->get('_') ? $this->mensaje = $this->Mensajes[$request->getParameterHolder()->get('_')] : '';
  }

  public function executeCreate()
  {
    $this->titulo = "Nuevo perfil";
    $this->perfil = new Perfiles;
    $this->administrador = 0;
    
    $c = new Criteria();
    $c->add(MenusPeer::ID,-1,Criteria::NOT_EQUAL);
    $this->menus = MenusPeer::doSelect($c);

    $this->setTemplate('edit');
  }

  public function executeEdit($request)
  {
    $this->forward404If(!$request->isMethod('POST'));
    $this->perfil   = PerfilesPeer::retrieveByPk($this->getRequestParameter('id'));
    $this->titulo   = "Edici&oacute;n del perfil " . strtoupper($this->perfil->getDescripcion());
    $c = new Criteria();
    //$c->add(MenusPeer::ID,-1,Criteria::NOT_EQUAL);
    $this->menus    = MenusPeer::doSelect($c);
    $c = new Criteria();
    $c->add(PerfilesCredencialesPeer::ID_PERFIL,$this->getRequestParameter('id'));
    $c->add(PerfilesCredencialesPeer::ID_CREDENCIAL,-1);
    $c->add(PerfilesCredencialesPeer::ESTADO,1);
    $this->administrador = PerfilesCredencialesPeer::doSelectOne($c);
    $c = new Criteria();
    $c->add(PerfilesCredencialesPeer::ID_PERFIL,$this->getRequestParameter('id'));
    $c->add(PerfilesCredencialesPeer::ID_CREDENCIAL,-2);
    $c->add(PerfilesCredencialesPeer::ESTADO,1);
    $this->super_administrador = PerfilesCredencialesPeer::doSelectOne($c);

  }

  public function executeUpdate($request)
  {
    //$this->forward404If(!$request->isMethod('POST'));

 

    $contador = $this->getRequestParameter('contador');
    $perfil = PerfilesPeer::retrieveByPk($this->getRequestParameter('id'));
    $mensaje = '&&&';
    if(!$perfil):
	    $mensaje = '&&&&';
	    $perfil = new Perfiles;
	    $perfil->setUsername($this->getUser()->getAttribute('idUser'));
	    $perfil->setDescripcion($this->getRequestParameter('descripcion'));
	    
if($this->getRequestParameter('estado')==1):
$perfil->setEstado($this->getRequestParameter('estado'));
else:
$perfil->setEstado(0);
endif;
	    $perfil->save();
	
	    $c = new Criteria();
	    $c->addDescendingOrderByColumn(PerfilesPeer::ID);
	    $perfil = PerfilesPeer::doSelectOne($c);
    else:
	    $perfil->setDescripcion($this->getRequestParameter('descripcion'));
	  if($this->getRequestParameter('estado')==1):
$perfil->setEstado($this->getRequestParameter('estado'));
else:
$perfil->setEstado(0);
endif;
	    $perfil->save();
    endif;

    //Se verifican los permisos creados
    for($i=0;$i<$contador;$i++):
	    $contador_menu = $this->getRequestParameter('contador_'.$i);
	    for($j=0;$j<$contador_menu;$j++):
		    $id_credencial = $this->getRequestParameter($i . '/' . $j);


		    //Se deben verificar si existen perfiles credenciales
		    PerfilesCredencialesPeer::actualizaPerfilCredencial($perfil->getId(),$id_credencial,$this->getRequestParameter($id_credencial.'-'.$j));
	    endfor;
    endfor;
  
    if($this->getUser()->hasCredential('admin') || $this->getUser()->hasCredential('superadmin')):
	    PerfilesCredencialesPeer::actualizaPerfilCredencial($perfil->getId(),-1,$this->getRequestParameter('administrador'));
	    PerfilesCredencialesPeer::actualizaPerfilCredencial($perfil->getId(),-2,$this->getRequestParameter('super_administrador'));
    endif;
    
    return $this->redirect("perfiles/index?_=$mensaje");
  }
}

