<?php
class ApiController extends Zend_Controller_Action {
	
	const POTENCIAL_DEFECTO = '0056960';
	const TARIFA_DEFECTO_PRECIO = 'TARIDISPO8';
	const CONCEPTO_PRECIO = 4;

	const ACEPTADO_SI = 1;
	CONST ACEPTADO_NO = 2;
	CONST ACEPTADO_PENDIENTE = 0;
		
	public function init() {
		$layout->baseUrl = $this->_request->getBaseUrl ();
		$url = $this->_request->getBaseUrl ();
		
		if (strlen ( $url ) > 9 && substr ( $url, strlen ( $url ) - 9 ) == 'index.php') {
			$layout->publicUrl = substr ( $this->_request->getBaseUrl (), 0, - 10 );
		} else {
			
			$layout->publicUrl = substr ( $_SERVER ['SCRIPT_NAME'], 0, - 10 );
		}
		
		$layout->appUrl = substr ( $this->_request->getBaseUrl (), 0, - 17 ) . '/application';
		
		defined ( 'PUBLICURL' ) or define ( 'PUBLICURL', $layout->publicUrl ); // Necesaria para el grid
		defined ( 'BASEURL' ) or define ( 'BASEURL', $this->_request->getBaseUrl () ); // Necesaria para el grid y utilidades
		defined ( 'URL_IMAGENES' ) or define ( 'URL_IMAGENES', 'vehiculos' );
		defined ( 'URL_BASE' ) or define ( 'URL_BASE', "http://" . $_SERVER ['HTTP_HOST'] );
		$layout->class_body = 'no-right-panel';
		// Nos dice en todo momento en que controlador y action estamos
		$layout->controlador = $this->_request->getParam ( 'controller' );
		$layout->vista = $this->_request->getParam ( 'action' );
		defined ( 'CONTROLLER' ) or define ( 'CONTROLLER', $layout->controlador );
		defined ( 'ACTION' ) or define ( 'ACTION', $layout->vista );
	}
	public function preDispatch() {
		$this->_helper->layout ()->disableLayout ();
		$this->_helper->viewRenderer->setNoRender ( true );
		// print_r($SESSION);
		// AppLibreria::addJs('libs/jquery-2.0.2.min.js', '/app/js/', false);
	}
	
	public function pruebahorasAction(){
		$fechaInicio = '10/10/2015';
		$horaInicio = '22:00';
		$fechaFin = '11/10/2015';
		$horaFin = '02:00';
		$minutosCortesia = 15;
		$fechaFinMysql = AppHerramienta::fechaHumanaAMysql($fechaFin);
		$ff = strtotime($fechaFinMysql.' '.$horaFin);
		$fechaIniMysql = AppHerramienta::fechaHumanaAMysql($fechaInicio);
		$fs = strtotime($fechaIniMysql.' '.$horaInicio);
		$fs1 = $fs;
		$diferencia_ensegundos = $ff - $fs;
	
		$horas = floor( $diferencia_ensegundos / (60*60) );
	
		$minutos = ($diferencia_ensegundos - (60*60*$horas))/60;
		if ($minutos>$minutosCortesia)
			$horas +=1;
		echo $horas;
	}
	
	public function testafiliadoAction(){
		$afiliado = '0580003';
		$numeroSub = substr($afiliado,4,3);
		$numero = substr($afiliado,0,4);
		echo $numero;
		echo $numeroSub;
		
		
	}	
	
	private function validarToken($token, $origen) {
		if ($token == md5 ( '<origen>' . $origen . '</origen>' ))
			return true;
		else
			return false;
	}
	
	/**
	 * Convertir el shortcode del idioma
	 * a código de karve para hacer las búsquedas
	 * 
	 * @param string $idioma        	
	 */
	private static function idiomaToCodigoKarve($idioma) {
		switch ($idioma) {
			case 'es_ES' :
				return 1;
				break;
			case 'fr_FR' :
				return 3;
				break;
			case 'en_GB' :
				return 2;
				break;
			default :
				return 1;
		}
	}
	
	/*
	public function cobropresupuestoAction(){

		$codigoPresupuesto = $this->_request->getParam('codigoPresupuesto',-1);
		$presupuesto = new Presupuesto($codigoPresupuesto);
		
		$codigoServicio = $presupuesto->convertirAServicio();
		
		$servicio = new Servicio($codigoServicio);

		$servicio->addCobro($servicio->totalConIva);
				die('aqui');
	}
				
		$codigoPotencial = '0060432';
		$potencial = new Potencial($codigoPotencial);
		print_r($potencial);
		$codigoCliente = $potencial->toCliente();
		echo $codigoCliente;
		die('fin');
		*/
		/*
		$codigoPresupuesto = '0000035978';
		$presupueto = new Presupuesto($codigoPresupuesto);
		$codigoReserva = $presupueto->toReserva();
		echo 'Res:'.$codigoReserva;
		echo '<br/>';
		$reserva = new Reserva($codigoReserva);
		$codigoServicio = $reserva->toServicio();
		echo 'Ser:'.$codigoServicio;
		echo '<br/>';
		
		$servicio = new Servicio($codigoServicio);
		$servicio->addCobro(145, 20);
		
	}
	
	*/
	public function testcobroAction(){
		$codigoServicio = '0000008850';
		$codigoAutorizacion = '0000';
		$servicio = new Servicio($codigoServicio);
		print_r($servicio);
		$servicio->addCobro(round($servicio->totalConIva,2), $codigoAutorizacion);
		die();
		
	}
	
	
	public function notificaciontpvAction(){

		$codigoPresupuesto = $this->_request->getParam('codigoPresupuesto',1);
		$cod_respuesta = $this->_request->getParam('Ds_Response',1);
		
		$accion = -1;
		if ($cod_respuesta>='0000' && $cod_respuesta<='0099') {
			$estado_pago="Transaccion autorizada";
			$accion=1;
		} elseif ($cod_respuesta==101) {
			$estado_pago="Tarjeta caducada";
			$accion=-1;
		} elseif ($cod_respuesta==102) {
			$estado_pago="Tarjeta en excepción transitoria o bajo sospecha de fraude";
			$accion=-1;
		} elseif ($cod_respuesta==104) {
			$estado_pago="Operacion no permitida para esa tarjeta o terminal";
			$accion=-1;
		} elseif ($cod_respuesta==116) {
			$estado_pago="Disponible insuficiente";
			$accion=-1;
		} elseif ($cod_respuesta==118) {
			$estado_pago="Tarjeta no registrada";
			$accion=-1;
		} elseif ($cod_respuesta==180) {
			$estado_pago="Tarjeta ajena al servicio";
			$accion=-1;
		} elseif ($cod_respuesta==184) {
			$estado_pago="Error en la autenticacion del titular";
			$accion=-1;
		} elseif ($cod_respuesta==190) {
			$estado_pago="Denegacion sin especificar Motivo";
			$accion=-1;
		} elseif ($cod_respuesta==191) {
			$estado_pago="Fecha de caducidad erronea";
			$accion=-1;
		} elseif ($cod_respuesta==202) {
			$estado_pago="Tarjeta en excepcion transitoria o bajo sospecha de fraude con retirada de tarjeta";
			$accion=-1;
		} elseif ($cod_respuesta==912) {
			$estado_pago="Emisor no disponible";
			$accion=-1;
		} elseif ($cod_respuesta==9912) {
			$estado_pago="Emisor no disponible";
			$accion=-1;
		} elseif ($cod_respuesta==9915) {
			$estado_pago="Pago cancelado usuario";
			$accion=-1;
		} else {
			$estado_pago="Transaccion denegada";
			$accion=-1;
		}
		try {
			$presupuesto = new Presupuesto($codigoPresupuesto);
			
//			echo 'Presupuesto cargado:'.$codigoPresupuesto.'<br>';
			$codigoCliente = $presupuesto->getCodigoCliente();
			if (!$codigoCliente) {
//				echo 'Presupuesto NO tiene cliente:<br>';
				$codigoPotencial = $presupuesto->getCodigoPotencial();
				$potencial = new Potencial($codigoPotencial);
				$codigoCliente = $potencial->getCodigoCliente();
				if (!$codigoCliente){
					$codigoCliente = $potencial->toCliente();
//					echo 'Potencial NO tiene cliente.<br>';
				} else {
//					echo 'Potencial tiene cliente:'.$codigoCliente.'<br>';
				}
				$presupuesto->setCodigoCliente($codigoCliente);
				$presupuesto->save();
//				echo 'Se guarda el cliente en el potencial<br>';
			} else {
//				echo 'Presupuesto tiene cliente:'.$codigoCliente.'<br>';
			}
			

			$codigoReserva = $presupuesto->getCodigoReserva();
			if (!$codigoReserva){
				$codigoReserva = $presupuesto->toReserva();
//				echo 'Se crea la reserva:'.$codigoReserva.'<br>';
			} else {
//				echo 'Presupuesto tiene reserva:'.$codigoReserva.'<br>';
			}
			$reserva = new Reserva($codigoReserva);
			
						
		} catch (Exception $e){
			echo $e->getMessage();
		}
		if ($accion==1){  // Pago validado
			try{
				$presupuesto->setIntentoTpv('FF');
				$presupuesto->save();
//				echo 'Grabo el intentoTPV A FF (órden de karve)<br>';
				$codigoServicio = $reserva->getCodigoServicio();
				if (!$codigoServicio) {
					$codigoServicio = $reserva->toServicio();
//					echo 'Se crea el servicio '.$codigoServicio.'<br>';
				} else {
//					echo 'La reserva tiene ya un servicio '.$codigoServicio.'<br>';
				}
				$servicio = new Servicio($codigoServicio);
//				printf('Queremos cobrar: %s ', $servicio->totalConIva);
				$servicio->addCobro($servicio->totalConIva, $cod_respuesta);
//				echo 'Se cobra el servicio<br>';
			} catch (Exception $e){
				echo $e->getMessage();
				die();
			}
			$res ['datos'] = array('codigoServicio'=>$codigoServicio,'total'=>$servicio->totalConIva);
			$res ['estado'] = 1;
			$res ['mensaje_error'] = '';
				
		} else { 			// Pago erróneo
			$res ['datos'] = array('codigoIntento'=>$presupuesto->getIntentoTpv());
			$res ['estado'] = 1;
			$res ['mensaje_error'] = '';
				
			
		}
			
		echo self::json_encode_sybase ( $res );
		
	}
	
	public function getvehiculosAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
	
		$res = array ();
	
		try {
			if (self::validarToken ( $token, $origen )) {
				$datos = Vehiculo::getGruposYCoches ($origen, $empresa );
				$datos = $datos->getDatos ();
	
				if ($datos) {
					$tratados = array ();
					$tratados ['BUSINESS'] = array (
							'categoria' => 'Business',
							'observaciones' => ''
					);
					$tratados ['EXECUTIVE'] = array (
							'categoria' => 'Executive',
							'observaciones' => ''
					);
					$tratados ['VAN'] = array (
							'categoria' => 'Van',
							'observaciones' => ''
					);
					$tratados ['LIMOUSINE'] = array (
							'categoria' => 'Limousine',
							'observaciones' => ''
					);
					$tratados ['CLASICOS'] = array (
							'categoria' => 'Clásicos',
							'observaciones' => ''
					);
					// $grupo = '';
					foreach ( $datos as $coche ) {
						// if ($grupo != $coche['codigoGrupo']){
						$grupo = $coche ['codigoGrupo'];
						// $tratados[$grupo]['nombre']=$coche['nombreGrupo'];
						// $tratados[$grupo]['observaciones'] = $coche['observacionesGrupo'];
						// }
						$grupoWeb = '';
						switch ($grupo) {
							case 'A' :
							case 'B' :
							case 'D1' :
								$grupoWeb = 'BUSINESS';
								break;
							case 'E1' :
								$grupoWeb = 'EXECUTIVE';
								break;
							case 'M' :
								$grupoWeb = 'VAN';
								break;
							case 'F1' :
							case 'G' :
							case 'G1' :
								$grupoWeb = 'LIMOUSINE';
								break;
							case 'H' :
							case 'H1':
							case 'F':
							case 'E':
								$grupoWeb = 'CLASICOS';
								break;
								;
						}
						$tratados [$grupoWeb] ['vehiculos'] [] = array (
								'codigo' => $coche ['codiint'],
								'marca' => $coche ['marca'],
								'modelo' => $coche ['modelo'],
								'tarifa' => $coche ['codigoGrupo'],
								'imagen' => URL_BASE . '/' . URL_IMAGENES . '/' . $coche ['codiint'] . '/slider.png'
						);
					}
						
					$res ['datos'] = $tratados;
					$res ['estado'] = 1;
					$res ['mensaje_error'] = '';
				} else {
					$res ['estado'] = - 1;
					$res ['mensaje_error'] = 'No se encuentra ningún coche';
					$res ['datos'] = array ();
				}
			} else {
				$res ['estado'] = - 2;
				$res ['mensaje_error'] = 'Error de seguridad';
				$res ['datos'] = array ();
			}
		} catch ( Exception $e ) {
			$res ['estado'] = - 1;
			$res ['mensaje_error'] = $e->getMessage ();
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
		// echo json_encode($res);
	}

	/*
	public function cobrotpvAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
	
		$res = array ();
	
		try {
			if (self::validarToken ( $token, $origen )) {
				$codigoPresupuesto = $this->_request->getParam('codigoPresupuesto',-1);
				$importe = $this->_request->getParam('importe',-1);
				$importe = round($importe * 100,0);
				
				// Configuración del TPV para la llamada
				$terminal='002';
				$tipo_transaccion='0';
				$codigoComercio="148095821";
				//$clave='3024H7R42568JT20';
				$clave = '55U392F32128Q578';
				$nombre_comercio='VEHICULOS CON CONDUCTOR, SL';
				$moneda="978";
				$email_comercio="lcc@limousinecc.com";
				$urlcomercio='http://www.limousinecc.com/ntf/notificacion_banco.php';
				$urlok='http://www.limousinecc.com/ntf/pago_ok.php';
				$urlko='http://www.limousinecc.com/ntf/pago_error.php';
				$url_tpvv="https://sis.sermepa.es/sis/realizarPago";
				//$url_tpvv = 'https://sis-t.sermepa.es:25443/sis/realizarPago'; //entorno pruebas
				
				//Generar la firma
				$datosfirma = $importe.$codigoPresupuesto.$codigoComercio.$moneda.$tipo_transaccion.$urlcomercio.$clave;
				echo $datosfirma;
				$firma = strtoupper(sha1($datosfirma));
				
				$form= '<form id="form_banco" name="form_banco" action="'.$url_tpvv.'" method="post">';
				$form.= '<input type="hidden" name="Ds_Merchant_MerchantName" value="'.$nombre_comercio.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_Amount" value="'.$importe.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_Currency" value="'.$moneda.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_UrlOK" value="'.$urlok.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_UrlKO" value="'.$urlko.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_Order" value="'.$codigoPresupuesto.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_MerchantCode" value="'.$codigoComercio.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_Terminal" value="'.$terminal.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_TransactionType" value="'.$tipo_transaccion.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_MerchantURL" value="'.$urlcomercio.'">';
				$form.= '<input type="hidden" name="Ds_Merchant_MerchantSignature" value="'.$firma.'">';
				
				$form.= '<div class="derecha">';
				$form .= '<input type="submit" value="Realizar pago">';
				$form.= '</div>';
				$form.= '</form>';
				echo $form;
				$res ['estado'] = 1;
				$res ['mensaje_error'] = '';
				$res ['datos']['html'] = $form;
				
				
				
				
			} else {
				$res ['estado'] = - 2;
				$res ['mensaje_error'] = 'Error de seguridad';
				$res ['datos'] = array ();
			}
		} catch ( Exception $e ) {
			$res ['estado'] = - 1;
			$res ['mensaje_error'] = $e->getMessage ();
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
		// echo json_encode($res);
	}
	*/
	
	public function gettarifasAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		$lang = $this->_request->getParam ( 'lang' );
		$lang = self::idiomaToCodigoKarve ( $lang );
		
		$res = array ();
		if (self::validarToken ( $token, $origen )) {
			$datos = Tarifa::getTarifasPorOrigen ( $origen, $lang );
			$datos = $datos->getDatos ();
			if (count($datos)==0){
				$datos = Tarifa::getTarifasPorDefecto($lang);
				$datos = $datos->getDatos();
			}
			$tratados = array ();
			
			foreach ( $datos as $value ) {
				switch ($value ['codigo']) {
					case 'TARITRANF':
						$tratados['TARITRANF']['tipoServicio']= $value['nombre'];
						$tratados['TARITRANF']['condiciones'] = utf8_encode(htmlentities($value['condiciones']));
						break;
					case 'TARIDISPO1':
					case 'TARIDISPO2':
					case 'TARIDISPO3':
					case 'TARIDISPO4':
					case 'TARIDISPO5':
					case 'TARIDISPO6':
					case 'TARIDISPO7':
					case 'TARIDISPO8':
					case 'TARIDISPO9':
					case 'TARIDISPO10':
					case 'TARIDISPO12':
					case 'TARIDISPO15':
					case 'TARIDISPO24':
						$tratados['DISPO']['tipoServicio']= 'DISPO';
						$tratados['DISPO']['condiciones'] = utf8_encode(htmlentities($value['condiciones']));
						$tratados['DISPO']['tarifas'][] = $value;
						break;
					case 'TARICEREMO':
						$tratados['TARICEREMO']['tipoServicio']= $value['nombre'];
						$tratados['TARICEREMO']['condiciones'] = utf8_encode(htmlentities($value['condiciones']));					
						break;
					
				}
			}
			$res ['estado'] = 1;
			$res ['mensaje_error'] = '';
			$res ['datos'] = $tratados;
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		//print_r($res);
		//die();
		echo Zend_Json::encode ( $res );
	}

	public function savepresupuestoAction() {
		$codigoOrigen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		$comisionista = $this->_request->getParam('comisionista');
	
		$res = array ();
	
		if (self::validarToken ( $token, $codigoOrigen )) {
	
			try {
				// Recuperar parametros
				$numeroPresupuesto = $this->_request->getParam ( 'numeroPresupuesto', - 1 );
				$fechaInicio = $this->_request->getParam ( 'fechaInicio' );
				$horaInicio = $this->_request->getParam ( 'horaInicio');
				$origenCalle = $this->_request->getParam ( 'origenCalle' );
				$origenPoblacion = $this->_request->getParam ( 'origenPoblacion');
				$origenCP = $this->_request->getParam ( 'origenCP' );
				$origenNumero = $this->_request->getParam ( 'origenNumero' );
				$origenPais = $this->_request->getParam ( 'origenPais' );
				$destinoCalle = $this->_request->getParam ( 'destinoCalle' );
				$destinoPoblacion = $this->_request->getParam ( 'destinoPoblacion' );
				$destinoCP = $this->_request->getParam ( 'destinoCP' );
				$destinoNumero = $this->_request->getParam ( 'destinoNumero' );
				$destinoPais = $this->_request->getParam ( 'destinoPais' );
				$fechaFin = $this->_request->getParam ( 'fechaFin' );
				$horaFin = $this->_request->getParam ( 'horaFin' );
				$tipoServicio = $this->_request->getParam ( 'tipoServicio' );
				$observaciones = $this->_request->getParam ( 'observaciones' );
				$codigoVehiculo = $this->_request->getParam ( 'codigoVehiculo' );
				$gpsSalida = $this->_request->getParam ( 'gpsSalida' );
				$gpsRetorno = $this->_request->getParam ( 'gpsRetorno' );
	
				// Crear presupuesto o recuperarlo
				if ($numeroPresupuesto>0) {
					$presupuesto = new Presupuesto ( $numeroPresupuesto );
				} else {
					$presupuesto = new Presupuesto ();
				}
				// Asignar datos al presupuesto
				$presupuesto->setFechaInicio ( $fechaInicio );
				$presupuesto->setHoraInicio ( $horaInicio );
				$presupuesto->setOrigenCalle( $origenCalle );
				$presupuesto->setOrigenPoblacion ( $origenPoblacion );
				$presupuesto->setOrigenCodigoPostal ( $origenCP );
				$codigoPais = Pais::getCodigoBySiglas2($origenPais);
				if ($codigoPais!='-1')
					$presupuesto->setOrigenPais($codigoPais);
				$presupuesto->setOrigenNumero ( $origenNumero );
				$presupuesto->setFechaFin ( $fechaFin );
				$presupuesto->setHoraFin ( $horaFin );
				$presupuesto->setDestinoCalle ( $destinoCalle );
				$presupuesto->setDestinoPoblacion ( $destinoPoblacion );
				$presupuesto->setDestinoCodigoPostal ( $destinoCP );
				$presupuesto->setDestinoNumero ( $destinoNumero );
				$codigoPais = Pais::getCodigoBySiglas2($destinoPais);
				if ($codigoPais!='-1')
					$presupuesto->setDestinoPais($codigoPais);
				$presupuesto->setCodigoTipoServicio( $tipoServicio );
				$presupuesto->setCodigoVehiculo ( $codigoVehiculo );
				$presupuesto->setGpsRetorno ( $gpsRetorno );
				$presupuesto->setGpsSalida ( $gpsSalida );
				$presupuesto->setCodigoVehiculo ( $codigoVehiculo );
				$presupuesto->setObservaciones($observaciones);
				$presupuesto->setOrigenPresupuesto($codigoOrigen);
				$presupuesto->setMedioRecepcion( MEDIO_POR_DEFECTO );
				
				//Insertar el codigo de origen
				$origen = new Origen($codigoOrigen);
				$usuarioKarve = $origen->getUsuarioKarve();
				$presupuesto->setUsuarioKarve($usuarioKarve); 
				
				// Insertar los comisionistas
				// Si hay comisionista y si no se coge
				// el comisionista del origen
				$presupuesto->setAfiliado($comisionista, $codigoOrigen);
				
				// Sacar el grupo del código del Vehículo
				$vehiculo = new Vehiculo ( $codigoVehiculo );
				$categoria = $vehiculo->getCategoria ();
				$precioMinimo = Presupuesto::getMinimoPrecio ( $categoria );
	
				// Introducir el estado
				$presupuesto->setTratado ( 1 ); // Lo dejamos como tratado porque no hay que hacer nada con él
				$presupuesto->setAceptado( self::ACEPTADO_NO); // Al ser nuevo no está aceptado por VCC
				$presupuesto->setMotivoAnulacion ( Motivo::WEB_SIN_POTENCIAL );
				$presupuesto->setFechaAceptada(date('d/m/Y'));
				// Se asigna un potencial por defecto ya que la primera vez no tenemos potencial
				$codigoPotencial = self::POTENCIAL_DEFECTO;
				if ($codigoPotencial > 0) {
					$presupuesto->setCodigoPotencial ( $codigoPotencial );
				}
				$presupuesto->save ();
				$res ['estado'] = 1;
				$res ['mensaje_error'] = '';
				$res ['datos'] = array (
						'codigoPotencial' => $codigoPotencial,
						'codigoPresupuesto' => $presupuesto->getNumeroPresupuesto ()
				);
				if ($precioMinimo > 0)
					$res ['datos'] ['precioMinimo'] = $precioMinimo;
			} catch ( Exception $e ) {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = $e->getMessage ();
				$res ['datos'] = array ();
			}
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
	}

	public function crearpresupuestopotencialpordefectoAction() {
		$codigoOrigen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		$afiliadoComisionista = $this->_request->getParam('comisionista');

	
		$res = array ();
	
		if (self::validarToken ( $token, $codigoOrigen )) {
	
			try {
				// Recuperar parametros
				$numeroPresupuesto = $this->_request->getParam ( 'numeroPresupuesto', - 1 );
				$fechaInicio = $this->_request->getParam ( 'fechaInicio' );
				$horaInicio = $this->_request->getParam ( 'horaInicio');
				$origenCalle = $this->_request->getParam ( 'origenCalle' );
				$origenPoblacion = $this->_request->getParam ( 'origenPoblacion');
				$origenCP = $this->_request->getParam ( 'origenCP' );
				$origenNumero = $this->_request->getParam ( 'origenNumero' );
				$origenPais = $this->_request->getParam ( 'origenPais' );
				$destinoCalle = $this->_request->getParam ( 'destinoCalle' );
				$destinoPoblacion = $this->_request->getParam ( 'destinoPoblacion' );
				$destinoCP = $this->_request->getParam ( 'destinoCP' );
				$destinoNumero = $this->_request->getParam ( 'destinoNumero' );
				$destinoPais = $this->_request->getParam ( 'destinoPais' );
				$fechaFin = $this->_request->getParam ( 'fechaFin' );
				$horaFin = $this->_request->getParam ( 'horaFin' );
				$tipoServicio = $this->_request->getParam ( 'tipoServicio' );
				$observaciones = $this->_request->getParam ( 'observaciones' );
				$codigoVehiculo = $this->_request->getParam ( 'codigoVehiculo' );
				$gpsSalida = $this->_request->getParam ( 'gpsSalida' );
				$gpsRetorno = $this->_request->getParam ( 'gpsRetorno' );
	
				// Crear presupuesto o recuperarlo
				if ($numeroPresupuesto>0) {
					$presupuesto = new Presupuesto ( $numeroPresupuesto );
				} else {
					$presupuesto = new Presupuesto ();
				}
				// Asignar datos al presupuesto
				$presupuesto->setFechaInicio ( $fechaInicio );
				$presupuesto->setHoraInicio ( $horaInicio );
				$presupuesto->setOrigenCalle( $origenCalle );
				$presupuesto->setOrigenPoblacion ( $origenPoblacion );
				$presupuesto->setOrigenCodigoPostal ( $origenCP );
				$codigoPais = Pais::getCodigoBySiglas2($origenPais);
				if ($codigoPais!='-1')
					$presupuesto->setOrigenPais($codigoPais);
				$presupuesto->setOrigenNumero ( $origenNumero );
				$presupuesto->setFechaFin ( $fechaFin );
				$presupuesto->setHoraFin ( $horaFin );
				$presupuesto->setDestinoCalle ( $destinoCalle );
				$presupuesto->setDestinoPoblacion ( $destinoPoblacion );
				$presupuesto->setDestinoCodigoPostal ( $destinoCP );
				$presupuesto->setDestinoNumero ( $destinoNumero );
				$codigoPais = Pais::getCodigoBySiglas2($destinoPais);
				if ($codigoPais!='-1')
					$presupuesto->setDestinoPais($codigoPais);
				$presupuesto->setCodigoTipoServicio( $tipoServicio );
				$presupuesto->setCodigoVehiculo ( $codigoVehiculo );
				$presupuesto->setGpsRetorno ( $gpsRetorno );
				$presupuesto->setGpsSalida ( $gpsSalida );
				$presupuesto->setCodigoVehiculo ( $codigoVehiculo );
				$presupuesto->setObservaciones($observaciones);
				$presupuesto->setMedioRecepcion( MEDIO_POR_DEFECTO );
	
				//Insertar el codigo de origen y su usuario
				$origen = new Origen($codigoOrigen);
				$usuarioKarve = $origen->getUsuarioKarve();
				$presupuesto->setUsuarioKarve($usuarioKarve);
				$presupuesto->setOrigenPresupuesto($codigoOrigen);
				
				// No se asignan las comisiones pues no tenemos el potencial
				//$presupuesto->asignarComisionistas($origen, $afiliadoComisionista);
	
				// Sacar el grupo del código del Vehículo
				$vehiculo = new Vehiculo ( $codigoVehiculo );
				$categoria = $vehiculo->getCategoria ();
				$precioMinimo = Presupuesto::getMinimoPrecio ( $categoria );
	
				// Introducir el estado
				$presupuesto->setTratado ( 1 ); // Lo dejamos como tratado porque no hay que hacer nada con él
				$presupuesto->setAceptado( self::ACEPTADO_NO); // Al ser nuevo no está aceptado por VCC
				$presupuesto->setMotivoAnulacion ( Motivo::WEB_SIN_POTENCIAL );
				$presupuesto->setFechaAceptada(date('d/m/Y'));
				// Se asigna un potencial por defecto ya que la primera vez no tenemos potencial
				$codigoPotencial = self::POTENCIAL_DEFECTO;
				if ($codigoPotencial > 0) {
					$presupuesto->setCodigoPotencial ( $codigoPotencial );
				}
				$presupuesto->save ();
				$res ['estado'] = 1;
				$res ['mensaje_error'] = '';
				$res ['datos'] = array (
						'codigoPotencial' => $codigoPotencial,
						'codigoPresupuesto' => $presupuesto->getNumeroPresupuesto ()
				);
				if ($precioMinimo > 0)
					$res ['datos'] ['precioMinimo'] = $precioMinimo;
			} catch ( Exception $e ) {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = $e->getMessage ();
				$res ['datos'] = array ();
			}
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
	}
	
	
	public function asignarpotencialapresupuestoAction(){

		$mensajeLog = array();
		$codigoOrigen = $this->_request->getParam ( 'origen' );
		$mensajeLog[] = 'origen:'.$codigoOrigen;
		$token = $this->_request->getParam ( 'token' );
		$mensajeLog[] = 'token:'.$token;
		$empresa = $this->_request->getParam ( 'empresa' );
		$mensajeLog[] = 'empresa:'.$empresa;
		$codigoAfiliado = $this->_request->getParam('afiliado');
		$mensajeLog[] = 'afiliado:'.$codigoAfiliado;
		$lang = $this->_request->getParam('lang');
		$mensajeLog[] = 'lang:'.$lang;
		$idioma = Idioma::langToIdioma($lang);
		
		$nombre = $this->_request->getParam ( 'nombre', '##' );
		$mensajeLog[] = 'nombre:'.$nombre;
		$email = $this->_request->getParam ( 'email', '##' );
		$mensajeLog[] = 'email:'.$email;
		$telefono = $this->_request->getParam ( 'telefono', '##' );
		$mensajeLog[] = 'telefono:'.$telefono;
		$codigoPresupuesto = $this->_request->getParam ( 'codigoPresupuesto', '##' );
		$mensajeLog[] = 'codigoPresupuesto:'.$codigoPresupuesto;
		
		$archivoRuta = $this->_request->getParam('archivoRuta','');
		$mensajeLog[] = 'archivoRuta:'.$archivoRuta;
		$kmsRuta = $this->_request->getParam('kmsRuta','');
		$mensajeLog[] = 'kmsRuta:'.$kmsRuta;
		$tiempoRuta = $this->_request->getParam('tiempoRuta','');
		$mensajeLog[] = 'tiempoRuta:'.$tiempoRuta;
				
		$origen = new Origen($codigoOrigen);
		$urlOrigen = $origen->getUrl();
		$usuarioAlta = $origen->getUsuarioKarve();
		
		
		// inicializar variables
		$_em_codigoTexto = '';
		$_em_vista = 'notificacion_cliente';
		$_em_codigoPresupuesto = '';
		$_em_codigoPotencial = '';
		$_em_boton = '';
		$_em_lang = $lang;
		$_em_url = '';
		
		try {
			if (self::validarToken ( $token, $codigoOrigen )) {
	
				// Potencial
				$potencial = Potencial::getByEmail($email);

				if (!($potencial->getCodigo() > 0)) {
					if ($nombre != '##')
						$potencial->setNombre ( strtoupper($nombre) );
					if ($email != '##')
						$potencial->setEmail ( $email );
					if ($email != '##')
						$potencial->setUsuarioWeb ( $email );
					if ($telefono != '##')
						$potencial->setTelefono ( $telefono );
					$potencial->setDireccionIP($_SERVER['REMOTE_ADDR']);
					$potencial->setOrigen($codigoOrigen);
					$potencial->setUsuarioAlta($usuarioAlta);
					$potencial->setUsuarioUltimaModificacion($usuarioAlta);
					$potencial->asignarComercial($codigoOrigen, $codigoAfiliado);
				}
				$potencial->setIdioma($idioma);
				$potencial->save ();
				

				// actualizar el cliente
				$codigoCliente = $potencial->getCodigoCliente();
				if ($codigoCliente>0){
					$cliente = new Cliente($codigoCliente);
					$cliente->setIdioma($idioma);
					$cliente->save();
				}
				
				// Calcular el comisionista de la agencia
				$presupuesto = new Presupuesto($codigoPresupuesto);
				$presupuesto->setCodigoPotencial($potencial->getCodigo());
				$presupuesto->setArchivoRuta($archivoRuta);
				$presupuesto->setKmsRuta($kmsRuta);
				$presupuesto->setTiempoRuta($tiempoRuta);
				
				$presupuesto->asignarComisionistas($codigoOrigen, $codigoAfiliado);

				if ($potencial->getEstaEmailValidado()){
					$presupuesto->setTratado ( Presupuesto::TRATADO_NO );
					$presupuesto->setAceptado ( self::ACEPTADO_PENDIENTE );
					$presupuesto->setFechaAceptada('');
					$presupuesto->setMotivoAnulacion ('');
					// datos para el email
					$_em_codigoTexto = Texto::TEXTO_PETICION_PRESUPUESTO_RECIBIDA;
					$_em_mandar_aviso = true;
						
				} else {
					$presupuesto->setTratado ( Presupuesto::TRATADO_SI );
					$presupuesto->setAceptado ( self::ACEPTADO_NO);
					$presupuesto->setFechaAceptada(date('d/m/Y'));
					$presupuesto->setMotivoAnulacion (Motivo::WEB_EMAIL_SIN_VALIDAR);
					// datos para el email

					
					$_em_codigoTexto = Texto::TEXTO_VALIDAR_EMAIL;
					$_em_codigoPresupuesto = $presupuesto->getCodigoPresupuesto();
					$_em_codigoPotencial = $potencial->getCodigo();
					$_em_url = "http://" . $urlOrigen;
					$_em_mandar_aviso = false;
				}
				$presupuesto->save();				
				
				// Mandamos email para confirmar que existe
				
				$texto = new Texto($_em_codigoTexto, $idioma);
		
				$email = new Email();
				$email->addDestinatario($potencial->getNombre(), $potencial->getEmail());
				$email->setAsunto($texto->getTitulo());
				$email->setVista($_em_vista);
				$email->url = $_em_url;				
				$email->codigoPresupuesto = $_em_codigoPresupuesto;
				$email->codigoPotencial = $_em_codigoPotencial;
				$email->titulo = $texto->getTitulo();
				$email->boton = $texto->getLabelAsunto();
				$email->mensaje = $texto->getTexto();
				$email->lang = $_em_lang;
				
				$email->enviar();			
				
				
				// Email de aviso
				if ($_em_mandar_aviso) {
					$_em_codigoTexto = '';
					$_em_vista = 'notificacion_cliente';
					$_em_codigoPresupuesto = '';
					$_em_codigoPotencial = '';
					$_em_boton = '';
					$_em_lang = $lang;
					$_em_url = '';
					$_em_codigoTexto = Texto::TEXTO_EMAIL_VALIDADO;
					$texto = new Texto($_em_codigoTexto, $idioma);
					$email = new Email();
					$email->addDestinatario('LCC', 'lcc@limousinecc.com');
					$email->setAsunto('Nuevo presupuesto por la web');
					$email->setVista($_em_vista);
					$email->url = $_em_url;
					$email->titulo = 'Nuevo presupuesto';
					$email->mensaje = 'El presupuesto '.$codigoPresupuesto.' espera nuestra respuesta desde '.date('d/m/Y H:i').'.'.
							'<br>¡¡¡VAMOS!!! A buscar coches como locos.';
					$email->lang = $_em_lang;
					$email->enviar();				
				}
				
				$res ['estado'] = 1;
				$res ['mensaje_error'] = '';
				$res ['datos'] = array (
						'codigoPotencial' => $potencial->getCodigo (),
						'validado' => $potencial->getEstaEmailValidado()
				);
			} else {
				$res ['estado'] = - 2;
				$res ['mensaje_error'] = 'Error de seguridad';
				$res ['datos'] = array ();
			}
		} catch ( Exception $e ) {
			$res ['estado'] = - 1;
			$res ['mensaje_error'] = $e->getMessage ();
			$res ['datos'] = array ();
		}				
		array_unshift($mensajeLog, $res['estado'].'.'.$res['mensaje_error']);
		array_unshift($mensajeLog, 'asignarpotencialapresupuesto ');
		Log::saveMessage(Log::API, implode(' # ', $mensajeLog));
		echo self::json_encode_sybase ( $res );				
	}
	
	public function savepotencialinicialAction() {
		$codigoOrigen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		$codigoOrigenComisionista = $this->_request->getParam('origenComisionista');
		$lang = $this->_request->getParam('lang');
		$idioma = Idioma::langToIdioma($lang);
		
		$nombre = $this->_request->getParam ( 'nombre', '##' );
		$email = $this->_request->getParam ( 'email', '##' );
		$telefono = $this->_request->getParam ( 'telefono', '##' );
		$codigoPresupuesto = $this->_request->getParam ( 'codigoPresupuesto', '##' );
		
		$archivoRuta = $this->_request->getParam('archivoRuta','');
		$kmsRuta = $this->_request->getParam('kmsRuta','');
		$tiempoRuta = $this->_request->getParam('tiempoRuta','');
		
		try {
			if (self::validarToken ( $token, $codigoOrigen )) {
				
				// Comisionista
				if (!($codigoOrigenComisionista>0)){
					$codigoOrigenComisionista = $codigoOrigen;
				}
				$origenComisionista = new Origen ( $codigoOrigenComisionista );
				$comisionista = $origenComisionista->getComisionista ();
				if ($codigoOrigen != '##') {
					$origen = new Origen ( $codigoOrigen );
					$usuarioAlta = $origen->getUsuarioKarve();
				}

				$codigoPotencial = Potencial::getCodigoByEmail ( $email );
				if ($codigoPotencial > 0) {
					$potencial = new Potencial ( $codigoPotencial );
				} else {
					$potencial = new Potencial ();
					if ($nombre != '##')
						$potencial->setNombre ( strtoupper($nombre) );
					if ($email != '##')
						$potencial->setEmail ( $email );
					if ($email != '##')
						$potencial->setUsuarioWeb ( $email );
					if ($telefono != '##')
						$potencial->setTelefono ( $telefono );
					$potencial->setDireccionIP($_SERVER['REMOTE_ADDR']);
					// Si tiene origen comisionista se coge el otro origen
					$potencial->setOrigen ( $codigoOrigenComisionista );
					## TODO: Cambiar los comisinistas y subcomisionistas en el potencial
					$potencial->setComisionista ( $comisionista );
					$potencial->setUsuarioAlta($usuarioAlta);
					$potencial->setUsuarioUltimaModificacion($usuarioAlta);

				}
				$potencial->setIdioma($idioma);
				$potencial->save ();				
				$codigoCliente = $potencial->getCodigoCliente();
				if ($codigoCliente>0){
					$cliente = new Cliente($codigoCliente);
					$cliente->setIdioma($idioma);
					$cliente->save();
				}
					
				$presupuesto = new Presupuesto ( $codigoPresupuesto );
				$presupuesto->setCodigoPotencial ( $potencial->getCodigo () );
				/* Hay que quitar cuando se comente */
				$presupuesto->setTratado ( 1 );
				$presupuesto->setAceptado ( self::ACEPTADO_NO);
				$presupuesto->setFechaAceptada(date('d/m/Y'));
				$presupuesto->setMotivoAnulacion (Motivo::WEB_EMAIL_SIN_VALIDAR);
				 
				$presupuesto->setArchivoRuta($archivoRuta);
				$presupuesto->setKmsRuta($kmsRuta);
				$presupuesto->setTiempoRuta($tiempoRuta);
				$presupuesto->save();
				// Mandamos email para confirmar que existe

				$codigoTexto = '0081';
				$texto = new Texto($codigoTexto, $idioma);
				
				
				$urlOrigen = $origen->getUrl();
				$email = new Email();
				$url = "http://" . $urlOrigen;
				$email->url = $url;
				$email->addDestinatario($potencial->getNombre(), $potencial->getEmail());
				$email->setAsunto('Confirmación del email');
				$email->setVista('validaremail');
				$email->origen = $origen;
				$email->token = $token;
				$email->codigoPresupuesto = $presupuesto->getCodigoPresupuesto();
				$email->codigoPotencial = $potencial->getCodigo();
				$email->action = 'validaremail';
				$email->titulo = $texto->getTitulo();
				$email->boton = $texto->getLabelAsunto();
				$email->mensaje = $texto->getTexto();
				$email->lang = $lang;
				
				// sacar texto titulo
				// boton
				//  explicacion
				
				//print_r($email);
				//echo $email->renderVista();
				$email->enviar();
				//die();
				
				$res ['estado'] = 1;
				$res ['mensaje_error'] = '';
				$res ['datos'] = array (
						'codigo' => $potencial->getCodigo ()
				);
				
			} else {
				$res ['estado'] = - 2;
				$res ['mensaje_error'] = 'Error de seguridad';
				$res ['datos'] = array ();
			}
		} catch ( Exception $e ) {
			$res ['estado'] = - 1;
			$res ['mensaje_error'] = $e->getMessage ();
			$res ['datos'] = array ();
		}
		
		echo self::json_encode_sybase ( $res );
	}

	public function getpotencialdelcomisionistaAction(){
		
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		
		$res = array ();
		if (self::validarToken ( $token, $origen )) {
			$codigoPotencial = $this->_request->getParam('pt');
			$codigoComisionista = $this->_request->getParam('cm');
			$potencial = new Potencial($codigoPotencial);
		
			if ($potencial->getCodigoComisionista()==$codigoComisionista){
				$res['estado'] = 1;
				$res['mensaje_error'] = '';
				$res ['datos'] = array (
						'nombre' => $potencial->getNombre(),
						'telefono' => $potencial->getTelefono(),
						'telefono2'=> $potencial->getTelefono2(),
						'email' => $potencial->getEmail()
				);
			} else {
				$res['estado'] = -1;
				$res['mensaje_error'] = 'El código potencial y el potencial del comisionista no coincide.';
				$res ['datos'] = array ();
			}
			echo self::json_encode_sybase ( $res );
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
	}
	
	public function validaremailAction() {
		$codigoOrigen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		$lang = $this->_request->getParam('lang');
		$idioma = Idioma::langToIdioma($lang);

		$codigoPresupuesto = $this->_request->getParam ( 'codigoPresupuesto',-1 );
		$codigoPotencial = $this->_request->getParam ( 'codigoPotencial',-1 );
		
		
		if ($codigoPresupuesto > 0 && $codigoPotencial > 0){
		
			try {
				if (self::validarToken ( $token, $codigoOrigen )) {
					$presupuesto = new Presupuesto ( $codigoPresupuesto );
					if ($presupuesto) {
						if ($presupuesto->getCodigoPotencial () == $codigoPotencial) {
							$presupuesto->setTratado ( 0 );
							$presupuesto->setAceptado ( self::ACEPTADO_PENDIENTE );
							$presupuesto->setFechaAceptada('');
							$presupuesto->setMotivoAnulacion ('');
							$presupuesto->save();

							$potencial = new Potencial($codigoPotencial);
							$potencial->setEstaEmailValidado(true);
							$potencial->save();
							
							// Mandar email
							
							// inicializar variables
							$_em_codigoTexto = '';
							$_em_vista = 'notificacion_cliente';
							$_em_codigoPresupuesto = '';
							$_em_codigoPotencial = '';
							$_em_boton = '';
							$_em_lang = $lang;
							$_em_url = '';
							$_em_codigoTexto = Texto::TEXTO_EMAIL_VALIDADO;
							
							$texto = new Texto($_em_codigoTexto, $idioma);
							
							$email = new Email();
							$email->addDestinatario($potencial->getNombre(), $potencial->getEmail());
							$email->setAsunto($texto->getTitulo());
							$email->setVista($_em_vista);
							$email->url = $_em_url;
							$email->titulo = $texto->getTitulo();
							$email->mensaje = $texto->getTexto();
							$email->lang = $_em_lang;
							
							$email->enviar();
							
							// Email de aviso

							$email = new Email();
							$email->addDestinatario('LCC', 'lcc@limousinecc.com');
							$email->setAsunto('Nuevo presupuesto por la web');
							$email->setVista($_em_vista);
							$email->url = $_em_url;
							$email->titulo = 'Nuevo presupuesto';
							$email->mensaje = 'El presupuesto '.$codigoPresupuesto.' espera nuestra respuesta desde '.date('d/m/Y H:i').'.'.
									'<br>¡¡¡VAMOS!!! A buscar coches como locos.';
							$email->lang = $_em_lang;
								
							$email->enviar();
								
							
							$res ['estado'] = 1;
							$res ['mensaje_error'] = '';
							$res ['datos'] = array (
									'codigo' => $presupuesto->getCodigoPresupuesto(),
									'codigoPotencial' => $codigoPotencial
							);
						} else {
							$res ['estado'] = - 1;
							$res ['mensaje_error'] = 'Presupuesto no corresponde al potencial';
							$res ['datos'] = array ();
						}
					} else {
						$res ['estado'] = - 1;
						$res ['mensaje_error'] = 'No se encuentra el presupuesto.';
						$res ['datos'] = array (
								'codigo' => - 1
						);
					}
				} else {
					$res ['estado'] = - 2;
					$res ['mensaje_error'] = 'Error de seguridad';
					$res ['datos'] = array ();
				}
			} catch ( Exception $e ) {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = $e->getMessage ();
				$res ['datos'] = array ();
			}
		} else {
			$res ['estado'] = - 1;
			$res ['mensaje_error'] = 'No se ha pasado el codigoPresupuesto o el codigoPotencial';
			$res ['datos'] = array ();
		}	
		echo self::json_encode_sybase ( $res );
	}
	
	public function getpresupuestoAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		$codigoPotencial = $this->_request->getParam('codigoPotencial');
		$codigoPresupuesto = $this->_request->getParam ( 'codigoPresupuesto' );
// 		$cod = $this->_request->getParam('cod');
// 		echo 'COD:'.$cod.' - ';
		
// 		echo 'TOKEN:'.$token;
// 		echo ' - ORIGEN:'.$origen;
 		//echo ' - POTEN:'.$codigoPotencial;
 		//echo ' - PRES:'.$codigoPresupuesto;
		$res = array ();
		if (self::validarToken ( $token, $origen )) {
			try {
				$presupuesto = new Presupuesto ( $codigoPresupuesto );
				$potencial = new Potencial($codigoPotencial);
				//echo 'POTENCIAL:'.$codigoPotencial.' - '.$presupuesto->getCodigoPotencial();
				if ($presupuesto) {
					if ($presupuesto->getCodigoPotencial() == $codigoPotencial) {
						$res ['estado'] = 1;
						$res ['mensaje_error'] = '';
						$res ['datos'] = array (
								'numeroPresupuesto' => $presupuesto->getNumeroPresupuesto (),
								'fechaHoraInicio' => $presupuesto->getFechaHoraInicio (),
								'origenDireccion' => $presupuesto->getOrigenDireccion (),
								'destinoDireccion' => $presupuesto->getDestinoDireccion (),
								'nombreVehiculo' => $presupuesto->getVehiculoNombre (),
								'observaciones' => $presupuesto->getObservaciones (),
								'tipoServicio' => $presupuesto->getCodigoTipoServicio(),
								'baseImponible' => $presupuesto->getBaseImponible (),
								'iva' => $presupuesto->getIva (),
								'totalConIva' => $presupuesto->getTotalConIva (),
								'nombreCliente' => $presupuesto->getNombreCliente (),
								'nif'			=> $potencial->getNif(),
								'telefono'		=> $potencial->getTelefono(),
								'email'			=> $potencial->getEmail(),
								'direccion'		=> $potencial->getDireccion(),
								'poblacion'		=> $potencial->getPoblacion(),
								'codigoPostal'	=> $potencial->getCodigoPostal(),
								'intentoTpv'	=> $presupuesto->getIntentoTpv()
								
						);
					} else {
						$res ['estado'] = - 1;
						$res ['mensaje_error'] = 'Presupuesto no corresponde al potencial';
						$res ['datos'] = array ();
					}
				} else {
					$res ['estado'] = - 1;
					$res ['mensaje_error'] = 'No se encuentra el presupuesto.';
					$res ['datos'] = array (
							'codigo' => - 1
					);
				}
			} catch ( Exception $e ) {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = $e->getMessage ();
				$res ['datos'] = array ();
			}
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
	}

	/*
	public function presupuestorespuestaAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
	
		$res = array ();
	
		if (self::validarToken ( $token, $origen )) {
				
			try {
				$aceptado = $this->_request->getParam ( 'aceptado' );
				$codigoPresupuesto = $this->_request->getParam ( 'codigoPresupuesto' );
				$fecha_aceptada = date ( 'd/m/Y' );
				$presupuesto = new Presupuesto ( $codigoPresupuesto );
				$presupuesto->setAceptado ( $aceptado );
				$presupuesto->setFechaAceptada ( $fecha_aceptada );
				if ($aceptado) {
					$presupuesto->setMotivoAnulacion ( Motivo::WEB_ACEPTADO_FALTAN_DATOS_POTENCIAL );
					$motivos = array();
				} else {
					$presupuesto->setMotivoAnulacion ( Motivo::WEB_NO_ACEPTADO_SIN_MOTIVO );
					$motivos = Motivo::getMotivos();
				}
	
				$presupuesto->save ();
				$res ['estado'] = 1;
				$res ['mensaje_error'] = '';
				$res ['datos'] = array (
						'codigo' => $presupuesto->getNumeroPresupuesto (),
						'motivos' => $motivos
				);
			} catch ( Exception $e ) {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = $e->getMessage ();
				$res ['datos'] = array ();
			}
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
	}
	*/

	public function motivorechazoAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
	
		$res = array ();
	
		if (self::validarToken ( $token, $origen )) {
	
			try {
				$motivo = $this->_request->getParam ( 'motivo' );
				$codigoPresupuesto = $this->_request->getParam ( 'codigoPresupuesto' );
				$presupuesto = new Presupuesto ( $codigoPresupuesto );
				$presupuesto->setMotivoAnulacion ($motivo);
				$presupuesto->setAceptado(2);
				$presupuesto->setFechaAceptada(date('d/m/Y'));
				$presupuesto->save ();
				$res ['estado'] = 1;
				$res ['mensaje_error'] = '';
				$res ['datos'] = array (
						'codigo' => $presupuesto->getNumeroPresupuesto ()
				);
			} catch ( Exception $e ) {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = $e->getMessage ();
				$res ['datos'] = array ();
			}
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
	}
	
	
	
	public function getmotivosAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		$lang = $this->_request->getParam ( 'lang' );
		$lang = self::idiomaToCodigoKarve ( 'lang' );
		$res = array ();
		if (self::validarToken ( $token, $origen )) {
			
			$tratados = array ();
			$tratados [] = '0001'; // MUY CARO
			$tratados [] = '0025'; // LO HA CONTRATADO CON OTRA EMPRESA
			$tratados [] = '0005'; // No van a alquilar coche
			$tratados [] = '0012'; // No tenemos vehículos en esa zona
			$tratados [] = '0042'; // Lo quiere sin conductor
			$tratados [] = '0017'; // Evento Anulado
			
			$res ['estado'] = 1;
			$res ['mensaje_error'] = '';
			$res ['datos'] = $tratados;
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
	}

	
	public function contratarpresupuestoAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		$codigoPresupuesto = $this->_request->getParam('codigoPresupuesto',-1);
		$codigoPotencial = $this->_request->getParam ( 'codigoPotencial', - 1 );
					
		$res = array ();
		if (self::validarToken ( $token, $origen )) {
						
			if ($codigoPresupuesto > 0 && $codigoPotencial > 0) {
			
				try {
	
					$nombre = $this->_request->getParam ( 'nombre');
					$poblacion = $this->_request->getParam ( 'poblacion');
					$direccion = $this->_request->getParam ( 'direccion');
					$codigoPostal = $this->_request->getParam ( 'cp');
					$telefono = $this->_request->getParam ( 'telefono');
					$nif = $this->_request->getParam ( 'nif');
					$lang = $this->_request->getParam('lang');
					$idioma = Idioma::langToIdioma($lang);
	
					$potencial = new Potencial ( $codigoPotencial );
	
					$potencial->setTelefono ( $telefono );
					$potencial->setPoblacion ( strtoupper($poblacion ));
					$potencial->setDireccion ( strtoupper($direccion) );
					$potencial->setCodigoPostal( strtoupper($codigoPostal) );
					$potencial->setIdioma($idioma);
					$potencial->save();
		
					// CLIENTE: Creamos el cliente si no está creado
					$codigoCliente = $potencial->getCodigoCliente();
					if (!$codigoCliente){
						$codigoCliente = $potencial->toCliente();
					} else {
						$cliente = new Cliente($codigoCliente);
						$cliente->setIdioma($idioma);
						$cliente->save();
					}
		
					// PRESUPUESTO: Actualizar el tratamiento
	
					$presupuesto = new Presupuesto($codigoPresupuesto);
					$presupuesto->setCodigoCliente($codigoCliente);
		
		
					// RESERVA
					$codigoReserva = $presupuesto->getCodigoReserva();
					if (!$codigoReserva){
						// convertir a la reserva el presupuesto
						$codigoReserva = $presupuesto->toReserva();
							
					}
		
					// Añadir un intento al presupuesto
					// Añadir el intento que lleva
					$intento = (int)$presupuesto->getIntentoTpv();
					$intento++;
					$presupuesto->setIntentoTpv($intento);
		
					//$presupuesto->setMotivoAnulacion(Motivo::WEB_ACEPTADO_SIN_PAGAR);
					$presupuesto->setMotivoAnulacion(null);
					$presupuesto->setTratado(1);
					$presupuesto->setAceptado(self::ACEPTADO_SI);
					$presupuesto->setCodigoReserva($codigoReserva);
					$presupuesto->save();
					$res ['estado'] = 1;
					$res ['mensaje_error'] = '';
					$res ['datos'] = array('codigoReserva'=>$codigoReserva,'codigoCliente'=>$codigoCliente,'intentoTPV'=>$intento);
		
		
				} catch ( Exception $e ) {
					$res ['estado'] = - 1;
					$res ['mensaje_error'] = $e->getMessage ();
					$res ['datos'] = array ();
				}
			} else {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = 'Falta el presupuesto o potencial';
				$res ['datos'] = array ();
			}
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
	
	}
	
	
	public function savepotencialAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );

		$res = array ();
		if (self::validarToken ( $token, $origen )) {
			try {
				$codigoPotencial = $this->_request->getParam ( 'codigoPotencial', - 1 );
				$nombre = $this->_request->getParam ( 'nombre', '##' );
				$poblacion = $this->_request->getParam ( 'poblacion', '##' );
				$direccion = $this->_request->getParam ( 'direccion', '##' );
				$codigoPostal = $this->_request->getParam ( 'cp', '##' );
				$telefono = $this->_request->getParam ( 'telefono', '##' );
				$nif = $this->_request->getParam ( 'nif', '##' );
				$lang = $this->_request->getParam('lang');
				$idioma = Idioma::langToIdioma($lang);

								
				if ($codigoPotencial > 0) {
					$potencial = new Potencial ( $codigoPotencial );
				} else {
					$potencial = new Potencial ();
					if ($nombre != '##')	$potencial->setNombre ( strtoupper($nombre) );
					if ($nif != '##')		$potencial->setNif ( strtoupper($nif) );
				

				}
				if ($telefono != '##')	$potencial->setTelefono ( $telefono );
				if ($poblacion != '##')	$potencial->setPoblacion ( strtoupper($poblacion ));
				if ($direccion != '##')	$potencial->setDireccion ( strtoupper($direccion) );
				if ($codigoPostal != '##') $potencial->setCodigoPostal( strtoupper($codigoPostal) );
				$potencial->setIdioma($idioma);
				$potencial->save();
				
				// CLIENTE: Creamos el cliente si no está creado
				$codigoCliente = $potencial->getCodigoCliente();
				if (!$codigoCliente){
					$codigoCliente = $potencial->toCliente();
				} else {
					$cliente = new Cliente($codigoCliente);
					$cliente->setIdioma($idioma);
					$cliente->save();
				}

				// PRESUPUESTO: Actualizar el tratamiento
				$codigoPresupuesto = $this->_request->getParam('codigoPresupuesto',-1);
				$presupuesto = new Presupuesto($codigoPresupuesto);
				$presupuesto->setCodigoCliente($codigoCliente);
				
				
				// RESERVA
				$codigoReserva = $presupuesto->getCodigoReserva();
				if (!$codigoReserva){
					// convertir a la reserva el presupuesto
					$codigoReserva = $presupuesto->toReserva();
					
				}
				
				// Añadir un intento al presupuesto
				// Añadir el intento que lleva
				$intento = (int)$presupuesto->getIntentoTpv();
				$intento++;
				$presupuesto->setIntentoTpv($intento);
				
				//$presupuesto->setMotivoAnulacion(Motivo::WEB_ACEPTADO_SIN_PAGAR);
				$presupuesto->setMotivoAnulacion(null);
				$presupuesto->setTratado(1);
				$presupuesto->setAceptado(1);
				$presupuesto->setCodigoReserva($codigoReserva);
				$presupuesto->save();
				$res ['estado'] = 1;
				$res ['mensaje_error'] = '';
				$res ['datos'] = array('codigoReserva'=>$codigoReserva,'codigoCliente'=>$codigoCliente,'intentoTPV'=>$intento);
				
				
			} catch ( Exception $e ) {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = $e->getMessage ();
				$res ['datos'] = array ();
			}
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
		
	}

	public function savepollAction(){
		$res = array ();
		$token = $this->_request->getParam('token','');
		
		$numero = $this->_request->getParam('numero','');
		$res['datos']['numero'] = $numero;
		$fecha 	= $this->_request->getParam('fecha','');
		$res['datos']['fecha'] = $fecha;
		$satisfaccion = $this->_request->getParam('satisfaccion','');
		$res['datos']['satisfaccion'] = $satisfaccion;
		$desarrollo = $this->_request->getParam('desarrollo','');
		$res['datos']['desarrollo'] = $desarrollo;
		$puntualidad = $this->_request->getParam('puntualidad','');
		$res['datos']['puntualidad'] = $puntualidad;
		$quejas = $this->_request->getParam('quejas','');
		$res['datos']['quejas'] = $quejas;
		$personal = $this->_request->getParam('personal','');
		$res['datos']['personal'] = $personal;
		$calidadPrecio = $this->_request->getParam('calidadPrecio','');
		$res['datos']['calidadPrecio'] = $calidadPrecio;
		$confiariaMasServicios = $this->_request->getParam('confiariaMasServicios','');
		$res['datos']['confiariaMasServicios'] = $confiariaMasServicios;
		$confiariaEsteServicio = $this->_request->getParam('confiariaEsteServicio','');
		$res['datos']['confiariaEsteServicio'] = $confiariaEsteServicio;		
		$presencia = $this->_request->getParam('presencia','');
		$res['datos']['presencia'] = $presencia;
		$actitud = $this->_request->getParam('actitud','');
		$res['datos']['actitud'] = $actitud;
		$informacion = $this->_request->getParam('informacion','');
		$res['datos']['informacion'] = $informacion;
		$solucion = $this->_request->getParam('solucion','');
		$res['datos']['solucion'] = $solucion;
		$seguridad = ($token==(md5($numero.$fecha)));
		if ($seguridad) {
			try {
				$s = new Servicio($numero);
				if ($s->getNumeroServicio()){
					// probar si meto una variable de texto qué error da el try
					$s->setEncuestaFecha($fecha);
					$s->setEncuestaSatisfaccion($satisfaccion);
					$s->setEncuestaDesarrollo($desarrollo);
					$s->setEncuestaPuntualidad($puntualidad);
					$s->setEncuestaQuejas($quejas);
					$s->setEncuestaPersonal($personal);
					$s->setEncuestaCalidadPrecio($calidadPrecio);
					$s->setEncuestaConfiariaMasServicios($confiariaMasServicios);
					$s->setEncuestaConfiariaEsteServicio($confiariaEsteServicio);
					$s->setEncuestaPresencia($presencia);
					$s->setEncuestaActitud($actitud);
					$s->setEncuestaInformacion($informacion);
					$s->setEncuestaSolucion($solucion);
					$s->saveEncuesta();
					$res ['estado'] = 1;
					$res ['mensaje_error'] = 'Encuesta grabada correctamente';
					
				} else {
					$res ['estado'] = - 3;
					$res ['mensaje_error'] = 'No existe el servicio';
				}
				
			} catch ( Exception $e ) {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = $e->getMessage ();
			}
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
		}
		echo json_encode($res);
		die();
	}
	
	/*
	public function presupuestopagadoAction() {
		$origen = $this->_request->getParam ( 'origen' );
		$token = $this->_request->getParam ( 'token' );
		$empresa = $this->_request->getParam ( 'empresa' );
		$res = array ();
		if (self::validarToken ( $token, $origen )) {
			try {
				$pagado = $this->_request->getParam('pagado',-1);
				$codigoPresupuesto = $this->_request->getParam('codigoPresupuesto',-1);
				$presupuesto = new Presupuesto($codigoPresupuesto);
				if ($pagado>0)
					$presupuesto->setMotivoAnulacion(Motivo::WEB_ACEPTADO_PAGADO);
				else 
					$presupuesto->setMotivoAnulacion(Motivo::WEB_ACEPTADO_FALLO_PAGO);
				$presupuesto->save();
				$res ['estado'] = 1;
				$res ['mensaje_error'] = '';
				$res ['datos'] = array ();
				
	
			} catch ( Exception $e ) {
				$res ['estado'] = - 1;
				$res ['mensaje_error'] = $e->getMessage ();
				$res ['datos'] = array ();
			}
		} else {
			$res ['estado'] = - 2;
			$res ['mensaje_error'] = 'Error de seguridad';
			$res ['datos'] = array ();
		}
		echo self::json_encode_sybase ( $res );
	
	}
	
	*/

	
	
	/*
	 *
	 * public function presupuestoaceptadopagadoAction(){
	 * $origen = $this->_request->getParam('origen');
	 * $token = $this->_request->getParam('token');
	 * $codigoPresupuesto = $this->_request->getParam('codigo');
	 *
	 * $res = array();
	 * try {
	 * $presupuesto = new Presupuesto($codigoPresupuesto);
	 * if ($presupuesto){
	 * $presupuesto->setPagadoPresupuesto();
	 * $presupuesto->save();
	 * $res['datos'] = array('codigoPresupuesto'=>$codigoPresupuesto);
	 * $res['estado'] = 1;
	 * $res['mensaje_error']= '';
	 * }
	 * }catch (Excepcion $e){
	 * $res['estado'] = -1;
	 * $res['mensaje_error'] = $e->getMessage();
	 * $res['datos'] = array();
	 * }
	 * echo self::json_encode_sybase($res);
	 * }
	 *
	 * public function presupuestoaceptadoAction(){
	 * $origen = $this->_request->getParam('origen');
	 * $token = $this->_request->getParam('token');
	 * $codigoPresupuesto = $this->_request->getParam('codigo');
	 *
	 * $res = array();
	 * try {
	 * echo $codigoPresupuesto;
	 * $presupuesto = new Presupuesto($codigoPresupuesto);
	 * if ($presupuesto){
	 * $presupuesto->setAceptadoPresupuesto();
	 * $presupuesto->save();
	 * $res['datos'] = array('codigoPresupuesto'=>$codigoPresupuesto);
	 * $res['estado'] = 1;
	 * $res['mensaje_error']= '';
	 * }
	 * }catch (Excepcion $e){
	 * $res['estado'] = -1;
	 * $res['mensaje_error'] = $e->getMessage();
	 * $res['datos'] = array();
	 * }
	 * echo self::json_encode_sybase($res);
	 * }
	 *
	 * public function presupuestoanuladoAction(){
	 * $origen = $this->_request->getParam('origen');
	 * $token = $this->_request->getParam('token');
	 * $codigoPresupuesto = $this->_request->getParam('codigo');
	 *
	 * $res = array();
	 * try {
	 * $presupuesto = new Presupuesto($codigoPresupuesto);
	 * if ($presupuesto){
	 * $presupuesto->setAnulado();
	 * $presupuesto->save();
	 * $res['datos'] = array('codigoPresupuesto'=>$codigoPresupuesto);
	 * $res['estado'] = 1;
	 * $res['mensaje_error']= '';
	 * }
	 * }catch (Excepcion $e){
	 * $res['estado'] = -1;
	 * $res['mensaje_error'] = $e->getMessage();
	 * $res['datos'] = array();
	 * }
	 * echo self::json_encode_sybase($res);
	 * }
	 *
	 * public function presupuestomotivoanuladoAction(){
	 * $origen = $this->_request->getParam('origen');
	 * $token = $this->_request->getParam('token');
	 * $motivo = $this->_request->getParam('motivo');
	 * $codigoPresupuesto = $this->_request->getParam('codigo');
	 *
	 * $res = array();
	 * try {
	 * $presupuesto = new Presupuesto($codigoPresupuesto);
	 * if ($presupuesto){
	 * $presupuesto->setMotivoAnulacion($motivo);
	 * $presupuesto->save();
	 * $res['datos'] = array('codigoPresupuesto'=>$codigoPresupuesto);
	 * $res['estado'] = 1;
	 * $res['mensaje_error']= '';
	 * }
	 * }catch (Excepcion $e){
	 * $res['estado'] = -1;
	 * $res['mensaje_error'] = $e->getMessage();
	 * $res['datos'] = array();
	 * }
	 * echo self::json_encode_sybase($res);
	 * }
	 *
	 *
	 *
	 *
	 * public function getpoblacionprovinciaAction(){
	 * $codigoPostal = $this->_request->getParam('cp');
	 * $codigoPais = $this->_request->getParam(('pais'));
	 * $res = array();
	 * try{
	 * $resultado = Poblaciones::getPoblacionProvinciaByCP($codigoPostal, $codigoPais);
	 * $datos = $resultado->getDatos();
	 *
	 * if ($datos){
	 * $res['datos'] = $datos;
	 * $res['estado'] = 1;
	 * $res['mensaje_error']= '';
	 * } else {
	 * $res['estado'] = -1;
	 * $res['mensaje_error']= 'No se encuentra ese código postal';
	 * $res['datos'] = array();
	 * }
	 *
	 * }catch ( Exception $e){
	 * $res['estado'] = -1;
	 * $res['mensaje_error']= 'Error al conectar con la base de datos';
	 * $res['datos'] = array();
	 * }
	 * echo self::json_encode_sybase($res);
	 * }
	 *
	 *
	 *
	 * public function buscapotencialporusuarioAction(){
	 * $email = $this->_request->getParam('email');
	 * $res = array();
	 * try {
	 * $potencial = Potencial::getByUsuarioWeb($email);
	 * if ($potencial){
	 * $res['estado'] = 1;
	 * $res['mensaje_error'] = '';
	 * $res['datos'] = array('codigo'=>$potencial->getCodigo());
	 * } else {
	 * $res['estado'] = 1;
	 * $res['mensaje_error'] = 'No se encuentra el usuario';
	 * $res['datos'] = array('codigo'=>-1);
	 * }
	 * } catch(Exception $e){
	 * $res['estado'] = -1;
	 * $res['mensaje_error'] = $e->getMessage();
	 * $res['datos'] = array();
	 * }
	 * echo self::json_encode_sybase($res);
	 * }
	 */
	
	/*
	 * public function savepotencialAction(){
	 * $codigo = $this->_request->getParam('codigo',-1);
	 * $ori = $this->_request->getParam('ori','##');
	 * $nombre = $this->_request->getParam('nombre','##');
	 * $email = $this->_request->getParam('email','##');
	 * $poblacion = $this->_request->getParam('poblacion','##');
	 * $provincia = $this->_request->getParam('provincia','##');
	 * $direccion = $this->_request->getParam('direccion','##');
	 * $codigoPostal = $this->_request->getParam('cp','##');
	 * $numeroDireccion = $this->_request->getParam('numerodireccion','##');
	 * $usuario_web = $email;
	 * $telefono = $this->_request->getParam('telefono','##');
	 * $telefono2 = $this->_request->getParam('telefono2','##');
	 * $movil = $this->_request->getParam('movil','##');
	 * $nif = $this->_request->getParam('nif','##');
	 * $codigoPresupuesto = $this->_request->getParam('codigoPresupuesto','##');
	 *
	 *
	 * if ($codigo>0){
	 * $potencial = new Potencial($codigo);
	 * } else {
	 * $potencial = new Potencial();
	 * }
	 * if ($nombre != '##') $potencial->setNombre($nombre);
	 * if ($email != '##') $potencial->setEmail($email);
	 * if ($email != '##') $potencial->setUsuarioWeb($email);
	 * if ($telefono != '##') $potencial->setTelefono($telefono);
	 * if ($poblacion != '##') $potencial->setPoblacion($poblacion);
	 * if ($provincia != '##') $potencial->setProvincia($provincia);
	 * if ($direccion != '##') $potencial->setDireccion($direccion);
	 * if ($numeroDireccion != '##') $potencial->setNumeroDireccion($numeroDireccion);
	 * if ($telefono2 != '##') $potencial->setTelefono2($telefono2);
	 * if ($movil != '##') $potencial->setMovil($movil);
	 * if ($nif != '##') $potencial->setNif($nif);
	 * if ($ori != '##') {
	 * $potencial->setOrigen($ori);
	 * $origen = new Origen($ori);
	 * $comisionista = $origen->getComisionista();
	 * $potencial->setComisionista($comisionista);
	 * }
	 * //print_r($potencial);
	 * try {
	 * $potencial->save();
	 * $res['estado'] = 1;
	 * $res['mensaje_error'] = '';
	 * $res['datos'] = array('codigo'=>$potencial->getCodigo());
	 *
	 * } catch(Exception $e){
	 * $res['estado'] = -1;
	 * $res['mensaje_error'] = $e->getMessage();
	 * $res['datos'] = array();
	 * }
	 * echo self::json_encode_sybase($res);
	 * }
	 */
	/*
	 */
				
	public function mandarvalidacionAction(){
		
		$codigoPotencial = $this->_request->getParam('potencial');
		$potencial = new Potencial($codigoPotencial);
		// Mandar un email de confirmación al proveedor como a VCC
		$email = new Email();
		$domain = $_SERVER['HTTP_HOST'];
		$url = "http://" . $domain;
		$email->url = $url;
		$email->addDestinatario($potencial->getNombre(), $potencial->getEmail());
		$email->setAsunto('Confirmación del email');
		$email->setVista('validaremail');
		
		//print_r($email);
		echo $email->renderVista();
		//$email->enviar();
		//die();
	}

	public function enviarcoordenadasAction()
	{
		$telefono = $this->_request->getParam('telefono');
		$latitud = $this->_request->getParam('latitud');
		$longitud = $this->_request->getParam('longitud');
		$token = $this->_request->getParam('token');
		$velocidad = $this->_request->getParam('velocidad');

		$gps = new Gps();
		$gps->longitud = $longitud;
		$gps->latitud = $latitud;
		$gps->velocidad = $velocidad;
	
		if($acceso = Acceso::loadByToken($token)){
			$usuario = new Usuario($acceso->id_usuario);
			$gps->chofer = $usuario->CHOFER;
			$entrada = 'acceso';
			$idUsuario = $acceso->id_usuario;
		} else {
			$usuario = Usuario::loadPorToken($token);
			$idUsuario = $usuario->getIdUsuario();
			$gps->chofer = $usuario->CHOFER;
			$entrada = 'md5';
		}
	
		Log::addMensaje('IdUsuario:'.$idUsuario.'  Entrada:'.$entrada.'  Longintud:'.$longitud.' Latitud:'. $latitud.'  Telefono:'. $telefono.'  Token:'.$token. ' Velocidad:'.$velocidad.' Chófer:'.$gps->chofer.'     ');

		if (is_null($gps->chofer) || (!$gps->chofer) || is_null($latitud) || (!is_numeric($latitud)))
			return false;
	
		$gps->save();
		return true;
	}
	
	
				
	private static function json_encode_sybase_array($key, $value) {
		$resultado = array ();
		if (is_array ( $value )) {
			foreach ( $value as $clave => $valor ) {
				$resultado [$clave] = self::json_encode_sybase_array ( $clave, $valor );
			}
		} else {
			
			$resultado = utf8_encode ( htmlentities ( $value ) );
		}
		return $resultado;
	}
	public static function json_encode_sybase($res) {
		$resultado = array ();
		
		$res_valor = array ();
		foreach ( $res ['datos'] as $key => $value ) {
			$res_valor [$key] = self::json_encode_sybase_array ( $key, $value );
		}
		$resultado ['datos'] = $res_valor;
		$resultado ['estado'] = $res ['estado'];
		$resultado ['mensaje_error'] = utf8_encode ( htmlentities ( $res ['mensaje_error'] ) );
		$var = json_encode ( $resultado );
		$var = str_replace ( '\/', '/', $var );
		$var = utf8_decode ( $var );
		return $var;
	}
}