<?php

class WserviciochoferController extends WadminController {
	
	/*
	 * Muestra los trabajos del chófer
	 */
	public function indexAction(){
		
		$layout = $this->getLayout();
		
		// Título
		$layout->reg_titulo->setTitulo('Trabajos');
		
		//Cabecera
		//$bt = new VstBoton_Cabecera('/wserviciochofer/index',VstBoton_Cabecera::icon_actualizar,'Actualizar');
		//$layout->reg_titulo->addBoton($bt);		
		$listado = new LSTMisTrabajos();
		$layout->reg_contenido->addElement($listado);
	
	}
	
	/**
	 * Ver los datos del servicio
	 */
	public function verAction(){

		// Leer parámetros
		$id = $this->_request->getParam('id', -1);
		$vieneDelIndex = $this->getParametro('ini');
		
		// Lógica
		$servicio = new Servicio($id);
		
		if (($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR') && $vieneDelIndex==1){
			$ruta = '/wserviciochofer/resumen/id/'.$id;
			$this->_redirect($ruta);
		}
		// Visual
		$layout = $this->getLayout();
		
		// Cabecera
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		// TAREAS
		if($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$codigo = $servicio->getCodigoParaViaje();
		} else {
			$codigo = $servicio->getNumeroServicio();
		}
		if (ServicioViaje::getTareasViajeros($codigo)>0){
			$btTareas = new VstBoton_Cabecera('/wserviciochofer/tareas/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_tareas, 'Tareas');
			$layout->reg_titulo->addBoton($btTareas);
				
		}
		// RESUMEN
		if($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$btFrancia = new VstBoton_Cabecera('/wserviciochofer/resumen/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_francia, 'Francia');
			$layout->reg_titulo->addBoton($btFrancia);
		}
		// ESTADOS
		$btEnCoche = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_encoche, 'En coche');
		$layout->reg_titulo->addBoton($btEnCoche);
		
		// INFO
		$btVer = new VstBoton_Cabecera('/wserviciochofer/ver/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_info, 'Datos');
		$btVer->setEstaSeleccionado(true);
		$layout->reg_titulo->addBoton($btVer);		
		

		// Fin de cabecera	
		
		
		
		// Contenido
		
		
		
		$cont = new vstContenedor('Datos del servicio');
		$info = new VstInfo();
		$info->addElement('Nº Servicio:', $servicio->numeroServicio);
		$personaContacto = $servicio->personaContacto.' <a href="tel:'.$servicio->personaTelefono.'" target="_blank">'.$servicio->personaTelefono.'</a>';

		if ($servicio->agenteCoche || $servicio->propietarioCoche){
			if (!$personaContacto)	$personaContacto = $servicio->clienteNombre.' <a href="tel:'.$servicio->clienteTelefono.'" target="_blank">'.$servicio->clienteTelefono.'</a>';
		} else {
			$info->addElement('Cliente:', $servicio->clienteNombre.' <a href="tel:'.$servicio->clienteTelefono.'" target="_blank">'.$servicio->clienteTelefono.'</a>');
		}
		if ($servicio->nombreComercial)
		$info->addElement('Nom. Comercial', $servicio->nombreComercial);
		//$info->addElement('Propietario', $servicio->propietarioCoche);
		//$info->addElement('Agente', $servicio->agenteCoche);

		$direccionOrigen = $servicio->direccion_origen;
		if ($servicio->gpsOrigen)
			$direccionOrigen = $servicio->gpsOrigen;
		$direccionDestino = $servicio->direccion_destino;
		if ($servicio->gpsDestino)
			$direccionDestino = $servicio->gpsDestino;
		if ($personaContacto) $personaContacto ='&nbsp; ';
		$info->addElement('Contacto', $personaContacto);
		$info->addElement('Nº Personas:', $servicio->getNumeroPersonas());
		$info->addElement('Servicio', $servicio->tipoServicio);
		$info->addElement('Vehículo', $servicio->vehiculoMarca.' '.$servicio->vehiculoModelo.' ('.$servicio->vehiculoMatricula.')');
		$info->addElement('Origen:', $servicio->fecha_hora_inicio.'<br/>'.$servicio->origenLugar.'<br/><a href="https://www.google.es/maps/dir/'.$direccionOrigen.'" target="_blank">'.$servicio->direccion_origen.'</a>');
		$info->addElement('Destino:', $servicio->fechaServicioFin.' '.$servicio->horaServicioFin.'<br/>'.$servicio->destinoLugar.'<br/><a href="https://www.google.es/maps/dir/'.$direccionDestino.'" target="_blank">'.$servicio->direccion_destino.'</a>');
		$info->addElement('Referencia', $servicio->referencia);
		$info->addElement('Observaciones:', $servicio->observaciones);
		$info->addElement('Itinerario:', $servicio->itinerario);
		if (!$servicio->getPermisoNoMostrarPendienteCobroEnHojaRuta() && $servicio->getCobrosPendientes()>0)
			$info->addElement('Cobros pendientes', AppHerramienta::formatearNumero($servicio->getCobrosPendientes(),2));
		
		$cont->addElement($info);
		$layout->reg_contenido->addElement($cont);

		
		
	}

	
	/**
	 * Ver el resumen de los pasajeros
	 */
	public function resumenAction(){
	
		// Leer parámetros
		$id = $this->_request->getParam('id', -1);
	
		// Lógica
		$servicio = new Servicio($id);
		$codigoVehículo = $servicio->getCodigoVehiculo();
		$vehiculo = new Vehiculo($codigoVehículo);
		$numeroPlazasVehículo = $vehiculo->getNumeroPlazas();
	
		// Visual
		$layout = $this->getLayout();
	
		
		// Cabecera
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		// TAREAS
		if($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$codigo = $servicio->getCodigoParaViaje();
		} else {
			$codigo = $servicio->getNumeroServicio();
		}
		if (ServicioViaje::getTareasViajeros($codigo)>0){
			$btTareas = new VstBoton_Cabecera('/wserviciochofer/tareas/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_tareas, 'Tareas');
			$layout->reg_titulo->addBoton($btTareas);
		
		}
		// RESUMEN
		if($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$btFrancia = new VstBoton_Cabecera('/wserviciochofer/resumen/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_francia, 'Francia');
			$btFrancia->setEstaSeleccionado(true);
			$layout->reg_titulo->addBoton($btFrancia);
		}
		// ESTADOS
		$btEnCoche = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_encoche, 'En coche');
		$layout->reg_titulo->addBoton($btEnCoche);
		
		// INFO
		$btVer = new VstBoton_Cabecera('/wserviciochofer/ver/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_info, 'Datos');
		$layout->reg_titulo->addBoton($btVer);
		
		
		// Fin de cabecera
		
		
		
		
		
			
	
		
	
		// Viajeros en FRANCIA
	
		if ($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$codigoFrancia = $servicio->getCodigoParaViaje();
			$servicioFrancia = new Servicio($codigoFrancia);
			$cobros = $servicio->loadCobros();
			
			
			$contPasajeros = new vstContenedor('Pasajeros');
			$vista = new VstVista('resumen');
			
			$plazasDisponibles = $numeroPlazasVehículo - $servicioFrancia->numeroPlazasOcupadas(0);
				
			$vista->titulo = "España - Francia (Pax:".$servicioFrancia->numeroPlazasOcupadas(0)." / Dispo:".$plazasDisponibles.")";
			$vista->contrato = $servicio->getCodigoParaViaje();
			$vista->ida = 0;
			$vista->esTarea = false;
			$vista->cobros = $cobros;
			
			$parametros = array('contrato'=> $servicio->getCodigoParaViaje() ,
					'ida'=>0);
			$lista_viajes = ServicioViaje::lstPasajeros($parametros);

			foreach ($lista_viajes as $key => &$reg){
				if ($reg['paquetesCantidad']>0 && $reg['personasCantidad']==0)
					$reg['estadovisible'] = 'Paquete_sin_recoger';
				else 
					$reg['estadovisible'] = 'Persona_sin_recoger';
			}
			$vista->lista_viajes = $lista_viajes;
			$contPasajeros->addElement($vista);
				
			$vista = new VstVista('resumen');
			$plazasDisponibles = $numeroPlazasVehículo - $servicioFrancia->numeroPlazasOcupadas(1);
			$vista->titulo = "Francia - España (Pax:".$servicioFrancia->numeroPlazasOcupadas(1)." / Dispo:".$plazasDisponibles.")";
			$vista->contrato = $servicio->getCodigoParaViaje();
			$vista->ida = 1;
			$vista->cobros = $cobros;
			$vista->esTarea = false;
				
			$parametros = array('contrato'=> $servicio->getCodigoParaViaje() ,
					'ida'=>1);
			$lista_viajes = ServicioViaje::lstPasajeros($parametros);
			if (is_array($lista_viajes)){
				foreach ($lista_viajes as $key => &$reg){
					if ($reg['paquetesCantidad']>0 && $reg['personasCantidad']==0)
						$reg['estadovisible'] = 'Paquete_recogido';
					else
						$reg['estadovisible'] = 'Persona_recogido';
				}
			}
		
			$vista->lista_viajes = $lista_viajes;
			
			$contPasajeros->addElement($vista);
				
			$layout->reg_contenido->addElement($contPasajeros);
		} else {
			$msj = ' No hay viajeros.';
			$layout->reg_contenido->addElement($msj);
		}
	
	
	
	}
	

	
	public function tareasAction(){
		
		$todos = $this->getParametro('td',-1);
		// parámetro $todos nos indica si sólo mostramos los que falta o todos: -1 / 1 
		$idServicio = $this->getParametro('id');
		$servicio = new Servicio($idServicio);
		$codigoVehículo = $servicio->getCodigoVehiculo();
		$vehiculo = new Vehiculo($codigoVehículo);
		$numeroPlazasVehículo = $vehiculo->getNumeroPlazas();
		
		// Visual
		$layout = $this->getLayout();
		
		// Cabecera
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		// TAREAS
		if($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$codigo = $servicio->getCodigoParaViaje();
		} else {
			$codigo = $servicio->getNumeroServicio();
		}
		if (ServicioViaje::getTareasViajeros($codigo)>0){
			$btTareas = new VstBoton_Cabecera('/wserviciochofer/tareas/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_tareas, 'Tareas');
			$btTareas->setEstaSeleccionado(true);
			$layout->reg_titulo->addBoton($btTareas);
		
		}
		// RESUMEN
		if($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$btFrancia = new VstBoton_Cabecera('/wserviciochofer/resumen/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_francia, 'Francia');
			$layout->reg_titulo->addBoton($btFrancia);
		}
		// ESTADOS
		$btEnCoche = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_encoche, 'En coche');
		$layout->reg_titulo->addBoton($btEnCoche);
		
		// INFO
		$btVer = new VstBoton_Cabecera('/wserviciochofer/ver/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_info, 'Datos');
		$layout->reg_titulo->addBoton($btVer);
		
		
		// Fin de cabecera
		
		
		
		
		
		// Viajes sin son de Francia o tareas si son otras tarifas
		if($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$codigoFrancia = $servicio->getCodigoParaViaje();
			$servicioFrancia = new Servicio($codigoFrancia);
				
		
			// VIAJE DE IDA
			$parametros = array('contrato'=> $servicio->getCodigoParaViaje() ,
								'ida'=>0,
								'todos'=>$todos
			);
			$lista_viajes = ServicioViaje::lstTodos($parametros)->getDatos();
			$vista = new VstVista('trabajo_viajes');
			$plazasDisponibles = $numeroPlazasVehículo - $servicioFrancia->numeroPlazasOcupadas(0);
			$vista->titulo = "España - Francia (Pax:".$servicioFrancia->numeroPlazasOcupadas(0)." / Dispo:".$plazasDisponibles.")";
			$vista->contrato = $servicio->getCodigoParaViaje();
			$vista->ida = 0;
			$vista->numeroservicio = $servicio->numeroServicio;
			$vista->esTarea = false;
			$vista->accion = 'tareas';
			if ($todos==-1)
				$vista->todos = 1;
			else 
				$vista->todos = -1;
			
			foreach ($lista_viajes as $key => &$reg){
				$reg['estadovisible'] = ServicioViaje::devolverEstilo($reg);
			}
			//print_r($lista_viajes);
			$vista->lista_viajes = $lista_viajes;
			$layout->reg_contenido->addElement($vista);
				
			// VIAJE DE VUELTA
			$parametros = array('contrato'=> $servicio->getCodigoParaViaje() ,
					'ida'=>1,
					'todos' => $todos
			);
			$vista = new VstVista('trabajo_viajes');
			$lista_viajes = ServicioViaje::lstTodos($parametros)->getDatos();
			
			$plazasDisponibles = $numeroPlazasVehículo - $servicioFrancia->numeroPlazasOcupadas(1);
			$vista->titulo = "Francia - España (Pax:".$servicioFrancia->numeroPlazasOcupadas(1)." / Dispo:".$plazasDisponibles.")";
			$vista->ida = 1;
			$vista->contrato = $servicio->getCodigoParaViaje();
			$vista->numeroservicio = $servicio->numeroServicio;
			$vista->esTarea = false;
			$vista->accion = 'tareas';
			if ($todos==-1)
				$vista->todos = 1;
			else
				$vista->todos = -1;
			foreach ($lista_viajes as $key => &$reg){
				$reg['estadovisible'] = ServicioViaje::devolverEstilo($reg);
		
			}
		
			$vista->lista_viajes = $lista_viajes;
			$layout->reg_contenido->addElement($vista);
				
				
		} else {
				
			$parametros = array('contrato' => $servicio->getNumeroServicio(),
					'ida'=>7,
					'todos'=> $todos
			);
			$lista_viajes = ServicioViaje::lstTodos($parametros)->getDatos();
			$vista = new VstVista('trabajo_viajes');
			$vista->titulo = 'Tareas';
			$vista->esTarea = true;
			$vista->numeroservicio = $servicio->numeroServicio;
			$vista->accion = 'tareas';
			if ($todos==-1)
				$vista->todos = 1;
			else 
				$vista->todos = -1;
			foreach ($lista_viajes as $key => &$reg){
				$reg['estadovisible'] = ServicioViaje::devolverEstilo($reg);
			}
			$vista->lista_viajes = $lista_viajes;
			$layout->reg_contenido->addElement($vista);
				
				
		}
		
	}
	
	/* 
	 * Muestra los datos del servicio y los estados en botón del mismo
	 */
	public function estadosAction(){

		// Leer parámetros
		$id = $this->_request->getParam('id', -1);
		
		// Lógica
		$servicio = new Servicio($id);
		
		
		//$formulario = new FRMServicioEstado($servicio);
		
		$lista_estados = array();
		$lista_estados2 = array();
		
		$lista_estados[Servicio::ST_CONFIRMAR] = array('id_estado'=> Servicio::ST_CONFIRMAR, 'nombre' =>'Confirmar' );
		$lista_estados[Servicio::ST_SALIDA_GARAGE] = array('id_estado'=> Servicio::ST_SALIDA_GARAGE, 'nombre' =>'Salida de Garaje' );
		//if($servicio->tarifa != 'TARIFRANC' && $servicio->tarifa != 'SCONDUCTOR'){
		$lista_estados[Servicio::ST_EN_LUGAR_INICIO] = array('id_estado'=> Servicio::ST_EN_LUGAR_INICIO, 'nombre' =>'En lugar de inicio');
		$lista_estados[Servicio::ST_CON_CLIENTE] = array('id_estado'=> Servicio::ST_CON_CLIENTE, 'nombre' =>'Con cliente');
		//}else{
			
		//}
		$lista_estados[Servicio::ST_FINALIZADO] = array('id_estado'=> Servicio::ST_FINALIZADO, 'nombre' =>'Finalizado');
		$lista_estados[Servicio::ST_EN_GARAGE] = array('id_estado'=> Servicio::ST_EN_GARAGE, 'nombre' =>'En garaje');
		
		$id_estado = 0;
		$id_estado_aux = 0;
		$estados_pasados = $servicio->getEstados();
		
		foreach($estados_pasados as $key_pasado => $pasados){
		
			$id_estado = $key_pasado;
			if(isset($lista_estados[$key_pasado])){
				$lista_estados[$key_pasado]['FECHA'] = $pasados->FECHA;
				$lista_estados[$key_pasado]['HORA'] =$pasados->HORA;
			}else{
				$lista_estados2[$key_pasado]['FECHA'] = $pasados->FECHA;
				$lista_estados2[$key_pasado]['HORA'] =$pasados->HORA;
			}
		
		}
		
		
		
		if($servicio->LLAMADA_CONFIRMA > 0){
			$id_estado_aux = 1;
		}
		if($servicio->LLAMADA_ENLUGAR > 0){
			$id_estado_aux = 3;
		}
		if($servicio->LLAMADA_ENCOCHE > 0){
			$id_estado_aux = 4;
		}
		if($servicio->LLAMADA_FINALIZADO > 0){
			$id_estado_aux = 5;
		}
		
		if ($servicio->LLAMADA_LGARAJE > 0) 
			$id_estado_aux = 6;
		
			
		if($id_estado_aux> $id_estado){
			$id_estado = $id_estado_aux;
		}
		
			
		// Visual
		$layout = $this->getLayout();
		
		// Cabecera
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		// TAREAS
		if($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$codigo = $servicio->getCodigoParaViaje();
		} else {
			$codigo = $servicio->getNumeroServicio();
		}
		if (ServicioViaje::getTareasViajeros($codigo)>0){
			$btTareas = new VstBoton_Cabecera('/wserviciochofer/tareas/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_tareas, 'Tareas');
			$layout->reg_titulo->addBoton($btTareas);
		
		}
		// RESUMEN
		if($servicio->tarifa == 'TARIFRANC' || $servicio->tarifa == 'SCONDUCTOR'){
			$btFrancia = new VstBoton_Cabecera('/wserviciochofer/resumen/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_francia, 'Francia');
			$layout->reg_titulo->addBoton($btFrancia);
		}
		// ESTADOS
		$btEnCoche = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_encoche, 'En coche');
		$btEnCoche->setEstaSeleccionado(true);
		$layout->reg_titulo->addBoton($btEnCoche);
		
		// INFO
		$btVer = new VstBoton_Cabecera('/wserviciochofer/ver/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_info, 'Datos');
		$layout->reg_titulo->addBoton($btVer);
		
		
		// Fin de cabecera
		
		
		
		
		// Contenido

		
		
		foreach($lista_estados as $estado){
			$texto_estado = '';
				
			if($estado['id_estado'] == $id_estado+1){
				$texto_estado = 'color_actual';
			}elseif($estado['id_estado'] <= $id_estado){
				$texto_estado = 'color_finalizado';
			}else{
				$texto_estado = 'btn-default';
			}
			$km = 0;
			switch ($estado['id_estado']){
				case 2:
					$km = $servicio->kilometrosParkingSalida;
					break;
				case 3:
					$km = $servicio->kilometrosVehiculoSalida;
					break;
				case 5:
					$km = $servicio->kilometrosVehiculoLlegada;
					break;
				case 6:
					$km = $servicio->kilometrosParkingLlegada;
					break;
						
			}

			$boton = new VstBoton('/wserviciochofer/cambiaestado/ne/'.$estado['id_estado'].'/id/'.$id ,
					BASEURL,
					$estado['nombre'],
					$estado['nombre'].(($km>0)?' Kms:'.$km:'').(isset($estado['FECHA'])?'<br/> '.$estado['FECHA']:'').(isset($estado['HORA'])?' '.$estado['HORA']:'')
			);			
			$boton->setClase('btn '. $texto_estado .' btn-lg btn-block'. (($estado['id_estado'] > $id_estado+1)?' disabled':''));
			$layout->reg_contenido->addElement($boton);
		}	

		// Botón Resumen
		if ($servicio->tarifa =='SDRFISCAL') {
			$boton = new VstBoton('/wserviciochofer/resumenfiscal/id/'.$id ,
					BASEURL,
					'Resumen',
					'Resumen'
			);
			
			$boton->setClase('btn '. $texto_estado .' btn-lg btn-block'. (($estado['id_estado'] > $id_estado+1)?' disabled':''));
			$layout->reg_contenido->addElement($boton);
		}
		
		/*
		foreach($lista_estados2 as $estado){
			$texto_estado = '';
		
			if($estado['id_estado'] == $id_estado+1){
				$texto_estado = 'color_actual';
			}elseif($estado['id_estado'] <= $id_estado){
				$texto_estado = 'color_finalizado';
			}else{
				$texto_estado = 'btn-default';
			}
			$km = 0;
			switch ($estado['id_estado']){
				case 2:
					$km = $servicio->kilometrosParkingSalida;
					break;
				case 3:
					$km = $servicio->kilometrosVehiculoSalida;
					break;
				case 5:
					$km = $servicio->kilometrosVehiculoLlegada;
					break;
				case 6:
					$km = $servicio->kilometrosParkingLlegada;
					break;
		
			}
			$boton = new VstBoton('/wserviciochofer/cambiaestado/ne/'.$estado['id_estado'].'/id/'.$id ,
					BASEURL,
					$estado['nombre'],
					$estado['nombre'].(($km>0)?' Kms:'.$km:'').(isset($estado['FECHA'])?'<br/> '.$estado['FECHA']:'').(isset($estado['HORA'])?' '.$estado['HORA']:'')
			);
			$boton->setClase('btn '. $texto_estado .' btn-lg btn-block'. (($estado['id_estado'] > $id_estado+1)?' disabled':''));
			$layout->reg_contenido->addElement($boton);
		}
		*/
		
		// Fin Contenido Estados
	
	}
	
	
	public function editarAction(){
		
		AppCabecera::setTitulo('Hoja de ruta');
		
		
		$boton = new Boton('/wserviciochofer/index/' , BASEURL, 'VOLVER', 'Volver');
		$boton->setClase('btn-primary btn-lg btn-block');
		$this->regionContenido->addElement($boton);
		
		
		$id = $this->_request->getParam('id', -1);
		
		$servicio = new Servicio($id);
		
		
		$formulario = new FRMServicio($servicio);
		$this->regionContenido->addElement($formulario);
		
		$listado = new LSTDetalleServicio();
		$listado->setParametroMetodo('servicio', $id);
		$this->regionContenido->addElement($listado);
		
	}
	
	public function cambiaestadoAction(){

		$gps = gps::getUltimaPosicionChofer();
		
		$id = $this->_request->getParam('id', -1);
		$id_nuevo_estado = $this->_request->getParam('ne', -1);
		
		$servicio = new Servicio($id);
		$servicio->CambiarEstado($id_nuevo_estado);
		
		switch ($id_nuevo_estado) {
			case 1:
				$this->_redirect('servicio/confirmar/id/'.$id);
				break;
			case 2:
				$this->_redirect('servicio/editarpaso/id/'.$id.'/p/2');
				break;
			case 3:
				$this->_redirect('servicio/editarpaso/id/'.$id.'/p/3');
				break;
			case 4:
				$this->_redirect('servicio/concliente/id/'.$id);
				break;
			case 5:
				$this->_redirect('servicio/editarpaso/id/'.$id.'/p/5');
				break;
			case 6:
				$this->_redirect('servicio/editarpaso/id/'.$id.'/p/6');
				break;
		}
		
		
		
	}
	
	public function confirmarAction(){
		$id = $this->_request->getParam('id', -1);
		$this->_redirect('servicio/estados/id/'.$id);
	}

	
	public function resumenfiscalAction(){
	
		// Carga datos
		$id = $this->_request->getParam('id', -1);
		$servicio = new Servicio($id);
			
		$cmp_info = new VstInfo();
		$kilometrosServicio = $servicio->kilometrosParkingLlegada-$servicio->kilometrosParkingSalida;
		if ($kilometrosServicio > $servicio->limiteKilometros) 
			$kilometrosExtra=$kilometrosServicio - $servicio->limiteKilometros;
		else
			$kilometrosExtra = 0;
		$cmp_info->addElement('Kilómetros Totales:', $servicio->kilometrosParkingLlegada-$servicio->kilometrosParkingSalida);
		$cmp_info->addElement('Kilómetros Servicio:', $servicio->limiteKilometros);
		$cmp_info->addElement('Kilómetros Extra', $kilometrosExtra);
		
		$linea = new ServicioLinea($servicio->numeroServicio, Servicio::CON_LIN_EXTRA_HORAS_ESPERA_FISCAL);
		
		$fechaFin = $servicio->fechaParkingEntrada;
		$horaFin = $servicio->horaParkingEntrada;
		$fechaInicio = $servicio->fechaServicioInicio;
		$horaInicio = $servicio->horaServicioInicio;

		if ($horaInicio > $servicio->horaServicioRealSalida)
			$horaInicio = $servicio->horaServicioRealSalida;
 
		if (isset($fechaFin) && $fechaFin) {
			$minutosCortesia = 15;
			$fechaFinMysql = AppHerramienta::fechaHumanaAMysql($fechaFin);
			$ff = strtotime($fechaFinMysql.' '.$horaFin);
			$fechaIniMysql = AppHerramienta::fechaHumanaAMysql($fechaInicio);
			$fs = strtotime($fechaIniMysql.' '.$horaInicio);
			$diferencia_ensegundos = $ff - $fs;
			$horas = floor( $diferencia_ensegundos / (60*60) );
			if ($horas==0) $horas =1;
		
			$minutos = ($diferencia_ensegundos - (60*60*$horas))/60;
			if ($minutos>$minutosCortesia)
				$horas++;

			$horasEspera = $horas - $servicio->limiteHoras;
			if ($horasEspera<0) $horasEspera=0;
		} else {
			$horas = '';
			$horasEspera  ='';
		}
	
		//$horasEspera = $linea->cantidad;
		
		$cmp_horas = new VstInfo();
		$cmp_horas->addElement('Horas Totales:', $horas);
		$cmp_horas->addElement('Horas Servicio:', round($servicio->limiteHoras,0));
		$cmp_horas->addElement('Horas Espera:', $horasEspera);
		
		
	
		// Visual
		$layout = $this->getLayout();
	
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		$bt_inicio = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$layout->reg_titulo->addBoton($bt_inicio);
	
		// Contenido
		$layout->reg_contenido->addElement($cmp_info);
		$layout->reg_contenido->addElement($cmp_horas);
	}
	
	
	public function editarpasoAction(){
	
		// Carga datos
		$id = $this->_request->getParam('id', -1);
		$paso = $this->getParametro('p');
		$servicio = new Servicio($id);
		switch ($paso) {
			case 6:
				if (!$servicio->fechaParkingEntrada){
					$servicio->fechaParkingEntrada = date('d/m/Y');
					$servicio->horaParkingEntrada = date('H:i:s');
				}
				break;
			case 2:
				if (!$servicio->fechaParkingSalida){
					$servicio->fechaParkingSalida = date('d/m/Y');
					$servicio->horaParkingSalida = date('H:i:s');
					$servicio->horaServicioRealSalida = $servicio->horaParkingSalida;
				}
				break;
		}
		
		$formulario = new FRMPasosServicio($servicio, $paso);
	
		// Visual
		$layout = $this->getLayout();
	
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		$bt_inicio = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$layout->reg_titulo->addBoton($bt_inicio);
	
		// Contenido
		$layout->reg_contenido->addElement($formulario);
	}
	
	
	public function salidaAction(){
	

		
		// Carga datos
		$id = $this->_request->getParam('id', -1);
		$servicio = new Servicio($id);
		$formulario = new FRMSalida($servicio);
		
		// Visual
		$layout = $this->getLayout();
		
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		$bt_inicio = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$layout->reg_titulo->addBoton($bt_inicio);
		
		// Contenido
		$ct = new vstContenedor('Salida Garaje');
		$ct->addElement($formulario);
		$layout->reg_contenido->addElement($ct);	
	}	
	
	public function resumenviajeAction(){
		// Carga datos
		$id = $this->_request->getParam('id', -1);
		$servicio = new Servicio($id);
		
		$formulario = new FRMPasosServicio($servicio);
		
		// Visual
		$layout = $this->getLayout();
		
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		$bt_inicio = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$layout->reg_titulo->addBoton($bt_inicio);
		
		// Contenido
		$layout->reg_contenido->addElement($formulario);
		
		
	}
	
	public function enlugarAction(){
		
		
		// Carga datos
		$id = $this->_request->getParam('id', -1);
		$servicio = new Servicio($id);
		$formulario = new FRMEnlugar($servicio);
		
		// Visual
		$layout = $this->getLayout();
		
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		$bt_inicio = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$layout->reg_titulo->addBoton($bt_inicio);
		
		$ct = new vstContenedor('Lugar Inicio');
		$ct->addElement($formulario);
		$layout->reg_contenido->addElement($ct);
		
	}
	
	public function conclienteAction(){
		$id = $this->_request->getParam('id', -1);
		$this->_redirect('servicio/estados/id/'.$id);
	}
	
	public function finalizadoAction(){
		
		
		// Carga datos
		$id = $this->_request->getParam('id', -1);
		$servicio = new Servicio($id);
		$formulario = new FRMFinalizado($servicio);
		$fecha = date('d/m/Y');
		$hora = date('H:i');
		$formulario->fechaServicioFin->setValue($fecha);
		$formulario->horaServicioFin->setValue($hora);
		
		// Cabecera
		$layout = $this->getLayout();
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		$bt_inicio = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$layout->reg_titulo->addBoton($bt_inicio);
		
		// Contenido
		$ct = new vstContenedor('Dejar al cliente');
		$ct->addElement($formulario);
		$layout->reg_contenido->addElement($ct);
		
	}
	
	public function engarajeAction(){

		// Carga datos
		$id = $this->_request->getParam('id', -1);
		$servicio = new Servicio($id);
		$formulario = new FRMEngaraje($servicio);
		
		// Cabecera
		$layout = $this->getLayout();
		$titulo = $servicio->numeroServicio;
		$layout->reg_titulo->setTitulo($servicio->numeroServicio);
		$bt_inicio = new VstBoton_Cabecera('/wserviciochofer/estados/id/'.$servicio->numeroServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$layout->reg_titulo->addBoton($bt_inicio);
		
		// Contenido
		$ct = new vstContenedor('Llegada garaje');
		$ct->addElement($formulario);
		$layout->reg_contenido->addElement($ct);
		
	}
	
}