Beispiel #1
0
        //crear notificacion cuando una carrera es atendida
        //se envia al cliente la informacion del taxista y del vehiculo, asi como la posicion donde se encuentra y el tiempo
        //aproximado de recogida
        public static void crearNotificaciones(int idCarrera)
        {
            CabspotDB           db           = new CabspotDB();
            notificacionCliente notificacion = new notificacionCliente();
            var carrera  = db.carreras.Find(idCarrera);
            var taxista  = db.taxistas.Find(carrera.idTaxista);
            var vehiculo = taxista.vehiculos.Where(x => x.activo).First();

            //respuesta json a almacenar en bd
            respuestaCarera respuesta = new respuestaCarera();

            respuesta.idCarrera     = idCarrera;
            respuesta.nombreTaxista = taxista.personas.nombres + " " + taxista.personas.apellidos;
            respuesta.ubicacion     = taxista.latitudActual + "," + taxista.longitudActual;
            respuesta.vehiculo      = vehiculo.marca + " " + vehiculo.modelo + " " + vehiculo.anio;
            respuesta.colorVehiculo = vehiculo.color;

            notificacion.idCliente                = (int)carrera.idCliente;
            notificacion.codigoTaxista            = taxista.codigoTaxista;
            notificacion.nombreTaxista            = taxista.personas.nombres + " " + taxista.personas.apellidos;
            notificacion.ubicacionTaxista         = Utilidades.getAddress((double)taxista.latitudActual, (double)taxista.longitudActual);
            notificacion.vehiculo                 = vehiculo.marca + " " + vehiculo.modelo + " " + vehiculo.anio + " [" + vehiculo.color + "]";
            notificacion.tiempoAproximadoRecogida = Utilidades.getTravelTime((double)carrera.latitudOrigen, (double)carrera.longitudOrigen, (double)taxista.latitudActual, (double)taxista.longitudActual);

            try
            {
                db.notificacionCliente.Add(notificacion);
                db.SaveChangesAsync();
            }
            catch (Exception e)
            {
            }
        }
Beispiel #2
0
        //crear solicitudes a taxistas cercanos a la ubicacion del cliente
        public static bool solicitudTaxista(carreras carrera)
        {
            //
            var taxistasDisponibles = new List <taxistas>();

            //buscar taxistas en un radio de 5km a la ubicacion del cliente y que estan disponibles
            foreach (taxistas tax in db.taxistas)
            {
                string coordOrigen  = tax.latitudActual + "," + tax.longitudActual;
                string coordDestino = carrera.latitudOrigen + "," + carrera.longitudOrigen;

                if (Utilidades.getDistance((double)tax.latitudActual, (double)tax.longitudActual, carrera.latitudOrigen, carrera.longitudOrigen) < Constantes.RADIO_DISTANCIA)
                {
                    taxistasDisponibles.Add(tax);
                }
            }

            //hay por lo menos un taxista en la zona del cliente
            if (taxistasDisponibles.Count() > 0)
            {
                List <solicitudes> solicitudesNuevas = new List <solicitudes>();

                //crear solicitudes
                foreach (var t in taxistasDisponibles)
                {
                    solicitudes solicitud = new solicitudes();
                    solicitud.idCarrera         = carrera.idCarrera;
                    solicitud.fechaSolicitud    = DateTime.Now;
                    solicitud.idEstadoSolicitud = 51;  //en espera
                    solicitud.idTaxista         = t.idTaxista;

                    solicitudesNuevas.Add(solicitud);
                }

                try
                {
                    db.solicitudes.AddRange(solicitudesNuevas);
                    db.SaveChangesAsync();

                    //generar notificaciones
                    crearNotificaciones(taxistasDisponibles, solicitudesNuevas);

                    return(true);
                }
                catch (Exception e)
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
Beispiel #3
0
        private static void crearNotificaciones(List <taxistas> taxistasDisponibles, List <solicitudes> solicitudes)
        {
            CabspotDB db = new CabspotDB();
            List <notificacionTaxista> notificaciones = new List <notificacionTaxista>();

            foreach (taxistas t in taxistasDisponibles)
            {
                foreach (solicitudes s in solicitudes)
                {
                    //trama json (idSolicitud y direciones origen y destino)
                    var solicitudesTaxista = db.solicitudes.Where(x => x.idTaxista == t.idTaxista && x.idSolicitud == s.idSolicitud)
                                             .Select(x => new
                    {
                        x.idSolicitud,
                        x.carreras.latitudOrigen,
                        x.carreras.longitudOrigen,
                        x.carreras.latitudDestino,
                        x.carreras.longitudDestino,
                        x.carreras.metodopago.metodoPago
                    });

                    if (solicitudesTaxista.Count() > 0)
                    {
                        var solicitud = solicitudesTaxista.First();
                        notificacionTaxista notificacion = new notificacionTaxista();
                        notificacion.idTaxista        = t.idTaxista;
                        notificacion.metodoPago       = solicitud.metodoPago;
                        notificacion.ubicacionDestino = Utilidades.getAddress(solicitud.latitudDestino, solicitud.longitudDestino);
                        notificacion.ubicacionOrigen  = Utilidades.getAddress(solicitud.latitudOrigen, solicitud.longitudOrigen);;

                        notificaciones.Add(notificacion);
                        break;
                    }
                }
            }

            try
            {
                db.notificacionTaxista.AddRange(notificaciones);
                db.SaveChangesAsync();
            }
            catch (Exception e)
            {
            }
        }