<?php
class FRMPasosServicio extends AppFormulario {
	
	protected $_paso;

	//protected $_url_traseditar=	'/servicio/index';

	public function init(){
		parent::init();
		$this->setAddClassFormHorizontal(true);
		// Accion
		$this->setAction('/servicio/editarpaso/id/'.$this->getObjeto()->id.'/p/'.$this->_paso);
		$this->_url_traseditar = '/servicio/estados/id/'.$this->getObjeto()->id;

		
		
		// Campos
		
		$titulo = '';
		$fd = new VstFieldSet();
		
		switch ($this->_paso){
			
			case 6:
				$titulo = 'Vuelta al Garaje';
				$kilometrosParkingLlegada = new EFNumero('kilometrosParkingLlegada');
				$ev = new EVFocus(AppEvento::APP_EVENTO_LOAD);
				$kilometrosParkingLlegada->addEvento($ev, true);
				$kilometrosParkingLlegada->setLabel('Kms Regreso Garaje');
				$kilometrosParkingLlegada->setAttrib('min', 1);
				$kilometrosParkingLlegada->setAttrib('required', 1);
				$this->addElement($kilometrosParkingLlegada);
				
				$fechaParkingLlegada = new EFHidden('fechaParkingEntrada');
				$this->addElement($fechaParkingLlegada);
				$fechaHoraLlegada = new EFHidden('fechaHoraLlegada');
				$this->addElement($fechaHoraLlegada);
				
				$fd->addElement($kilometrosParkingLlegada);
				
			case 5:
				$kilometrosVehiculoLlegada = new EFNumero('kilometrosVehiculoLlegada');
				$kilometrosVehiculoLlegada->setLabel('Kms Fin Servicio');
				$kilometrosVehiculoLlegada->setAttrib('min', 1);
				$kilometrosVehiculoLlegada->setAttrib('required', 1);
				
				$fechaLlegada = new EFFecha('fechaServicioFin');
				$fechaLlegada->setLabel('Fecha Fin:');
				
				$horaLlegada = new EFHora('horaServicioFin');
				$horaLlegada->setLabel('Hora Fin:');

				$tiempoEspera = new EFDecimal('tiempoEspera');
				$tiempoEspera->setLabel('Tiempo espera');
				$tiempoEspera->setDecimales(2);
				$tiempoEspera->setAttrib('step', 0.05);
				$tiempoEspera->setAttrib('min', 0);
				$tiempoEspera->setAttrib('max', 12);
				
				if ($this->_paso == 5){
					$titulo = 'Lugar Llegada';
					$ev = new EVFocus(AppEvento::APP_EVENTO_LOAD);
					$kilometrosVehiculoLlegada->addEvento($ev, true);
				} else {
					$kilometrosVehiculoLlegada->setAttrib('readonly', true);
					$fechaLlegada->setAttrib('readonly', true);
					$horaLlegada->setAttrib('readonly', true);
					$tiempoEspera->setAttrib('readonly', true);
				}
				$this->addElement($kilometrosVehiculoLlegada);
				$fd->addElement($kilometrosVehiculoLlegada);
				$this->addElement($fechaLlegada);
				$fd->addElement($fechaLlegada);
				$this->addElement($horaLlegada);
				$fd->addElement($horaLlegada);

				$this->addElement($tiempoEspera);
				$fd->addElement($tiempoEspera);

				if ($this->_paso == 6){
					$validador = new VLDMayorQue('kilometrosVehiculoLlegada',' los kms en el fin del servicio');
					$kilometrosParkingLlegada->addValidator($validador);
				}
				
					
			case 3:
				$kilometrosVehiculoSalida = new EFNumero('kilometrosVehiculoSalida');
				$kilometrosVehiculoSalida->setLabel('Kms Inicio Servicio');
				if ($this->_paso == 3){
					$titulo = 'Lugar Inicio';
					$ev = new EVFocus(AppEvento::APP_EVENTO_LOAD);
					$kilometrosVehiculoSalida->addEvento($ev, true);
				} else {
					$kilometrosVehiculoSalida->setAttrib('readonly', 'true');
				}
				$this->addElement($kilometrosVehiculoSalida);
				$fd->addElement($kilometrosVehiculoSalida);
				if ($this->_paso == 5){
					$validador = new VLDMayorQue('kilometrosVehiculoSalida',' los kms en el inicio del servicio');
					$kilometrosVehiculoLlegada->addValidator($validador);
				}
				
			case 2:
				$kilometrosParkingSalida = new EFNumero('kilometrosParkingSalida');
				$kilometrosParkingSalida->setLabel('Kms Salida Garaje');			
				$kilometrosParkingSalida->setAttrib('min', 1);	
				$kilometrosParkingSalida->setAttrib('required',1);
				if ($this->_paso == 2){
					$titulo = 'Saliendo Garaje';
					$ev = new EVFocus(AppEvento::APP_EVENTO_LOAD);
					$kilometrosParkingSalida->addEvento($ev, true);
				} else {
					$kilometrosParkingSalida->setAttrib('readonly', true);
				}				
				$this->addElement($kilometrosParkingSalida);
				$fd->addElement($kilometrosParkingSalida);
				if ($this->_paso == 3){
					$validador = new VLDMayorQue('kilometrosParkingSalida',' los kms de salida del garaje');
					$kilometrosVehiculoSalida->addValidator($validador);
				}
				if ($this->_paso == 2){
					$fechaParkingSalida = new EFHidden('fechaParkingSalida');
					$this->addElement($fechaParkingSalida);
					$horaParkingSalida = new EFHidden('horaParkingSalida');
					$this->addElement($horaParkingSalida);
					$horaServicioRealSalida = new EFHidden('horaServicioRealSalida');
					$this->addElement($horaServicioRealSalida);
						
				}
				
				break;
		}

		switch ($this->_paso){
			case 1:
			case 2:
			case 3:
			case 4:
				$submit = new EFSubmit('guardar');
				$submit->setValue('Guardar');
				break;
			case 5:
				$submit = new EFSubmit('cerrar');
				$submit->setValue('Cerrar');
				break;
			case 6:
				$submit = new EFSubmit('cerrarViaje');
				$submit->setValue('Cerrar');
				break;
		}
		$this->addElement($submit);
		$fd->addElement($submit);

		
		$ct = new vstContenedor($titulo);
		$ct->addElement($fd);
		$this->addElementoVista($ct);

	}
	
	public function cerrarAccion($datos){
	
		$servicio = $this->getObjeto();
		if($this->isValid($datos)){
			try{
				$valores = $this->getValues();
				$servicio->calcularCierre($valores['fechaServicioFin'], $valores['horaServicioFin'], $valores['kilometrosVehiculoLlegada'], $valores['tiempoEspera']);
				$servicio->save();
					
				if(isset($_REQUEST['destino_autocomplete'])&& $_REQUEST['destino_autocomplete']){
					AppAjax::setValores($_REQUEST['destino_autocomplete'], $objeto->id);
				}elseif(strlen($this->_url_traseditar)>0){
					AppAjax::setRedirigir(BASEURL . $this->_url_traseditar);
				}
	
			} catch (Exception $e) {
				AppAjax::setMensajeError($this->identificadorScript(), $e->getMessage());
			}
	
		}else{
			foreach ($this->getElements() as $element){
				if($element instanceof AppElementoFormulario){
					if(count($element->getMessages()>1))
					foreach($element->getMessages() as $mensaje){
						AppAjax::setMensajeError($element->identificadorScript(), $mensaje);
					}
				}
					
			}
		}
	}

	public function cerrarViajeAccion($datos){
	
		$servicio = $this->getObjeto();
		if($this->isValid($datos)){
			try{
				$valores = $this->getValues();
				//$servicio->fechaParkingEntrada = date('d/m/Y');
				//$servicio->horaParkingEntrada = date('H:i:s');
				$servicio->kilometrosParkingLlegada = $valores['kilometrosParkingLlegada'];		
				//$servicio->calcularCierreViaje($valores['tiempoEspera']);

				$servicio->save();
					
				if(isset($_REQUEST['destino_autocomplete'])&& $_REQUEST['destino_autocomplete']){
					AppAjax::setValores($_REQUEST['destino_autocomplete'], $objeto->id);
				}elseif(strlen($this->_url_traseditar)>0){
					AppAjax::setRedirigir(BASEURL . $this->_url_traseditar);
				}
	
			} catch (Exception $e) {
				AppAjax::setMensajeError($this->identificadorScript(), $e->getMessage());
			}
	
		}else{
			foreach ($this->getElements() as $element){
				if($element instanceof AppElementoFormulario){
					if(count($element->getMessages()>1))
						foreach($element->getMessages() as $mensaje){
						AppAjax::setMensajeError($element->identificadorScript(), $mensaje);
					}
				}
					
			}
		}
	}
	
	public function __construct(Servicio $objeto, $paso){
		$this->_objeto = $objeto;
		$this->_paso = $paso;
		parent::__construct();
	}
}