<?php 

class ViajeController extends AdminController {
	
	public function listadoAction(){
		
		// Lógica
		$lst = new LSTViaje();
		$frm = new FRMViajeBuscador();
		$lst->setFiltro($frm);
		
		// Visual
		$ly = $this->getLayout();
		$ly->reg_titulo->setTitulo('Lista de Viajes');
		$btnuevo = new VstBotonTitulo('/viaje/editar', 'Crear registro', 'Nuevo');
		$ly->reg_titulo->addBoton($btnuevo);
		
		$cont = new VstContenedor('Filtrar');
		$cont->addElement($frm);
		$ly->reg_contenido->addElement($cont);
		$ly->reg_contenido->addElement($lst);	
		
	}
	
	public function editarAction(){
		
		// Lógica
		$contrato = $this->getParametro('contrato'); 
		$linea = $this->getParametro('linea');
		
		$ida = $this->getParametro('ida');
		$Viaje = new ServicioViaje($contrato, $linea, $ida);
		$frm = new FRMViaje($Viaje);
		$contratoServicio = Servicio::getCodigoParaServicio($contrato);
		
		
		// Visual
		$ly = $this->getLayout();
		$ly->reg_cabecera->setTitulo('Editar pasajero');
		$bt_inicio = new VstBoton_Cabecera('/servicio/tareas/id/'.$contratoServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		//echo '<br><br>';
		$origen = isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'';
		//echo '<h1>'.$origen.'</h1>';
		$cadenaAQuitar = 'http://'.$_SERVER['HTTP_HOST'].BASEURL;
		//echo '<h1>'.$cadenaAQuitar.'</h1>';
		$origen = str_replace($cadenaAQuitar,'',$origen);
		//echo '<h1>'.$origen.'</h1>';
		
		$bt_inicio = new VstBoton_Cabecera($origen, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$ly->reg_cabecera->addBoton($bt_inicio);
		
		$ly->reg_contenido->addElement($frm);
		
		
	}
	
	public function eliminarAction(){
		$id = (int) $this->getParametro('id');
		$elemento = new Viaje($id);
		try {
			$elemento->remove();
			AppAjax::setAccion('refrescar');
		} catch (Exception $e) {
			AppAjax::setMensajeError('grid', (string)$e);
		}
		
	}
	
	public function recogerAction(){
	
		// Lógica
		$contrato = $this->getParametro('contrato');
		$linea = $this->getParametro('linea');
		$ida = $this->getParametro('ida');
		$Viaje = new ServicioViaje($contrato, $linea, $ida);
		$Viaje->setOrigenFechaRecogido(date('d/m/Y'));
		$Viaje->setOrigenHoraRecogido(date('H:i:s'));
		$frm = new FRMViajeRecoger($Viaje);
		$contratoServicio = Servicio::getCodigoParaServicio($contrato);
	
	
		// Visual
		$ly = $this->getLayout();
		$ly->reg_cabecera->setTitulo('Recoger Pasajero');
		$bt_inicio = new VstBoton_Cabecera('/servicio/tareas/id/'.$contratoServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$ly->reg_cabecera->addBoton($bt_inicio);
		$con = new VstContenedor('Fecha y Hora real de recogida');
		$con->addElement($frm);
		$ly->reg_contenido->addElement($con);
	
	
	}
	
	public function realizarcobroAction(){
		$contrato = $this->getParametro('contrato');
		$vuelta = $this->getParametro('vuelta');
		$cliente = $this->getParametro('cliente');
		$formaPago = $this->getParametro('formaPago');
		$personasImporte = $this->getParametro('personasImporte');
		$paquetesImporte = $this->getParametro('paquetesImporte');
		$contratoServicio = Servicio::getCodigoParaServicio($contrato);
		// Pagar personas
		if ($personasImporte>0){
			$quePago = CobroViaje::TIPO_PAGO_PERSONA;
			$cobro = new CobroViaje($contrato, $cliente, $vuelta, $quePago);
			$cobro->setImporte($personasImporte);
			$cobro->setContratoDesdeDondeSeCobra($contrato);
			$cobro->setFormaPago($formaPago);
			$cobro->save();
		}
		// Pagar paquete
		if ($paquetesImporte>0){
			$quePago = CobroViaje::TIPO_PAGO_PAQUETE;
			$cobro = new CobroViaje($contrato, $cliente, $vuelta, $quePago);
			$cobro->setImporte($paquetesImporte);
			$cobro->setContratoDesdeDondeSeCobra($contrato);
			$cobro->setFormaPago($formaPago);
			$cobro->save();
		}
		$this->_redirect('/servicio/tareas/id/'.$contratoServicio);
	}
	
	public function cobrarAction(){
		$contrato = $this->getParametro('contrato');
		$contratoServicio = Servicio::getCodigoParaServicio($contrato);
		$linea = $this->getParametro('linea');
		$ida = $this->getParametro('ida');
		$viaje = new ServicioViaje($contrato, $linea, $ida);
		$cliente = $viaje->getCliente();
		$servicio = new Servicio($contratoServicio);
		$cobrado = CobroViaje::loadCobrosFranciaSinAgrupar($contrato, $cliente, $ida);
		//print_r($cobrado);
		//die();
		
		$titulo = 'Cobrar a '.$viaje->getPasajeroNombre();
		$contenedor = new vstContenedor($titulo);
		$vista = new VstVista('form_cobrar');
		$vista->contrato = $viaje->getContrato();
		$vista->idavuelta = ($viaje->getIda());
		$vista->cliente = $viaje->getCliente();
		$vista->personasImporte = $viaje->getPersonasImporte();
		$vista->personasPagado = isset($cobrado[CobroViaje::TIPO_PAGO_PERSONA])?$cobrado[CobroViaje::TIPO_PAGO_PERSONA]:0;
		$vista->paquetesImporte = $viaje->getPaquetesImporte();
		$vista->paquetesPagado = isset($cobrado[CobroViaje::TIPO_PAGO_PAQUETE])?$cobrado[CobroViaje::TIPO_PAGO_PAQUETE]:0;
		
		$contenedor->addElement($vista);
		
		// Visual
		$ly = $this->getLayout();
		$ly->reg_cabecera->setTitulo($contrato);
		$bt_inicio = new VstBoton_Cabecera('/servicio/tareas/id/'.$contratoServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$ly->reg_cabecera->addBoton($bt_inicio);
		$ly->reg_contenido->addElement($contenedor);
	}
	
	public function dejarAction(){
	
		// Lógica
		$contrato = $this->getParametro('contrato');
		$linea = $this->getParametro('linea');
		$ida = $this->getParametro('ida');
		$Viaje = new ServicioViaje($contrato, $linea, $ida);
		$Viaje->setDestinoFechaDejado(date('d/m/Y'));
		$Viaje->setDestinoHoraDejado(date('H:i:s'));
		$contratoServicio = Servicio::getCodigoParaServicio($contrato);
		$frm = new FRMViajeDejar($Viaje);
	
	
		// Visual
		$ly = $this->getLayout();
		$ly->reg_cabecera->setTitulo('Dejar Pasajero');
		$con = new VstContenedor('Fecha y hora real de dejada');
		$bt_inicio = new VstBoton_Cabecera('/servicio/tareas/id/'.$contratoServicio, VstBoton_Cabecera::icon_volver, 'Volver al Servicio');
		$ly->reg_cabecera->addBoton($bt_inicio);
		$con->addElement($frm);
		$ly->reg_contenido->addElement($con);
	
	
	}
	
	public function subirordenAction(){
		$contrato = $this->getParametro('contrato');
		$linea = $this->getParametro('linea');
		$ida = $this->getParametro('ida');
		$dejar = $this->getParametro('dejar');
		$contratoServicio = Servicio::getCodigoParaServicio($contrato);
		
		ServicioViaje::reordenarElemento($contrato, $linea, $ida, $dejar, true);
		$this->_redirect('/servicio/tareas/id/'.$contratoServicio);
		
	}
	public function bajarordenAction(){
		$contrato = $this->getParametro('contrato');
		$linea = $this->getParametro('linea');
		$ida = $this->getParametro('ida');
		$dejar = $this->getParametro('dejar');
		ServicioViaje::reordenarElemento($contrato, $linea, $ida, $dejar, false);
		
		$contratoServicio = Servicio::getCodigoParaServicio($contrato);
		$this->_redirect('/servicio/tareas/id/'.$contratoServicio);
	}	
		
}