Exemplo n.º 1
0
        public ActionResult Postularse(int idPedido)
        {
            var pedido = Servicios.AccesoDatos.PedidosServicio.ObtenerPedidoPorId(idPedido);
            PostulacionesViewModel postulacion = new PostulacionesViewModel();

            postulacion.IdPedido = idPedido;
            if (pedido != null)
            {
                postulacion.pedidoDetalles = Servicios.AccesoDatos.PedidosServicio.ConvertirPedidoAPedidoMapa(pedido);
                Utilidades.ClasesAuxiliares.Coordenada coordenadaOrigen = new Utilidades.ClasesAuxiliares.Coordenada
                {
                    lat = Convert.ToDouble(pedido.lat_origen),
                    lng = Convert.ToDouble(pedido.lng_origen)
                };

                Utilidades.ClasesAuxiliares.Coordenada coordenadaDestino = new Utilidades.ClasesAuxiliares.Coordenada
                {
                    lat = Convert.ToDouble(pedido.lat_destino),
                    lng = Convert.ToDouble(pedido.lng_destino)
                };
                postulacion.pedidoDetalles.Distancia = Math.Round(Utilidades.Comunes.DistanciaEntreDosPuntosEnKM(coordenadaOrigen, coordenadaDestino), 2);

                var precio = Utilidades.Comunes.ObtenerRangoPrecios(coordenadaOrigen, coordenadaDestino);
                postulacion.precioMinimo = precio.PrecioMinimo;
                postulacion.precioMaximo = precio.PrecioMaximo;
            }

            return(View(postulacion));
        }
Exemplo n.º 2
0
        public ActionResult Postulacion(PostulacionesViewModel postulacion)
        {
            int idPostulacion = postulacion.IdPostulacion;

            if (Servicios.AccesoDatos.PostulacionesServicio.Aceptar(idPostulacion))
            {
                TempData["Message"] = "Se ha aceptado la postulación correctamente";
            }
            else
            {
                TempData["Message"] = "No se ha podido aceptar la postulación.";
            }
            return(RedirectToAction("Index", "Pedidos"));
        }
Exemplo n.º 3
0
        public ActionResult Postulacion(int idPostulacion)
        {
            Datos.Postulaciones postulacion = Servicios.AccesoDatos.PostulacionesServicio.Obtener(idPostulacion);

            /*Obtiene el pedido de la base de datos y lo transforma en un objeto de la clase necesaria (PedidoMapa)*/
            var pedidoDetalles = Servicios.AccesoDatos.PedidosServicio.ConvertirPedidoAPedidoMapa(Servicios.AccesoDatos.PedidosServicio.ObtenerPedidoPorId(postulacion.IdPedido));
            var valoracion     = Servicios.AccesoDatos.ValoracionesServicios.ObtenerPuntaje(postulacion.IdUsuarioPostulado);
            PostulacionesViewModel postulacionesViewModel = new PostulacionesViewModel()
            {
                TiempoEstimado          = postulacion.TiempoEstimado,
                Precio                  = postulacion.Precio,
                IdPedido                = postulacion.IdPedido,
                IdPostulacion           = postulacion.IdPostulacion,
                pedidoDetalles          = pedidoDetalles,
                IdPostulado             = postulacion.IdUsuarioPostulado,
                PostuladoNombreApellido = postulacion.AspNetUsers.NombreApellido,
                ValoracionDelivery      = valoracion,
                Estado                  = postulacion.Estados.Descripcion
            };

            return(View(postulacionesViewModel));
        }
Exemplo n.º 4
0
        public ActionResult Postularse(PostulacionesViewModel postulacion)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    bool precioValido = Servicios.AccesoDatos.PedidosServicio.ValidarPrecio(postulacion.precioMinimo, postulacion.Precio, postulacion.precioMaximo);
                    if (precioValido)
                    {
                        var userName           = User.Identity.Name;
                        var IdUsuarioPostulado = Servicios.AspNetUsersServicio.obtenerIdUsuarioPorUserName(userName);

                        bool?Postulado = Servicios.AccesoDatos.PostulacionesServicio.Postulado(postulacion.IdPedido, IdUsuarioPostulado);
                        if (Postulado == false)
                        {
                            var idDueñoPedido = Servicios.AccesoDatos.PedidosServicio.ObtenerPedidoPorId(postulacion.IdPedido).idCliente;
                            if (IdUsuarioPostulado != idDueñoPedido)
                            {
                                Postulacion postulacionAlmacenar = new Postulacion()
                                {
                                    IdPedido           = postulacion.IdPedido,
                                    IdUsuarioPostulado = IdUsuarioPostulado,
                                    TiempoEstimado     = postulacion.TiempoEstimado,
                                    Precio             = postulacion.Precio
                                };
                                if (Servicios.AccesoDatos.PostulacionesServicio.Crear(postulacionAlmacenar))
                                {
                                    TempData["Message"] = "La postulación fue exitosa.";
                                }
                                else
                                {
                                    TempData["Message"] = "No ha sido posible efectuar la postulación. Vuelva a intentar más tarde.";
                                }
                            }
                            else
                            {
                                TempData["Message"] = "El cliente y el delivery no pueden ser la misma persona";
                            }
                        }
                        else if (Postulado == true)
                        {
                            TempData["Message"] = "Ya se encuentra postulado. No es posible postularse más de una vez al mismo pedido.";
                        }
                        else
                        {
                            TempData["Message"] = "No ha sido posible efectuar la postulación. Vuelva a intentar más tarde.";
                        }
                        return(RedirectToAction("Pedidos")); //Redireccionar a vista de pedidos cercanos
                    }
                    else
                    {
                        ModelState.AddModelError("Precio", "El precio ingresado no se encuentra en el rango aceptado.");
                    }
                }
                var pedido = Servicios.AccesoDatos.PedidosServicio.ObtenerPedidoPorId(postulacion.IdPedido);
                if (pedido != null)
                {
                    postulacion.pedidoDetalles = Servicios.AccesoDatos.PedidosServicio.ConvertirPedidoAPedidoMapa(pedido);
                }
                return(View(postulacion));
            }
            catch
            {
                var pedido = Servicios.AccesoDatos.PedidosServicio.ObtenerPedidoPorId(postulacion.IdPedido);
                if (pedido != null)
                {
                    postulacion.pedidoDetalles = Servicios.AccesoDatos.PedidosServicio.ConvertirPedidoAPedidoMapa(pedido);
                }
                return(View(postulacion));
            }
        }