public async Task <ActionResult> IniciarViaje(Viaje dto)
        {
            try
            {
                await cp.IniciarViaje(dto.id);

                Session["idViajeIniciado"] = dto.id;

                Viaje v = await gp.obtenerViaje(dto.id);

                int idLinea = v.horario.linea.id;

                ICollection <Parada> lstParada = await gp.obtenerParadasDeLinea(idLinea);

                await cp.RegistrarPasoPorParada(lstParada.First().id, dto.id);

                Session["idUltimaParada"] = lstParada.First().id;

                return(View("index"));
            }
            catch
            {
                Usuario             u         = Session["datosLogeados"] as Usuario;
                ICollection <Viaje> lstViajes = await cp.ListarViajesDelDia(u.id);

                ViewBag.listaViaje = lstViajes;

                return(View("IniciarViaje"));
            }
        }
        public async Task <ActionResult> ComprarPasaje(ComprarPasajeModel cpm)
        {
            try
            {
                cpm.lineas = (List <Share.Entities.Linea>) await gp.ListarLinea();

                cpm.precioElegirAsiento = await up.PrecioParaElegirAsiento();

                // calidacion
                if (!TryValidateModel(cpm, nameof(ComprarPasaje)))
                {
                    return(View(cpm));
                }

                ConfirmarPagoModel confPago = new ConfirmarPagoModel()
                {
                    fecha               = cpm.fecha,
                    idViaje             = cpm.idViaje,
                    idLinea             = cpm.idLinea,
                    idParadaOrigen      = cpm.idParadaOrigen,
                    idParadaDestino     = cpm.idParadaDestino,
                    asiento             = cpm.asiento,
                    precio              = cpm.precio,
                    nombreLinea         = Task.Run(() => gp.obtenerLinea(cpm.idLinea)).Result.nombre,
                    nombreParadaOrigen  = Task.Run(() => gp.obtenerParada(cpm.idParadaOrigen)).Result.nombre,
                    nombreParadaDestino = Task.Run(() => gp.obtenerParada(cpm.idParadaDestino)).Result.nombre,
                    hora = Task.Run(() => gp.obtenerViaje(cpm.idViaje)).Result.horario.hora,
                };

                return(View("ConfirmarPago", confPago));
            }
            catch (Exception)
            {
                return(View(cpm));
            }
        }