<?php

require_once dirname(__FILE__).'/../lib/intervencionGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/intervencionGeneratorHelper.class.php';

/**
 * intervencion actions.
 *
 * @package    Proyecto Quilmes
 * @subpackage intervencion
 * @author     JuanAnte
 * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
 */
class intervencionActions extends autoIntervencionActions
{
  
public function normalize ($string) {

    $table = array(

        'Å '=>'S', 'Å¡'=>'s', 'Ä�'=>'Dj', 'Ä‘'=>'dj', 'Å½'=>'Z', 'Å¾'=>'z', 'ÄŒ'=>'C', 'Ä�'=>'c', 'Ä†'=>'C', 'Ä‡'=>'c',

        'Ã€'=>'A', 'Ã�'=>'A', 'Ã‚'=>'A', 'Ãƒ'=>'A', 'Ã„'=>'A', 'Ã…'=>'A', 'Ã†'=>'A', 'Ã‡'=>'C', 'Ãˆ'=>'E', 'Ã‰'=>'E',

        'ÃŠ'=>'E', 'Ã‹'=>'E', 'ÃŒ'=>'I', 'Ã�'=>'I', 'ÃŽ'=>'I', 'Ã�'=>'I', 'Ã‘'=>'N', 'Ã’'=>'O', 'Ã“'=>'O', 'Ã”'=>'O',

        'Ã•'=>'O', 'Ã–'=>'O', 'Ã˜'=>'O', 'Ã™'=>'U', 'Ãš'=>'U', 'Ã›'=>'U', 'Ãœ'=>'U', 'Ã�'=>'Y', 'Ãž'=>'B', 'ÃŸ'=>'Ss',

        'Ã '=>'a', 'Ã¡'=>'a', 'Ã¢'=>'a', 'Ã£'=>'a', 'Ã¤'=>'a', 'Ã¥'=>'a', 'Ã¦'=>'a', 'Ã§'=>'c', 'Ã¨'=>'e', 'Ã©'=>'e',

        'Ãª'=>'e', 'Ã«'=>'e', 'Ã¬'=>'i', 'Ã­'=>'i', 'Ã®'=>'i', 'Ã¯'=>'i', 'Ã°'=>'o', 'Ã±'=>'n', 'Ã²'=>'o', 'Ã³'=>'o',

        'Ã´'=>'o', 'Ãµ'=>'o', 'Ã¶'=>'o', 'Ã¸'=>'o', 'Ã¹'=>'u', 'Ãº'=>'u', 'Ã»'=>'u', 'Ã½'=>'y', 'Ã½'=>'y', 'Ã¾'=>'b',

        'Ã¿'=>'y', 'Å”'=>'R', 'Å•'=>'r',

    );


    return utf8_decode(strtr($string, $table));

 }

 public function executeExportarAExcel(sfWebRequest $request) {
    
 	$intervenciones = $_GET['interv'];
 	
    $c = Propel::getConnection();
    $query = $_SESSION['consulta_actual'];
     
    if ( isset($intervenciones) && ! empty($intervenciones) ) {
    	$query = str_replace ( "WHERE" , "WHERE i.id IN ($intervenciones) AND", $query);
    }
     
     $statement = $c->prepare($query);
     $statement->execute();
     
     $c=0;
     while($result = $statement->fetch(PDO::FETCH_ASSOC)){
        //$resulset[$c]["nombre_apellido"] = $result["nombreTit"]." ".$result["apeTit"];
     	$resulset[$c]["nombre"]= $result["nombreTit"];
     	$resulset[$c]["apellido"] = $result["apellidoTit"];
     	$resulset[$c]["estado"] = $result["est"];
        $resulset[$c]["cantidad"] = $result["cantidad_ayuda"];
        $resulset[$c]["tipo"] = $result["codigo"];
        $resulset[$c]["fecha_alta"] = $result["fecha_alta"];
        $resulset[$c]["fecha_ingreso_adm"] = $result["fecha_ingreso_adm"];
        $resulset[$c]["fecha_enviado_galpon"] = $result["fecha_enviado_galpon"];
        $resulset[$c]["fecha_recibido_galpon"] = $result["fecha_recibido_galpon"];
        $resulset[$c]["asignado_a_partida"] = $result["orden_de_compra"];
        $c++;
     }
     #$fd = fopen(dirname(__FILE__).'/../../../../../web/exportacion_intervenciones.csv', "w+");
     $fd = fopen(sfConfig::get('sf_root_dir').'/web/exportacion_intervenciones.csv', "w+");

     fwrite($fd, str_replace(";", " ", "Nombre").";".
     			  str_replace(";", " ", "Apellido").";".
     			  str_replace(";", " ", "Tipo").";".
                  str_replace(";", " ", "Cantidad").";".
                  str_replace(";", " ", "Fecha Alta").";".
                  str_replace(";", " ", "Fecha Ingreso a Admin").";".
                  str_replace(";", " ", "Fecha Envio a Galpon").";".
                  str_replace(";", " ", "Fecha Recibido de Galpon").";".
                  str_replace(";", " ", "Asignado a partida").";".
                  str_replace(";", " ", "Estado\n")
              );
      
      foreach($resulset as $intervencion){
       
fwrite($fd, str_replace(";", " ", $this->normalize($intervencion["nombre"])).";".

                    str_replace(";", " ", $this->normalize($intervencion["apellido"])).";".
					
					str_replace(";", " ", $this->normalize($intervencion["tipo"])).";".

                    str_replace(";", " ", $this->normalize($intervencion["cantidad"])).";".

                    str_replace(";", " ", $this->normalize($intervencion["fecha_alta"])).";".

                    str_replace(";", " ", $this->normalize($intervencion["fecha_ingreso_adm"])).";".

                    str_replace(";", " ", $this->normalize($intervencion["fecha_enviado_galpon"])).";".

                    str_replace(";", " ", $this->normalize($intervencion["fecha_recibido_galpon"])).";".

                    str_replace(";", " ", $this->normalize($intervencion["asignado_a_partida"])).";".

                    str_replace(";", " ", $this->normalize($intervencion["estado"])).";". "\n"

                ); 
       }
    

    fclose($fd);
    $this->redirect('/exportacion_intervenciones.csv');     
     
     
 }
  
  public function executeBusqueda(){
  	// Trabajadores
  	$this->trabajadores = sfGuardUserQuery::create()
	  	->add(sfGuardUserPeer::IS_ACTIVE, true)
	  	->addJoin(sfGuardUserPeer::ID, sfGuardUserPermissionPeer::USER_ID)
	  	->add(sfGuardUserPermissionPeer::PERMISSION_ID, 2)	// Permisos de Trabajador Social
	  	->find(); 

  	// Estados
  	$estado = EstadoIntervencionQuery::create()
				  	->orderBy("Nombre", "ASC")
				  	->find();
  	$this->estados = array();
  	$this->estados[''] = "Todos";
  	foreach($estado as $unEstado){
  		$this->estados[$unEstado->getId()] = $unEstado->getNombre();
  	}
  }

  public function executeCancelar(sfWebRequest $request){
    
    $intervencion = IntervencionQuery::create()
                    ->findPk($request->getParameter('intervencion_id'));
    $intervencion->setEstadoId(3);
    $intervencion->setMotivoCancelacion($request->getParameter('motivo'));
	$intervencion->setFechaCancelado(time());
    $intervencion->save();
    $this->redirect($this->getController()->genUrl("intervencion/busqueda"));
    
  }
  
  
  public function executeIngresoAdministrativo(sfWebRequest $request){
  
  	$intervencion = IntervencionQuery::create()
  	->findPk($request->getParameter('intervencion_id'));
  	$intervencion->setEstadoId(EstadoIntervencion::AREA_ADMINISTRATIVA);
  	$intervencion->setFechaIngresoAdm(time());
  	$intervencion->save();
  	$this->redirect($this->getController()->genUrl("intervencion/busqueda"));
  
  }
  

  public function executeAsignaSeleccionados(sfWebRequest $request){
    $ids = $request->getParameter('intervenciones');
    $ordenDeCompra= $request->getParameter('orden_de_compra');
    if(isset ($ids) && !empty($ids)){
      foreach($request->getParameter('intervenciones') as $unId){
        $audita = new AuditoriaAsignarPartida();
        $audita->setFecha(time());
        $audita->setIntervencionId($unId);
        $audita->setsfGuardUser($this->getUser()->getGuardUser());
        $audita->save();
        $intervencion = IntervencionQuery::create()
                      ->findPk($unId);
        $intervencion->setAsignadoAPartida(1);
        $intervencion->setOrdenDeCompra($ordenDeCompra);
        $intervencion->save();
      }
    }
    $this->redirect($this->getController()->genUrl("intervencion/busqueda"));
  }
  
  public function executeDesasignaSeleccionados(sfWebRequest $request){
    $ids = $request->getParameter('intervenciones');
    if(isset ($ids) && !empty($ids)){
      foreach($request->getParameter('intervenciones') as $unId){
        $audita = new AuditoriaAsignarPartida();
        $audita->setFecha(time());
        $audita->setIntervencionId($unId);
        $audita->setsfGuardUser($this->getUser()->getGuardUser());
        $audita->save();
        $intervencion = IntervencionQuery::create()
                      ->findPk($unId);
        $intervencion->setAsignadoAPartida(0);
        $intervencion->setOrdenDeCompra(null);
        $intervencion->save();
      }
    }
    $this->redirect($this->getController()->genUrl("intervencion/busqueda"));
  }


  
  public function executeEnviadoGalpon(sfWebRequest $request){
    
    $intervencion = IntervencionQuery::create()
                    ->findPk($request->getParameter('intervencion_id'));
    $intervencion->setEstadoId(EstadoIntervencion::EN_GALPON);
    $intervencion->setFechaEnviadoGalpon(time());
    $intervencion->save();
    $this->redirect($this->getController()->genUrl("intervencion/busqueda"));
    
  }
  
  public function executeRecibidoGalpon(sfWebRequest $request){
    
    $intervencion = IntervencionQuery::create()
                    ->findPk($request->getParameter('intervencion_id'));
    $intervencion->setEstadoId(EstadoIntervencion::ENTREGADO);
    $intervencion->setFechaRecibidoGalpon(time());
    $intervencion->save();
    $this->redirect($this->getController()->genUrl("intervencion/busqueda"));
    
  }
  
  public function executeRecibidoAdministrativo(sfWebRequest $request){
  
  	$intervencion = IntervencionQuery::create()
  	->findPk($request->getParameter('intervencion_id'));
  	$intervencion->setEstadoId(EstadoIntervencion::REGRESO_AREA_ADMIN);
  	$intervencion->setFechaRegresoAdm(time());
  	$intervencion->save();
  	$this->redirect($this->getController()->genUrl("intervencion/busqueda"));
  
  }

  public function executeEditar(sfWebRequest $request){

    $intervencion = IntervencionQuery::create()
                    ->findPk($request->getParameter('intervencion_idEdit'));
    $intervencion->setComentario($intervencion->getComentario()." / ".$request->getParameter('comentarios'));

    $ayudaOriginal = $intervencion->getCantidadAyudaOriginal();
    if(empty($ayudaOriginal)){
      $intervencion->setCantidadAyudaOriginal($intervencion->getCantidadAyuda());
    }
    
    $intervencion->setCantidadAyuda($request->getParameter('nueva_cantidad'));
    //$intervencion->setFechaIngresoAdm($request->getParameter('fechaIngresoAdm'));
    $intervencion->save();
    $this->redirect($this->getController()->genUrl("intervencion/busqueda"));

  }

  public function executeModificaCantidad(sfWebRequest $request){
    $ayudaIntervencion = AyudaIntervencionQuery::create()
                         ->findPk($request->getParameter('ayuda_id'));

    $ayudaIntervencion->setCantidad($request->getParameter('cantidad'));
    $ayudaIntervencion->save();
    $this->redirect($this->getController()->genUrl("intervencion/edit?id=".$ayudaIntervencion->getIntervencionId()));

  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $esNuevo = $form->getObject()->isNew();
      $notice = $form->getObject()->isNew() ? 'The item was created successfully.' : 'The item was updated successfully.';

      $Intervencion = $form->save();
      
      $Intervencion->setEstadoId(2);
      $Intervencion->save();
      
      $this->dispatcher->notify(new sfEvent($this, 'admin.save_object', array('object' => $Intervencion)));

      if ($request->hasParameter('_save_and_add'))
      {
        $this->getUser()->setFlash('notice', $notice.' You can add another one below.');

        $this->redirect('@intervencion_new');
      }
      else
      {
        $this->getUser()->setFlash('notice', $notice);

        $this->redirect($this->getController()->genUrl("intervencion/busqueda"));
      }
    }
    else
    {
      $this->getUser()->setFlash('error', 'The item has not been saved due to some errors.', false);
    }
  }

  public function executeQueryAjax(sfWebRequest $request) {
    $nombre           = trim($request->getParameter('nombre'));
    $apellido	      = trim($request->getParameter('apellido'));
    $documento        = trim($request->getParameter('documento'));
    $folio       	  = trim($request->getParameter('folio'));
    $fecha_nacimiento = trim($request->getParameter('fecha_nacimiento'));
    $tSocial          = trim($request->getParameter('tSocial'));
    $barrio           = trim($request->getParameter('barrio'));
    $estado_id    	  = trim($request->getParameter('estado_id'));
    $incendio         = trim($request->getParameter('incendio'));
    $discapacidad     = trim($request->getParameter('discapacidad'));
    
    $hay_parametros = 0;
    
    
    //guardo la busqueda en la sesion
    if(!empty($nombre)){
    	$_SESSION['int_nombreTit'] = $nombre;
    	$hay_parametros = 1;
    } else {
    	unset($_SESSION['int_nombreTit']);
    }
    
    
    if(!empty($apellido)){
    	$_SESSION['int_apellidoTit'] = $apellido;
    	$hay_parametros = 1;
    } else {
    	unset($_SESSION['int_apellidoTit']);
    }  
    
    if(!empty($documento)){
    	$_SESSION['int_documento'] = $documento;
    	$hay_parametros = 1;
    } else {
    	unset($_SESSION['int_documento']);
    }
    if(!empty($folio)){
    	$_SESSION['int_folio'] = $folio;
    	$hay_parametros = 1;
    } else {
    	unset($_SESSION['int_folio']);
    }
    if(!empty($fecha_nacimiento)){
    	$_SESSION['int_fecha_nacimiento'] = $fecha_nacimiento;
    	$hay_parametros = 1;
    } else {
    	unset($_SESSION['int_fecha_nacimiento']);
    }
    if(!empty($tSocial)){
    	$_SESSION['int_tSocial'] = $tSocial;
    	$hay_parametros = 1;
    } else {
    	unset($_SESSION['int_tSocial']);
    }
    if(!empty($barrio)){
    	$_SESSION['int_barrio'] = $barrio;
    	$hay_parametros = 1;
    } else {
    	unset($_SESSION['int_barrio']);
    }
    if(!empty($estado_id)){
    	$_SESSION['int_estado_id'] = $estado_id;
    } else {
    	unset($_SESSION['int_estado_id']);
    }
    if(!empty($incendio)){
    	$_SESSION['int_incendio'] = $incendio;
    	$hay_parametros = 1;
    } else {
    	unset($_SESSION['int_incendio']);
    }
    if(!empty($discapacidad)){
    	$_SESSION['int_discapacidad'] = $discapacidad;
    	$hay_parametros = 1;
    } else {
    	unset($_SESSION['int_discapacidad']);
    }
    
    
    $w = " 1=1 AND";
    //armo el where   
    if(!empty($nombre))
    	$w .= " (p.nombre like '%".$nombre."%') AND";
    if(!empty($apellido))
    	$w .= " (p.apellido like '%".$apellido."%') AND";
    if(!empty($documento))
      $w .= " p.numero_documento like '%".$documento."%' AND";
    if(!empty($folio))
    	$w .= " e.nrofolio = '".$folio."' AND";
    if(!empty($fecha_nacimiento)) {
    	list($day, $month, $year) = explode('/', $fecha_nacimiento); // Supongo que viene dd/MM/YY o dd/mm/YYYY
    	$fe = $year . $month . $day;
    	$w .= " p.fecha_nacimiento = '".$fe."' AND";
    }
    if(!empty($tSocial))
    	$w .= " e.usuario_ts = '".$tSocial."' AND";
    if(!empty($barrio))
    	$w .= " p.barrio LIKE '%".$barrio."%' AND";
    if(!empty($estado_id))
    	$w .= " i.estado_id = '".$estado_id."' AND";
    if(!empty($incendio))
    	$w .= " i.incendio = ".$incendio." AND";
    if(!empty($discapacidad))
    	$w .= " p.discapacidad = ".$discapacidad." AND";
    
    $w = substr($w, 0,strlen($w)-3);
      
     
    $c = Propel::getConnection();
    $query = "SELECT i.id,
                     i.numero_remito,
                     i.estado_id,
                     e.numero as 'numero_encuesta',
                     p.nombre as 'nombreTit',
                     p.apellido as 'apellidoTit',
                     es.nombre as 'est',
                     es.id as 'estatoid',
                     i.cantidad_ayuda,
                     i.cantidad_ayuda_original,
                     p.numero_documento,
                     ta.codigo,
                     DATE_FORMAT(i.fecha_alta,'%d/%m/%Y') as fecha_alta,
                     DATE_FORMAT(i.fecha_ingreso_adm,'%d/%m/%Y') as fecha_ingreso_adm,
                     DATE_FORMAT(i.fecha_enviado_galpon,'%d/%m/%Y') as fecha_enviado_galpon,
                     DATE_FORMAT( i.fecha_regreso_adm,'%d/%m/%Y') as fecha_regreso_adm,
                     i.asignado_a_partida,
                     i.orden_de_compra,
					 i.incendio
                     FROM intervencion i, encuesta e, persona p, estado_intervencion es ,tipo_ayuda ta
                WHERE i.encuesta_id = e.id AND
                      e.titular_id = p.id AND
                      i.estado_id = es.id AND
                      i.tipo_ayuda_id = ta.id AND 
                      ".$w."
                      GROUP BY
                            i.id,
                            i.numero_remito,
                            i.estado_id,
                            i.cantidad_ayuda,
                            i.cantidad_ayuda_original,
                            e.numero,
                            p.numero_documento,
                            p.nombre,
                            p.apellido,
                            es.nombre,
                            ta.codigo,
                            es.id,
                            i.fecha_alta,
                            i.fecha_ingreso_adm,
                            i.fecha_enviado_galpon,
                            i.fecha_recibido_galpon,
                            i.asignado_a_partida,
                            i.orden_de_compra
                      ORDER BY i.numero_remito DESC";
    //echo $query; exit;
    $_SESSION['consulta_actual'] = $query;
    
    $statement = $c->prepare($query);
    $statement->execute();

    $resulset = array();
    $c=0;
    if($noEncontroFam != 1){
      while($result = $statement->fetch(PDO::FETCH_ASSOC)){
        $resulset[$c][0] = $result["id"];
        $resulset[$c][1] = $result["numero_remito"];
        $resulset[$c][2] = $result["numero_encuesta"];
        $resulset[$c][3] = $result["apellidoTit"]." ". $result["nombreTit"];     
        $resulset[$c][4] = $result["est"];
        $resulset[$c][5] = $result["estatoid"];
        $resulset[$c][6] = $result["cantidad_ayuda"];
        $resulset[$c][7] = $result["numero_documento"];
        $resulset[$c][8] = $result["codigo"];
        $resulset[$c][9] = $result["fecha_alta"];
        //$resulset[$c][9] = $result["fecha_ingreso_adm"];
        $resulset[$c][10] = $result["fecha_enviado_galpon"];
        $resulset[$c][11] = $result["fecha_regreso_adm"];
        $resulset[$c][12] = $result["numero_documento"];
        $resulset[$c][13] = $result["asignado_a_partida"];
        $resulset[$c][14] = $result["orden_de_compra"];
		$resulset[$c][15] = ($result["incendio"] ? 'SI' : 'NO');
		$resulset[$c][16] = $result["cantidad_ayuda_original"];
		$resulset[$c][17] = $result["apellidoTit"]." ".$result["apeTit"];
        $c++;
      }
    }
    

    return $this->renderPartial('intervencion/resultados',array('intervenciones' => $resulset));
  }

  
}
