<?php

/**
 * usuarios actions.
 *
 * @package    comisiones
 * @subpackage usuarios
 * @author     Software House LTDA <gerencia@sofhouse.net>
 * @version    SVN: $Id: actions.class.php 9301 2008-05-27 01:08:46Z dwhittle $
 */
class usuariosActions extends sfActions
{

  protected $Mensajes = array(
                               '&&&' => 'Se ha actualizado el usuario correctamente',
                               '&&&&' => 'Se ha creado el usuario correctamente',
  								'tildes' => 'No puede utilizar tildes o &ntilde;'
  );
  /**
   * Executes index action
   *
   * @param sfRequest $request A request object
   */
  public function executeIndex($request)
  {
    $this->usuarios = UsuariosPeer::doSelectJoinAll(new Criteria);
    $this->actual   = $this->getUser()->getAttribute('id');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404If(!$request->isMethod('POST'));
    $this->usuario   = UsuariosPeer::retrieveByPk($this->getRequestParameter('id'));
    $this->titulo    = "Edici&oacute;n del usuario " . strtoupper($this->usuario->getUsername());

    $this->new = false;
    
    $c = new Criteria();
    $c->add(PerfilesPeer::ESTADO,1);
    $c->addAscendingOrderByColumn(PerfilesPeer::DESCRIPCION);
    $this->perfiles  = PerfilesPeer::doSelect($c);
  }

  public function executeCreate()
  {
    $this->titulo  = "Nuevo usuario";
	$this->usuario = false;

    $c = new Criteria();
    $c->add(PerfilesPeer::ESTADO,1);
    $c->addAscendingOrderByColumn(PerfilesPeer::DESCRIPCION);
    $this->perfiles  = PerfilesPeer::doSelect($c);
    
    $this->setTemplate('edit');
  }
  
  public function executeCrear() {
  	$idPerfil = $this->getRequestParameter('id_perfil');
  	$username = $this->getRequestParameter('username');
  	$pass = $this->getRequestParameter('pass');
  	$estado = $this->getRequestParameter('estado');
  	$nitocc = $this->getRequestParameter('nitocc');
  	
  	if($username != utils::utfToAcute($username) || $pass != utils::utfToAcute($pass)):
  		$this->getUser()->setFlash('message', '<p class="error">No puede utilizar tildes o ñ</p>');
  		$this->forward('usuarios','create');
  	else:
  		if($pass == ''):
  			$this->getUser()->setFlash('message', '<p class="error">Debe ingresar una contraseña</p>');
  			$this->forward('usuarios','create');
  		endif;
  	
	  	$usuario = new Usuarios();
	  	$usuario->setIdPerfil($idPerfil);
	  	$usuario->setUsername($username);
	  	$usuario->setPass(sha1($pass));
	  	$usuario->setEstado($estado);
	  	$usuario->setNitocc($nitocc);
	  	
	  	$usuario->save();
	  	
	  	$this->getUser()->setFlash('message', '<p class="warning">El usuario '.$username.' ha sido creado</p>');
	  	$this->redirect('usuarios/index');
  	endif;
  }
  
  public function handleErrorCrear()
  {
	$this->forward('usuarios', 'create');
  }

  public function handleErrorUpdate()
  {
	$this->forward('usuarios', 'edit');
  }

  public function executeUpdate(sfWebRequest $request)
  {
  	$id = $this->getRequestParameter('id');
  	$idPerfil = $this->getRequestParameter('id_perfil');
  	$pass = $this->getRequestParameter('pass');
  	$estado = $this->getRequestParameter('estado');

  	//revisar validez parametros
  	if($pass != utils::utfToAcute($pass)):
  		$this->getUser()->setFlash('message', '<p class="error">No puede utilizar tildes o ñ</p>');
  		$this->forward('usuarios','edit');
  	else:
  	    $this->forward404If(!$request->isMethod('POST'));
	    //Se actualiza el usuario
	    $usuario = UsuariosPeer::retrieveByPk($id);
	    
	    $usuario->setIdPerfil($idPerfil);
	    $pass != null ? $usuario->setPass(sha1($pass)) : '';
	    $usuario->setEstado($estado == null ? 0 : $estado);
	    $usuario->setFkUsername($this->getUser()->getAttribute('id'));
	    
	    //TODO Se debe enviar un correo electronico al tercero creado
	    $this->getUser()->setFlash('message', '<p class="warning">El usuario ha sido editado</p>');
	    $usuario->save();
    endif;

    $this->redirect('usuarios/index');
  }
  
//  public function executeMailTest() {
//	//Create the message
//	require_once sfConfig::get('sf_lib_dir').'/swift-4.0.6/lib/swift_required.php';
//
//	$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');
////	$transport = Swift_MailTransport::newInstance();
//	$mailer = Swift_Mailer::newInstance($transport);
//		
//	$str = 'this is my body';
//	$message = Swift_Message::newInstance();
////	$message->setCharset('utf8');
//	$message->setSubject('Your subject');
//	$message->setFrom(array('john@doe.com' => 'John Doe'));
//	$message->setTo(array('andresfmol@sofhouse.net'));
////	$message->setBody($str);
//	$message->addPart('Mensaje en <b>HTML</b> enviado desde <span style="color: red">Comisiones_Dev</span> en Symfony 1.1.9', 'text/html');
////	$message->attach(Swift_Attachment::fromPath('my-document.pdf'));
//		  
//	//Send the message
//	$result = $mailer->send($message);
//	  
//	$this->setTemplate('index');
//  }
  
//  public function executeTimewarp() {
//  	$comisPlanta = ComisionadosPlantaPeer::doSelect(new Criteria());
//  	$comisContrato = ComisionadosContratoPeer::doSelect(new Criteria());
//  	
//  	foreach($comisPlanta as $comi):
//  		$data = explode('-',$comi->getFechaRegreso());
//    	$fecha_regreso = date("Y-m-d", mktime(0, 0, 0,$data[1], $data[2]-1, $data[0]));
//    	
//    	$comi->setFechaRegreso($fecha_regreso);
//    	$comi->save();
//  	endforeach;
//  	
//  	foreach($comisContrato as $comi):
//  		$data = explode('-',$comi->getFechaRegreso());
//    	$fecha_regreso = date("Y-m-d", mktime(0, 0, 0,$data[1], $data[2]-1, $data[0]));
//    	
//    	$comi->setFechaRegreso($fecha_regreso);
//    	$comi->save();
//  	endforeach;
//  	
//  	$this->getUser()->setFlash('message', 'Timewarp!!!!');
//  	$this->redirect('usuarios/index');
//  }
}
