Example #1
0
        public static List <PedidoMapa> ObtenerPendientesApi()
        {
            using (TeloBuscoEntities db = new TeloBuscoEntities())
            {
                try
                {
                    int idPendiente  = EstadosServicio.obtenerIdEstadoPedidoPorDescripcion("Pendiente");
                    var listaPedidos = db.Pedidos.Include("Estados")
                                       .Include("Localidades")
                                       .Include("Localidades1")
                                       .Include("AspNetUsers")
                                       .Include("Postulaciones")
                                       .Where(x => x.id_estado == idPendiente)
                                       .ToList();
                    List <PedidoMapa> pedidosPendientes = new List <PedidoMapa>();
                    foreach (var pedido in listaPedidos)
                    {
                        Coordenada origen  = new Coordenada();
                        Coordenada destino = new Coordenada();
                        if (pedido.lat_origen != null && pedido.lng_origen != null)
                        {
                            origen.lat = Convert.ToDouble(pedido.lat_origen);
                            origen.lng = Convert.ToDouble(pedido.lng_origen);
                        }

                        if (pedido.lat_destino != null && pedido.lng_destino != null)
                        {
                            destino.lat = Convert.ToDouble(pedido.lat_destino);
                            destino.lng = Convert.ToDouble(pedido.lng_destino);
                        }
                        var rangoPrecios = Comunes.ObtenerRangoPrecios(origen, destino);
                        //ver postulado
                        PedidoMapa pedidoMapa = new PedidoMapa()
                        {
                            IdPedido            = pedido.IdPedido,
                            IdCliente           = pedido.idCliente,
                            NombreCliente       = pedido.AspNetUsers.NombreApellido,
                            DescripcionPedido   = pedido.descripcion_pedido,
                            ObservacionesPedido = pedido.observaciones_pedido != null? pedido.observaciones_pedido : "Ninguna",
                            DireccionOrigen     = pedido.calle_origen + " " + pedido.nro_calle_origen + ", " + pedido.Localidades.Nombre,
                            DireccionDestino    = pedido.calle_destino + " " + pedido.nro_calle_destino + ", " + pedido.Localidades1.Nombre,
                            Distancia           = Math.Round(Comunes.DistanciaEntreDosPuntosEnKM(origen, destino), 2),
                            Precio    = Math.Round(pedido.precio_predido, 2),
                            LatOrigen = pedido.lat_origen != null?Convert.ToDouble(pedido.lat_origen) : 0,
                                            LngOrigen = pedido.lng_origen != null?Convert.ToDouble(pedido.lng_origen) : 0,
                                                            Postulado    = false,
                                                            PrecioMinimo = rangoPrecios.PrecioMinimo,
                                                            PrecioMaximo = rangoPrecios.PrecioMaximo
                        };
                        pedidosPendientes.Add(pedidoMapa);
                    }
                    return(pedidosPendientes);
                }
                catch (Exception ex)
                {
                    return(null);
                }
            }
        }
Example #2
0
        //public static bool crear(string idCliente, int nroDirOrigen, string calleOrigen, int idLocalidadOrigen,
        //                         int nroDirDestino, string calleDestino, int idLocalidadDestino, decimal precioPedido)
        //{
        //    using (TeloBuscoEntities db = new TeloBuscoEntities())
        //    {
        //        try
        //        {
        //            Pedidos pedido = new Pedidos();
        //            pedido.idCliente = idCliente;
        //            pedido.nro_calle_origen = nroDirOrigen;
        //            pedido.calle_origen = calleOrigen;
        //            Localidades localidadOrigen = LocalidadesServicio.obtener(idLocalidadOrigen);
        //            pedido.Localidades = localidadOrigen;
        //            pedido.id_localidad_origen = idLocalidadOrigen;
        //            pedido.nro_calle_destino = nroDirDestino;
        //            pedido.calle_destino = calleDestino;
        //            Localidades localidadDestino = LocalidadesServicio.obtener(idLocalidadDestino);
        //            pedido.Localidades1 = localidadDestino;
        //            pedido.id_localidad_destino = idLocalidadDestino;
        //            pedido.precio_predido = precioPedido;
        //            pedido.id_estado = EstadosPedidoServicio.obtenerIdPorDescripcion("Pendiente");
        //            db.Pedidos.Add(pedido);
        //            db.SaveChanges();
        //            return true;
        //        }
        //        catch (Exception ex)
        //        {
        //            return false;
        //        }
        //    }
        //}

        public static bool Crear(Pedido pedido)
        {
            using (TeloBuscoEntities db = new TeloBuscoEntities())
            {
                try
                {
                    Pedidos pedidoAlmacenar = new Pedidos();

                    pedidoAlmacenar.idCliente        = pedido.IdCliente;
                    pedidoAlmacenar.nro_calle_origen = pedido.NroCalleOrigen;
                    pedidoAlmacenar.calle_origen     = pedido.CalleOrigen;
                    //Localidades localidadOrigen = LocalidadesServicio.obtener(pedido.IdLocalidadOrigen);
                    Localidades localidadOrigen = db.Localidades.Where(x => x.idLocalidad == pedido.IdLocalidadOrigen).FirstOrDefault();
                    pedidoAlmacenar.Localidades         = localidadOrigen;
                    pedidoAlmacenar.id_localidad_origen = pedido.IdLocalidadOrigen;
                    pedidoAlmacenar.nro_calle_destino   = pedido.NroCalleDestino;
                    pedidoAlmacenar.calle_destino       = pedido.CalleDestino;
                    //Localidades localidadDestino = LocalidadesServicio.obtener(pedido.IdLocalidadDestino);
                    Localidades localidadDestino = db.Localidades.Where(x => x.idLocalidad == pedido.IdLocalidadDestino).FirstOrDefault();
                    pedidoAlmacenar.Localidades1         = localidadDestino;
                    pedidoAlmacenar.id_localidad_destino = pedido.IdLocalidadDestino;
                    pedidoAlmacenar.precio_predido       = pedido.PrecioPedido;
                    pedidoAlmacenar.id_estado            = EstadosServicio.obtenerIdEstadoPedidoPorDescripcion("Pendiente");
                    pedidoAlmacenar.descripcion_pedido   = pedido.Descripcion;
                    pedidoAlmacenar.observaciones_pedido = pedido.Observaciones;
                    pedidoAlmacenar.IdTipoActividad      = TiposActividadesServicio.obtenerIdPorDescripcion("Pedido");

                    /*ALMACENAR COORDENADAS*/
                    string Provincia = "Santa Fe";
                    string Pais      = "Argentina";

                    /*ORIGEN*/
                    string DireccionOrigen   = pedido.CalleOrigen + " " + pedido.NroCalleOrigen + ", " + localidadOrigen.Nombre + ", " + Provincia + ", " + Pais;
                    var    coordenadasOrigen = Utilidades.Comunes.ObtenerCoordenada(DireccionOrigen);
                    if (coordenadasOrigen != null)
                    {
                        pedidoAlmacenar.lat_origen = coordenadasOrigen.lat;
                        pedidoAlmacenar.lng_origen = coordenadasOrigen.lng;
                    }

                    /*DESTINO*/
                    string DireccionDestino   = pedido.CalleDestino + " " + pedido.NroCalleDestino + ", " + localidadDestino.Nombre + ", " + Provincia + ", " + Pais;
                    var    coordenadasDestino = Utilidades.Comunes.ObtenerCoordenada(DireccionDestino);
                    if (coordenadasDestino != null)
                    {
                        pedidoAlmacenar.lat_destino = coordenadasDestino.lat;
                        pedidoAlmacenar.lng_destino = coordenadasDestino.lng;
                    }

                    db.Pedidos.Add(pedidoAlmacenar);
                    db.SaveChanges();
                    return(true);
                }
                catch (Exception ex)
                {
                    return(false);
                }
            }
        }
Example #3
0
 public static void FinalizarPedido(int idPedido)
 {
     using (TeloBuscoEntities db = new TeloBuscoEntities())
     {
         var pedido = db.Pedidos.Where(x => x.IdPedido == idPedido).FirstOrDefault();
         if (pedido.finalizado_cliente && pedido.finalizado_delivery)
         {
             int idEntregado = EstadosServicio.obtenerIdEstadoPedidoPorDescripcion("Entregado");
             pedido.id_estado = idEntregado;
             db.SaveChanges();
         }
     }
 }
Example #4
0
 public static List <PedidoMapa> ObtenerPedidosCercanos(Coordenada posicionUsuario, int distancia)
 {
     using (TeloBuscoEntities db = new TeloBuscoEntities())
     {
         try
         {
             db.Configuration.LazyLoadingEnabled   = false;
             db.Configuration.ProxyCreationEnabled = false;
             int codigoEstadoPendiente = EstadosServicio.obtenerIdEstadoPedidoPorDescripcion("Pendiente");
             var pedidos = db.Pedidos.Include("AspNetUsers")
                           .Include("Localidades")
                           .Include("Localidades1")
                           .Include("Postulaciones")
                           .Where(x => x.id_estado == codigoEstadoPendiente)
                           .ToList();
             List <PedidoMapa> pedidosCercanos = new List <PedidoMapa>();
             foreach (var pedido in pedidos)
             {
                 if (pedido.lat_origen != null && pedido.lng_origen != null)
                 {
                     Coordenada posicionPedido = new Coordenada();
                     posicionPedido.lat = Convert.ToDouble(pedido.lat_origen);
                     posicionPedido.lng = Convert.ToDouble(pedido.lng_origen);
                     double distanciaPedido = Utilidades.Comunes.DistanciaEntreDosPuntosEnKM(posicionUsuario, posicionPedido);
                     if (distanciaPedido <= distancia)
                     {
                         PedidoMapa pedidoMapa = ConvertirPedidoAPedidoMapa(pedido);
                         pedidosCercanos.Add(pedidoMapa);
                     }
                 }
             }
             return(pedidosCercanos);
         }
         catch (Exception)
         {
             return(null);
         }
     }
 }
Example #5
0
        public static List <Pedidos> ObtenerPedidosAsignados(string idDelivery)
        {
            using (TeloBuscoEntities db = new TeloBuscoEntities())
            {
                try
                {
                    int idEstadoAsignado = EstadosServicio.obtenerIdEstadoPedidoPorDescripcion("Asignado");
                    var listPedidos      = db.Pedidos.Include("Estados")
                                           .Include("Localidades")
                                           .Include("Localidades1")
                                           .Include("AspNetUsers")
                                           .Include("Postulaciones")
                                           .Where(x => x.id_estado == idEstadoAsignado &&
                                                  x.idDelivery == idDelivery)
                                           .ToList();

                    return(listPedidos);
                }
                catch (Exception ex)
                {
                    return(null);
                }
            }
        }
        public static bool Aceptar(int idPostulacion)
        {
            using (TeloBuscoEntities db = new TeloBuscoEntities())
            {
                try
                {
                    /*Cambiar el estado de la postulación a: Aceptado*/
                    int idEstadoAceptado      = EstadosServicio.obtenerIdEstadoPostulacionPorDescripcion("Aceptado");
                    var postulacionAlmacenada = db.Postulaciones.Include("AspNetUsers")
                                                .Include("Estados")
                                                .Where(x => x.IdPostulacion == idPostulacion)
                                                .FirstOrDefault();
                    postulacionAlmacenada.IdEstadoPostulacion = idEstadoAceptado;
                    db.SaveChanges();

                    /*Agregar notificacion de aceptado*/
                    int            idTipoActividad = TiposActividadesServicio.obtenerIdPorDescripcion("Postulación Aceptada");
                    int            idEstadoPostulacionNotificacion = EstadosServicio.obtenerIdEstadoPostulacionPorDescripcion("No vista");
                    string         idUsuarioReceptor = postulacionAlmacenada.IdUsuarioPostulado;
                    int            idActividad       = postulacionAlmacenada.IdPostulacion;
                    Notificaciones notificacion      = new Notificaciones()
                    {
                        IdTipoActividad      = idTipoActividad,
                        IdEstadoNotificacion = idEstadoPostulacionNotificacion,
                        Descripcion          = "¡Postulación aceptada!",
                        IdUsuarioReceptor    = idUsuarioReceptor,
                        IdActividad          = idActividad
                    };
                    db.Notificaciones.Add(notificacion);
                    db.SaveChanges();

                    /*Agregar Delivery y precio al pedido*/
                    int idPedido         = postulacionAlmacenada.IdPedido;
                    int idEstadoAsignado = EstadosServicio.obtenerIdEstadoPedidoPorDescripcion("Asignado");
                    var pedido           = db.Pedidos.Where(x => x.IdPedido == idPedido).FirstOrDefault();
                    pedido.idDelivery        = postulacionAlmacenada.IdUsuarioPostulado;
                    pedido.precio_transporte = postulacionAlmacenada.Precio;
                    pedido.id_estado         = idEstadoAsignado; /*Colocar el pedido en estado asignado*/
                    db.SaveChanges();

                    /*Cambiar el estado del resto de postulaciones a ese pedudo a: Rechazado*/
                    int idEstadoRechazado  = EstadosServicio.obtenerIdEstadoPostulacionPorDescripcion("Rechazado");
                    var listaPostulaciones = db.Postulaciones.Include("AspNetUsers")
                                             .Include("Estados")
                                             .Where(x => x.IdPedido == idPedido && x.IdPostulacion != idPostulacion)
                                             .ToList();
                    foreach (var postulacion in listaPostulaciones)
                    {
                        postulacion.IdEstadoPostulacion = idEstadoRechazado;
                        db.SaveChanges();

                        /*Agregar notificación de rechazado por cada pedido*/
                        int            idTipoActividadR = TiposActividadesServicio.obtenerIdPorDescripcion("Postulación Rechazada");
                        int            idEstadoPostulacionNotificacionR = EstadosServicio.obtenerIdEstadoPostulacionPorDescripcion("No vista");
                        string         idUsuarioReceptorR = postulacion.IdUsuarioPostulado;
                        int            idActividadR       = postulacion.IdPostulacion;
                        Notificaciones notificacionR      = new Notificaciones()
                        {
                            IdTipoActividad      = idTipoActividadR,
                            IdEstadoNotificacion = idEstadoPostulacionNotificacionR,
                            Descripcion          = "Lo sentimos, su postulación ha sido rechazada.",
                            IdUsuarioReceptor    = idUsuarioReceptorR,
                            IdActividad          = idActividadR
                        };
                        db.Notificaciones.Add(notificacionR);
                        db.SaveChanges();
                    }

                    return(true);
                }
                catch (Exception ex)
                {
                    return(false);
                }
            }
        }