Example #1
0
        public void ProcessOrder(int direccion)
        {
            var persona = DbModel.Personas.FirstOrDefault(x => x.Correo == User.Identity.Name);

            // Cuando llega "Nueva" significa que se utilizó un cupón en la orden
            var orderFind = DbModel.Orders.FirstOrDefault(x => x.idPersona == persona.idPersona && x.NombreCustomer == "Nueva");

            var datosCustomer = DbModel.Direcciones.FirstOrDefault(x => x.Id == direccion);
            int idOrder       = 0;

            // Todo el siguiente bloque es usado para generar un detalle de la orden, dando a conoce productos y precios que el usaurio comprara
            using (this.DbModel = new ApplicationDbContext())
            {
                var model = new CarritoComprasViewModel
                {
                    CarritoCollection = DbModel.CarritoCompras.Where(x => x.idPersona == persona.idPersona).ToList(),
                };

                model.CantidadesProductos = new List <CarritoCompra>();
                int j = 0, i = 0;

                ////return RedirectToAction("PagoProducto", new { dire = direccion, subtotal = subtotal, total = total, cupon = cupon, ship = ship }) ;



                // Si llega diferente a null significa que se va actualizar el orden que ya existe gracias al cupon
                if (orderFind != null)
                {
                    idOrder = orderFind.IdOrder;


                    MerxProject.Models.Order.Orders order = new Models.Order.Orders()
                    {
                        IdOrder           = orderFind.IdOrder,
                        NombreCustomer    = datosCustomer.NombreCompleto,
                        NumeroCustomer    = datosCustomer.NumTelefono,
                        DireccionCustomer = datosCustomer.DirCalle + ", " + datosCustomer.CodigoPostal + ", " + datosCustomer.Estado + ", " + datosCustomer.Ciudad + ", " + datosCustomer.Asentamiento,
                        EmailCustomer     = User.Identity.Name,
                        idPersona         = persona.idPersona,
                        idDireccion       = datosCustomer.Id,
                        DiaOrden          = DateTime.Now,
                        TipoPago          = "Pago Online",
                        Estatus           = "Procesando"
                    };

                    DbModel.Orders.AddOrUpdate(order);
                    DbModel.SaveChanges();
                }
                else
                {
                    var orderUpdate = DbModel.Orders.FirstOrDefault(x => x.idPersona == persona.idPersona && x.Estatus == "Procesando");



                    if (orderUpdate != null)
                    {
                        MerxProject.Models.Order.Orders order = new Models.Order.Orders()
                        {
                            IdOrder           = orderUpdate.IdOrder,
                            NombreCustomer    = datosCustomer.NombreCompleto,
                            NumeroCustomer    = datosCustomer.NumTelefono,
                            DireccionCustomer = datosCustomer.DirCalle + ", " + datosCustomer.CodigoPostal + ", " + datosCustomer.Estado + ", " + datosCustomer.Ciudad + ", " + datosCustomer.Asentamiento,
                            EmailCustomer     = User.Identity.Name,
                            idPersona         = persona.idPersona,
                            DiaOrden          = DateTime.Now,
                            idDireccion       = datosCustomer.Id,
                            TipoPago          = "Pago Online",
                            Estatus           = "Procesando"
                        };

                        DbModel.Orders.AddOrUpdate(order);
                        DbModel.SaveChanges();
                        idOrder = orderUpdate.IdOrder;
                    }
                    else
                    {
                        MerxProject.Models.Order.Orders order = new Models.Order.Orders()
                        {
                            NombreCustomer    = datosCustomer.NombreCompleto,
                            NumeroCustomer    = datosCustomer.NumTelefono,
                            DireccionCustomer = datosCustomer.DirCalle + ", " + datosCustomer.CodigoPostal + ", " + datosCustomer.Estado + ", " + datosCustomer.Ciudad + ", " + datosCustomer.Asentamiento,
                            EmailCustomer     = User.Identity.Name,
                            idPersona         = persona.idPersona,
                            DiaOrden          = DateTime.Now,
                            idDireccion       = datosCustomer.Id,
                            TipoPago          = "Pago Online",
                            Estatus           = "Procesando"
                        };

                        DbModel.Orders.Add(order);
                        DbModel.SaveChanges();
                        idOrder = order.IdOrder;
                    }
                }


                var orderDetails = DbModel.OrdersDetails.Where(x => x.idOrder == idOrder).ToList();

                foreach (var item in orderDetails)
                {
                    DbModel.OrdersDetails.Remove(item);
                    DbModel.SaveChanges();
                }


                i = 0;
                foreach (var item in model.CarritoCollection)
                {
                    OrdersDetails ordersDetails = new OrdersDetails()
                    {
                        idOrder    = idOrder,
                        idProducto = item.idProducto,
                        idColor    = item.idColor,
                        Cantidad   = item.Cantidad,
                        Precio     = item.Precio
                    };
                    i++;

                    DbModel.OrdersDetails.Add(ordersDetails);
                    DbModel.SaveChanges();
                }
            }
        }
Example #2
0
        public async Task <ActionResult> IndexTienda(string cupon, string ship, int subtotal)
        {
            var persona       = DbModel.Personas.FirstOrDefault(x => x.Correo == User.Identity.Name);
            var ordenesCompra = DbModel.Orders.FirstOrDefault(x => x.idPersona == persona.idPersona && x.Estatus == "Procesando");

            var cupons = DbModel.Cupon.FirstOrDefault(x => x.CodigoCupon == cupon);

            if (cupons != null)
            {
                if (cupons.Utilizado)
                {
                    ViewBag.CupNotExit = 2;
                    IndexTienda(null);
                    return(View());
                }
            }
            else
            {
                ViewBag.CupNotExit = 1;
                IndexTienda(null);
                return(View());
            }


            if (cupons != null)
            {
                double descuento = (cupons.Descuento / 100.00);
                descuento *= subtotal;

                var idPersona = DbModel.Personas.FirstOrDefault(x => x.Correo == User.Identity.Name);

                using (this.DbModel = new ApplicationDbContext())
                {
                    // En caso de que haya generado uan Orden sin cupo pero luego regreso para asignarle un decuento a la compra, procedemos a editar el Orden Actual.
                    if (ordenesCompra != null)
                    {
                        cupons.IdPersona = idPersona.idPersona;
                        cupons.Utilizado = true;
                        cupons.idOrder   = ordenesCompra.IdOrder;

                        DbModel.Cupon.AddOrUpdate(cupons);
                        DbModel.SaveChanges();
                    }
                    else
                    {
                        cupons.IdPersona = idPersona.idPersona;
                        cupons.Utilizado = true;

                        MerxProject.Models.Order.Orders order = new Models.Order.Orders()
                        {
                            NombreCustomer    = "Nueva",
                            NumeroCustomer    = "",
                            DireccionCustomer = "",
                            EmailCustomer     = "",
                            idPersona         = idPersona.idPersona,
                            DiaOrden          = DateTime.Now,
                            TipoPago          = "",
                            Estatus           = ""
                        };

                        DbModel.Orders.Add(order);
                        DbModel.SaveChanges();


                        cupons.idOrder = order.IdOrder;

                        DbModel.Cupon.AddOrUpdate(cupons);
                        DbModel.SaveChanges();
                    }
                }

                ViewBag.radioBtn     = ship;
                ViewBag.subTotalDesc = subtotal - descuento;
                IndexTienda(null);
                return(View());
            }
            else
            {
                ViewBag.CupNotExit = 1;
                IndexTienda(null);
                return(View());
            }
        }