<?php

class elegirProductoAction extends sfAction{

  public function execute(){
    
    // Inicio del Wizard - Paso 100
    $sv = new sessionValidate($this);
    $sv->setSessionAtt('sirevih_web', 'encuesta', 100);

    // Constantes YML
    $constantes = sfYaml::load(sfConfig::get('sf_root_dir').'/config/const.yml');

    // Parámetros que vienen del updateElegirProducto
    $producto_objeto_id = $this->getRequestParameter('producto_objeto_id');
    $producto_sub_objeto_id = $this->getRequestParameter('producto_sub_objeto_id');

    $errormsg = 0;

    $subobjeto_options = array();


    //Objeto Usuario
    $usuario = SolicitudUsuarioNatPeer::retrieveByPk($this->getUser()->getAttribute('id'));

    $c = new Criteria();

    if (!$usuario){

      $this->redirect('login/index');

    }
    else {

      if (!$usuario->getPersonaId()) {

        $errormsg = 'Usted no está registrado en el sistema.';

      }
      else {

        // Objeto Persona
        $persona = PersonaPeer::retrieveByPk($usuario->getPersonaId());

        if ($persona->pertenece_a_grupo_familiar()){

          $errormsg = "Esta persona ya pertenece al grupo familiar de: <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;C.I. No.".$persona->getCedula()." Nombre: ".$persona->getPrimerApellido().", ".$persona->getPrimerNombre();

        }
		
		//print_r($persona->getCedula());
		//print_r($persona);
		//die;

        if ($constantes["valida_aportante"]) {

          // Se verifica si la persona es aportante al FAOV
          $c->add(EmpleadorAportantePeer::PERSONA_ID, $persona->getId());

          $c->addDescendingOrderByColumn(EmpleadorAportantePeer::FECHA_INGRESO);

          $empleador_aportante = EmpleadorAportantePeer::doSelectOne($c);

          $c->clear();
		  
		  // Se verifica si la persona esta en el historico
		
		$funcion_bd = new FuncionBdReturn();
		$params = array();
	 	$cedula = str_replace(".","",$persona->getCedula());
		$nacionalidad = (str_replace("1","V",$persona->getNacionalidad())) ? 'V' : 'E';

	 	//$nacionalidad = ($persona->getNacionalidad()) ? 1 : 0;	 
     	$params['pcedula'] = $cedula;
	 	$params['pnacionalidad'] = $nacionalidad;
		
		//print_r($params['pcedula']);
		//print_r($params['pnacionalidad']);
		//die;
		
	 	$aportante_historico = $funcion_bd->execProcedure('F_APORTANTE_HISTORICO', $params);
		
		//print_r($aportante_historico);
		//die;

          if ((!$empleador_aportante) and ($aportante_historico == 0)) {

            $errormsg = 'Usted no es aportante activo al Fondo de Ahorro Obligatorio de Vivienda (FAOV) o al Fondo de Ahorro Voluntario de Vivienda (FAVV).';

          }
		  
 

		  
          /*else {

            if ($empleador_aportante->getFechaEgreso() || $empleador_aportante->getEliminado()) {

              $errormsg = 'Usted no es aportante activo al Fondo de Ahorro Obligatorio de Vivienda (FAOV) o al Fondo de Ahorro Voluntario de Vivienda (FAVV).';

            }	
		
          }*/

        }
        
        //VERIDICA SI UN CIUDADANO ESTA BLOQUEADO (PAO)
        
        $funcion_bd = new FuncionBdReturn();
	$params = array();
	$cedula = str_replace(".","",$persona->getCedula());
	$nacionalidad = ($persona->getNacionalidad()) ? 1 : 0;	 
        $params['pcedula'] = $cedula;
	$params['pnacionalidad'] = $nacionalidad;
	$bloqueado= $funcion_bd->execProcedure('F_BLOQUEA_AHORRISTA', $params);
        
        if ($bloqueado == 1) {
            $errormsg = 'Usted tiene una Solicitud Protocolizada la cual no está Liquidada, Por Favor Dirigase a su Operador Financiero .';
        } 
                
         
         
         
        
	// Fecha Registro pao (Verifica la última fecha de registro
	$funcion_bd = new FuncionBdReturn();
	$params = array();
	$cedula = str_replace(".","",$persona->getCedula());
	$nacionalidad = ($persona->getNacionalidad()) ? 1 : 0;	 
        $params['pcedula'] = $cedula;
	$params['pnacionalidad'] = $nacionalidad;
	$fecha_meses= $funcion_bd->execProcedure('F_FECHA_RETIRO', $params);

	 
	 // Se verifica si la fecha de retiro es menor a x fecha 



	$c->add(SolicitudSolteNatPeer::PERSONA_ID, $persona->getId());

        $solicitud_solte_nat = SolicitudSolteNatPeer::doSelectOne($c);

        $c->clear();
		

		 if ($solicitud_solte_nat){

            $c->add(SolicitudSolicitudPeer::SOLICITUD_SOLTE_NAT_ID, $solicitud_solte_nat->getId());
			
	    //$c->add(SolicitudSolicitudPeer::SOLICITUD_ESTATUS_SOL_ID, $constantes["solicitud_estatus_aprobada"]);
			
	    $c->add(SolicitudSolicitudPeer::SOLICITUD_ESTATUS_SOL_ID, $constantes["solicitud_estatus_rechazada"] , Criteria::NOT_IN);

            $c->add(ProductoProductoPeer::PRODUCTO_TIPO_PRODUCTO_ID, $constantes["producto_retiro"]);

            $c->addJoin(SolicitudSolicitudPeer::PRODUCTO_PRODUCTO_ID, ProductoProductoPeer::ID);

            $c->addDescendingOrderByColumn(SolicitudSolicitudPeer::ID);

            $solicitud_solicitud = SolicitudSolicitudPeer::doSelectOne($c);

            $c->clear();
            
          // print_r($fecha_meses);
          //  die;
			
	if ($solicitud_solicitud) {
		if ($fecha_meses <= $constantes["meses"]) {
		
			if (($solicitud_solicitud->getFechaCreacion()) >= ($constantes['fecha_retiro'])){
		
				$errormsg = 'De acuerdo a lo estipulado el tiempo minimo para realizar un proximo retiro es de Tres (3) Años.';
			}
			elseif  ($aportante_historico == 0){
			$errormsg = 'De acuerdo a lo estipulado el tiempo minimo para realizar un proximo retiro es de Tres (3) Años..';
			}
		//$errormsg = 'De acuerdo a lo estipulado el tiempo minimo para realizar un proximo retiro es de Tres (3.3) Años.';
		}
	}
	
	
	}
	
	
        if (!$errormsg){

          // Se verifica si tiene solicitud de retiro pendiente
          $c->add(SolicitudSolteNatPeer::PERSONA_ID, $persona->getId());

          $solicitud_solte_nat = SolicitudSolteNatPeer::doSelectOne($c);

          $c->clear();

          if ($solicitud_solte_nat){

            $c->add(SolicitudSolicitudPeer::SOLICITUD_SOLTE_NAT_ID, $solicitud_solte_nat->getId());

            $c->add(ProductoProductoPeer::PRODUCTO_TIPO_PRODUCTO_ID, $constantes["producto_retiro"]);

            $c->addJoin(SolicitudSolicitudPeer::PRODUCTO_PRODUCTO_ID, ProductoProductoPeer::ID);

            $c->addDescendingOrderByColumn(SolicitudSolicitudPeer::ID);

            $solicitud_solicitud = SolicitudSolicitudPeer::doSelectOne($c);

            $c->clear();

			//die($solicitud_solicitud->getId());
            if ($solicitud_solicitud){

              $producto_producto = ProductoProductoPeer::retrieveByPk($solicitud_solicitud->getProductoProductoId());

              $solicitud_estatus_sol_id = $solicitud_solicitud->getSolicitudEstatusSolId();

              if (($solicitud_estatus_sol_id == $constantes['solicitud_estatus_banavih']) ||
                  ($solicitud_estatus_sol_id == $constantes['solicitud_estatus_tramite']) ||
                  ($solicitud_estatus_sol_id == $constantes['solicitud_estatus_aprobada']) ||
                  ($solicitud_estatus_sol_id == $constantes['solicitud_estatus_pendiente']) ||
				  ($solicitud_estatus_sol_id == $constantes['solicitud_estatus_stanbay']) ||
                  ($solicitud_estatus_sol_id == $constantes['solicitud_estatus_fondos_transferidos'])){

                $errormsg = 'Usted tiene una solicitud en proceso.';

              }

            }
            else {

              $producto_producto = new ProductoProducto();

            }

          }
          else {
			
            $solicitud_solte_nat = new SolicitudSolteNat();

            $producto_producto = new ProductoProducto();

          }

          if ($producto_producto->getProductoObjetoId() && !$producto_objeto_id) {

            $producto_objeto_id = $producto_producto->getProductoObjetoId();

          }

          if ($producto_objeto_id) {

            $c->add(ProductoSubObjetoPeer::PRODUCTO_OBJETO_ID, $producto_objeto_id);

            $c->addAscendingOrderByColumn(ProductoSubObjetoPeer::NOMBRE);

            $subobjetos = ProductoSubObjetoPeer::doSelect($c);

            $subobjeto_options[''] = '';

            foreach ($subobjetos as $sub_objeto) {

              $subobjeto_options[$sub_objeto->getId()] = $sub_objeto->getNombre();

            }

          }

        }

      }

    }
	

    $this->persona = $persona;
    $this->solicitud_solte_nat = $solicitud_solte_nat;
    $this->producto_producto = $producto_producto;
    $this->errormsg = $errormsg;
    $this->subobjeto_options = $subobjeto_options;
    $this->producto_sub_objeto_id = $producto_sub_objeto_id;
  }

}
