public async Task <IActionResult> Purchase()
        {
            User user = await _context.Users.Include(u => u.Orders)
                        .Include(up => up.UserProducts)
                        .ThenInclude(p => p.Product)
                        .FirstAsync(u => u.Email.Equals(User.FindFirstValue(ClaimTypes.Email)));

            if (user.UserProducts.Count() != 0)
            {
                var data     = _context.Products.Include(b => b.Brand).Include(p => p.UserProducts).ThenInclude(u => u.User);
                var products = from p in data
                               where p.UserProducts.Any(up => up.UserId == user.UserId)
                               select p;

                Order newOrder = new Order()
                {
                    UserId        = user.UserId,
                    User          = user,
                    OrderDate     = DateTime.Now,
                    OrderProducts = new List <OrderProduct>()
                };

                var addedOrder = _context.Add(newOrder).Entity;
                await _context.SaveChangesAsync();

                foreach (var item in products)
                {
                    addedOrder.OrderProducts.Add(new OrderProduct()
                    {
                        OrderId   = addedOrder.OrderId,
                        Order     = addedOrder,
                        ProductId = item.ProductId,
                        Product   = item
                    });
                }

                _context.Update(addedOrder);
                await _context.SaveChangesAsync();

                if (user.Orders == null)
                {
                    user.Orders = new List <Order>();
                }

                user.Orders.Add(addedOrder);
                user.UserProducts.Clear();

                _context.Update(user);
                await _context.SaveChangesAsync();
            }

            return(RedirectToAction("GetMyOrders", "Orders"));
        }
        public async Task <IActionResult> Create([Bind("BrandId,BrandName")] Brand brand)
        {
            if (ModelState.IsValid)
            {
                _context.Add(brand);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(brand));
        }
Beispiel #3
0
        public async Task <IActionResult> Create([Bind("BranchId,BranchName,Address,Latitude,Longitude")] Branch branch)
        {
            if (ModelState.IsValid)
            {
                _context.Add(branch);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(branch));
        }
        public async Task <IActionResult> Create([Bind("OrderId,OrderDate,UserId")] Order order)
        {
            order.User = _context.Users.SingleOrDefault(u => u.UserId == order.UserId);

            if (ModelState.IsValid)
            {
                _context.Add(order);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(order));
        }
        public async Task <IActionResult> Create([Bind("ProductId,ProductName,ProductPrice,ProductType,BrandId,ImageFile")] Product product)
        {
            product.Brand = _context.Brand.SingleOrDefault(b => b.BrandId == product.BrandId);
            if (ModelState.IsValid)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    product.ImageFile.CopyTo(ms);
                    product.Image = ms.ToArray();
                }

                _context.Add(product);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["BrandId"] = new SelectList(_context.Brand, "BrandId", "BrandName", product.BrandId);
            return(View(product));
        }