Ejemplo n.º 1
0
        public async Task <RedirectToActionResult> SendOrder()
        {
            var discounts = await this.discountService.GetDiscountsAsync(cart);

            var discountsTotalValue = discounts?.Sum(d => d.Value) ?? 0;

            Bestallning order = new Bestallning
            {
                BestallningDatum = DateTime.Now,
                Totalbelopp      = (int)((cart.ComputeTotalValue() - discountsTotalValue) + 0.5M),
                Levererad        = false,
                UserId           = this.User.FindFirstValue(ClaimTypes.NameIdentifier)
            };

            order.BestallningMatratt = new List <BestallningMatratt>();

            foreach (CartLine line in cart.Lines)
            {
                order.BestallningMatratt.Add(
                    new BestallningMatratt
                {
                    Matratt = line.Dish,
                    Antal   = line.Quantity
                }
                    );
            }

            repository.SaveOrder(order);

            await discountService.SaveBonus(discounts, cart);

            return(RedirectToAction(nameof(Completed)));
        }
        public void SaveOrder(List <Matratt> matratter, int userid, System.Security.Claims.ClaimsPrincipal user)
        {
            var count = matratter.Count;

            if (user.IsInRole("PremiumUser"))
            {
                SaveOrderPremiumUser(matratter, userid);
            }
            else
            {
                var customer    = GetById(userid);
                var totalmoney  = GetTotalPayment(matratter);
                var bestallning = new Bestallning()
                {
                    BestallningDatum = DateTime.Now,
                    KundId           = customer.KundId,
                    Totalbelopp      = totalmoney,
                    Levererad        = false
                };


                using (TomasosContext db = new TomasosContext())
                {
                    db.Add(bestallning);
                    db.SaveChanges();
                }
                SaveBestallningMatratter(matratter);
            }
        }
Ejemplo n.º 3
0
        public IActionResult Checkout()
        {
            var temp     = Request.Cookies["Cart"];
            var temp2    = Request.Cookies["LoggedIn"];
            var foodList = JsonConvert.DeserializeObject <List <Matratt> >(temp);
            var customer = JsonConvert.DeserializeObject <Kund>(temp2);

            var order = new Bestallning()
            {
                BestallningDatum = DateTime.Now,
                KundId           = customer.KundId,
                Levererad        = true,
                Totalbelopp      = foodList.Sum(x => x.Pris)
            };
            var dataAccess = new DataAccess();

            dataAccess.CreateOrder(_context, order);


            while (foodList.Count > 0)
            {
                var connection = new BestallningMatratt()
                {
                    Antal       = foodList.Count(x => x.MatrattId == foodList[0].MatrattId),
                    MatrattId   = foodList[0].MatrattId,
                    Bestallning = order
                };
                dataAccess.CreateOrderConnection(_context, connection);
                foodList = foodList.Where(x => x.MatrattId != foodList[0].MatrattId).ToList();
            }


            return(View());
        }
Ejemplo n.º 4
0
        public async Task <bool> AddNewOrderAsync(Bestallning order)
        {
            _context.Bestallning.Add(order);
            var result = await _context.SaveChangesAsync();

            return(await Task.FromResult(result > 0));
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> OrderCart()
        {
            if (cartManager.SavedCart.TotalCount == 0)
            {
                return(RedirectToAction("ViewCart"));
            }

            ApplicationUser user = await userManager.GetUserAsync(User);

            Bestallning cart = await cartManager.GetBestallningAsync(
                kundPremium : UserIsPremium,
                kundPoints : user.Points);

            cart.Kund    = user;
            user.Points += cart.TotalCount * Bestallning.POINTS_PER_MATRATT;
            dbContext.Bestallning.Add(cart);
            if (cart.GratisPizzaPris > 0)
            {
                user.Points -= Bestallning.POINTS_FOR_FREE_FOOD;
            }

            await dbContext.SaveChangesAsync();

            // Reset cart
            cartManager.ClearCart();

            return(RedirectToAction("ViewOrder", new
            {
                id = cart.BestallningId,
            }));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> DeleteUser(string username)
        {
            if (username != "*****@*****.**")
            {
                var user = await _userManager.FindByNameAsync(username);

                Bestallning order = _repository.GetUserOrder(user.Id);

                if (order != null)
                {
                    List <BestallningMatratt> orderDishes = _repository.GetUserOrderList(order.BestallningId).ToList();

                    foreach (var od in orderDishes)
                    {
                        await _repository.DeleteAsync <BestallningMatratt>(od);
                    }

                    await _repository.DeleteAsync <Bestallning>(order);
                }

                await _userManager.DeleteAsync(user);
            }

            return(RedirectToAction("UserManager"));
        }
Ejemplo n.º 7
0
        public void SaveOrder(Bestallning order, List <BestallningMatratt> orderList)
        {
            order.BestallningMatratt = null;

            if (order.BestallningId == 0)
            {
                // Add new product
                _context.Bestallning.Add(order);
            }
            else
            {
                // Edit existing product
                var p = Orders.FirstOrDefault(x => x.BestallningId == order.BestallningId);

                if (p != null)
                {
                    _context.Entry(p).CurrentValues.SetValues(order);
                }
            }

            _context.SaveChanges();

            foreach (var c in orderList)
            {
                _context.BestallningMatratt.Add(new BestallningMatratt()
                {
                    Antal         = c.Antal,
                    BestallningId = order.BestallningId,
                    MatrattId     = c.MatrattId
                });
            }

            _context.SaveChanges();
        }
        public void Update(Bestallning order)
        {
            var currentOrder = _context.Bestallning.FirstOrDefault(o => o.BestallningId == order.BestallningId);

            _context.Entry(currentOrder).CurrentValues.SetValues(order);
            _context.SaveChanges();
        }
Ejemplo n.º 9
0
        public void AddBestallning(Bestallning B)
        {
            B.Kund = null;
            var BMList = new List <BestallningMatratt>();

            foreach (var BM in B.BestallningMatratt)
            {
                BMList.Add(BM);
            }
            B.BestallningMatratt = null;
            _Repository.Bestallning.Add(B);
            _Repository.SaveChanges();

            var senast   = _Repository.Bestallning.ToList();
            var senastID = senast.OrderByDescending(x => x.BestallningDatum).First().BestallningId;

            foreach (var BM in BMList)
            {
                var BestallMat = new BestallningMatratt();
                BestallMat.Antal         = BM.Antal;
                BestallMat.MatrattId     = BM.MatrattId;
                BestallMat.BestallningId = senastID;
                _Repository.BestallningMatratt.Add(BestallMat);
            }

            _Repository.SaveChanges();
        }
Ejemplo n.º 10
0
        public Bestallning CreateBestallning()
        {
            Bestallning B        = new Bestallning();
            int         TotalSum = 0;

            foreach (var V in _Session.GetCart())
            {
                var BM = new BestallningMatratt();

                if (B.BestallningMatratt.Where(x => x.MatrattId == V.MatrattId).FirstOrDefault() != null)
                {
                    B.BestallningMatratt.Where(x => x.MatrattId == V.MatrattId).FirstOrDefault().Antal++;
                }
                else
                {
                    BM.Bestallning = B;
                    BM.Matratt     = V;
                    BM.MatrattId   = V.MatrattId;
                    BM.Antal       = 1;
                    B.BestallningMatratt.Add(BM);
                }

                TotalSum += V.Pris;
            }

            var kund = _Session.GetSessionKund();

            B.KundId           = kund.KundId;
            B.Kund             = kund;
            B.BestallningDatum = DateTime.Now;
            B.Levererad        = false;
            B.Totalbelopp      = TotalSum;

            return(B);
        }
Ejemplo n.º 11
0
        public async Task <Bestallning> GetBestallningAsync(bool kundPremium, int kundPoints)
        {
            if (cart.orders == null)
            {
                return(new Bestallning());
            }

            var matratts = dbContext.Matratt
                           .Include(m => m.MatrattTypNavigation)
                           .Include(m => m.MatrattProdukt).ThenInclude(p => p.Produkt);

            var bestallning = new Bestallning
            {
                BestallningMatratt =
                    await(from mat in matratts
                          join order in cart.orders on mat.MatrattId equals order.foodId
                          select new BestallningMatratt
                {
                    Matratt   = mat,
                    MatrattId = mat.MatrattId,
                    Antal     = order.count
                }).ToListAsync(),

                Levererad        = false,
                BestallningDatum = DateTime.Now,
            };

            bestallning.CalculateTotalPrice(
                kundPremium: kundPremium,
                kundPoints: kundPoints);

            return(bestallning);
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> BuyConfirmed()
        {
            ApplicationUser user = await _usermanager.GetUserAsync(User);

            var cartItems  = GetCartItems();
            int totalPrice = cartItems.Sum(x => x.Pris);


            if (User.IsInRole("PremiumUser") && cartItems.Count >= 3)
            {
                totalPrice = Convert.ToInt32(totalPrice * 0.8);

                user.Points += (cartItems.Count * 10);

                if (user.Points >= 100)
                {
                    totalPrice  = totalPrice - cartItems.OrderBy(m => m.Pris).First().Pris;
                    user.Points = 0;
                }

                await _usermanager.UpdateAsync(user);
            }


            var order = new Bestallning()
            {
                Id = user.Id,
                BestallningDatum = DateTime.Now,
                Levererad        = false,
                Totalbelopp      = totalPrice
            };

            _context.Bestallnings.Add(order);
            _context.SaveChanges();

            var sortedList = cartItems.GroupBy(m => m.MatrattId).Select(m => m.First()).ToList();

            foreach (var item in sortedList)
            {
                var ratt = new BestallningMatratt()
                {
                    MatrattId     = item.MatrattId,
                    BestallningId = order.BestallningId,
                    Antal         = cartItems.Where(m => m.MatrattId == item.MatrattId).ToList().Count
                };

                _context.BestallningMatratts.Add(ratt);
                _context.SaveChanges();
            }



            _context.SaveChanges();

            HttpContext.Session.SetString("cart", "");

            return(View());
        }
        public async Task <ActionResult> Sent(Kund kund)
        {
            if (HttpContext.Session.GetString("KundId") != null)
            {
                var kundId = HttpContext.Session.GetString("KundId");

                var convert = Convert.ToInt32(kundId);

                var value = (HttpContext.Session.GetString("Varukorg"));
                FoodList = JsonConvert.DeserializeObject <List <Matratt> >(value);

                var date = DateTime.Now;

                var order = new Bestallning
                {
                    BestallningDatum = date,
                    Totalbelopp      = FoodList.Sum(x => x.Pris),
                    Levererad        = false,
                    KundId           = Convert.ToInt32(convert)
                };
                _context.Bestallning.Add(order);

                var listSum = FoodList;

                var tempList = FoodList.OrderBy(x => x.MatrattId);

                foreach (var sum in tempList.Select(x => x.MatrattId).Distinct())
                {
                    var doneOrder = new BestallningMatratt
                    {
                        BestallningId = order.BestallningId,
                        Antal         = listSum.Where(x => x.MatrattId == sum).Count(),
                        MatrattId     = sum
                    };

                    _context.BestallningMatratt.Add(doneOrder);
                }

                await _context.SaveChangesAsync();

                var dish     = _context.Bestallning.Where(x => x.BestallningId == order.BestallningId).ToList();
                var customer = _context.Kund.Where(x => x.KundId == convert).ToList();

                var display = new MenuModel
                {
                    Orders       = dish,
                    CustomerList = customer,
                    Dishes       = FoodList,
                };

                return(View(display)); // await tomasosContext.ToListAsync()
            }

            else
            {
                return(RedirectToAction("Login", "Kunds"));
            }
        }
        public async Task <IActionResult> ConfirmOrder(int total)
        {
            var cartList    = JsonConvert.DeserializeObject <List <Matratt> >(HttpContext.Session.GetString("cart"));
            var currentUser = await _userManager.FindByNameAsync(User.Identity.Name);

            var currentKund = _tomasos.Kund.SingleOrDefault(k => k.IdentityId == currentUser.Id);

            if (currentKund.BonusPoang == null)
            {
                currentKund.BonusPoang = 0;
            }

            if (currentKund.BonusPoang > 99 && User.IsInRole("Premium"))
            {
                total = total - cartList.OrderBy(m => m.Pris).First().Pris;

                currentKund.BonusPoang -= 100;
            }

            var order = new Bestallning()
            {
                BestallningDatum = DateTime.Now,
                Levererad        = false,
                Totalbelopp      = total,
                KundId           = currentKund.KundId
            };

            _tomasos.Bestallning.Add(order);

            var distinctlist = cartList.GroupBy(m => m.MatrattId).Select(m => m.First()).ToList();



            foreach (var item in distinctlist)
            {
                _tomasos.BestallningMatratt.Add(
                    new BestallningMatratt()
                {
                    MatrattId     = item.MatrattId,
                    BestallningId = order.BestallningId,
                    Antal         = cartList.Where(m => m.MatrattId == item.MatrattId).ToList().Count
                });
            }

            if (User.IsInRole("Premium"))
            {
                int poang = cartList.Count * 10;
                currentKund.BonusPoang = currentKund.BonusPoang + poang;
            }

            _tomasos.SaveChanges();

            HttpContext.Session.SetString("cart", "");
            HttpContext.Session.SetString("cartCount", "");

            return(View());
        }
Ejemplo n.º 15
0
        public async Task <IActionResult> DeleteOrder(int orderId)
        {
            _repository.DeleteBestallningMatratt(orderId);
            Bestallning order = await _repository.SelectById <Bestallning>(orderId);

            await _repository.DeleteAsync <Bestallning>(order);

            return(RedirectToAction("Overview"));
        }
Ejemplo n.º 16
0
        public async Task <IActionResult> Deliver(int orderId)
        {
            Bestallning order = await _repository.SelectById <Bestallning>(orderId);

            order.Levererad = true;
            await _repository.UpdateAsync <Bestallning>(order);

            return(RedirectToAction("Overview"));
        }
Ejemplo n.º 17
0
 public CheckOutViewModel()
 {
     Order          = new Bestallning();
     Dishes         = new List <Matratt>();
     TotalPrice     = 0;
     QuantityBouns  = false;
     PointBouns     = false;
     LowestCostDish = new Matratt();
     User           = new AspNetUser();
 }
        public void SaveOrderPremiumUser(List <Matratt> matratter, int userid)
        {
            var customer   = GetById(userid);
            var totalsum   = 0m;
            var topay      = 0;
            var bonuscount = 0;
            var bonus      = 0;

            matratter.OrderBy(r => r.Pris);
            using (TomasosContext db = new TomasosContext())
            {
                var kund = db.Kund.FirstOrDefault(r => r.KundId == customer.KundId);
                if (Convert.ToInt32(kund.BonusPoints) >= 100)
                {
                    matratter[0].Pris = 0;
                    bonus             = Convert.ToInt32(kund.BonusPoints);
                    kund.BonusPoints  = (bonus - 100).ToString();
                }

                if (matratter.Count > 2)
                {
                    bonuscount       = matratter.Count;
                    bonuscount      *= 10;
                    bonus            = Convert.ToInt32(kund.BonusPoints);
                    kund.BonusPoints = (bonus + bonuscount).ToString();
                    totalsum         = GetTotalPayment(matratter);
                    topay            = Convert.ToInt32(totalsum * 0.80m);
                }
                else
                {
                    bonuscount       = matratter.Count;
                    bonuscount      *= 10;
                    bonus            = Convert.ToInt32(kund.BonusPoints);
                    kund.BonusPoints = (bonus + bonuscount).ToString();
                    topay            = GetTotalPayment(matratter);
                }
                db.Kund.Update(kund);
                db.SaveChanges();
            }
            var bestallning = new Bestallning()
            {
                BestallningDatum = DateTime.Now,
                KundId           = customer.KundId,
                Totalbelopp      = topay,
                Levererad        = false
            };


            using (TomasosContext db = new TomasosContext())
            {
                db.Add(bestallning);
                db.SaveChanges();
            }
            SaveBestallningMatratter(matratter);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Adds the order to the database. PremiumUser will get the calculated price based on the discount and bonus points.
        /// </summary>
        public async Task <Bestallning> AddOrderAsync(string userId, ShoppingCart cart, UserRole role)
        {
            var kund = await _context.Kund.FirstOrDefaultAsync(u => u.UserId == userId);

            if (kund == null)
            {
                return(null);
            }

            if (role == UserRole.PremiumUser)
            {
                // instantiates the int if it's null, meaning this user hasn't had any points before.
                // Add the points to the Kund, 10 points per item in the cart.
                if (kund.Bonuspoäng == null)
                {
                    kund.Bonuspoäng = 0;
                }
                if (kund.Bonuspoäng >= 100)
                {
                    kund.Bonuspoäng -= 100;
                }
                kund.Bonuspoäng += (cart.Products.Count * 10);
            }

            // Group the products by ID and counting them into new BestallningMatratt objects
            var orders = cart.Products
                         .GroupBy(p => p.MatrattId)
                         .Select(g => new BestallningMatratt
            {
                MatrattId = g.First().MatrattId,
                Antal     = g.Count()
            }).ToList();

            // Puts the order together
            var order = new Bestallning
            {
                BestallningDatum   = DateTime.Now,
                KundId             = kund.KundId,
                Levererad          = false,
                Totalbelopp        = role == UserRole.PremiumUser ? cart.TotalSum(UserRole.PremiumUser) : cart.TotalSum(),
                BestallningMatratt = orders
            };

            // Calculates the points and saves to database
            _context.Add(order);
            _context.Entry(kund).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(await _context.Bestallning
                   .Include(b => b.BestallningMatratt)
                   .Include(b => b.Kund)
                   .FirstOrDefaultAsync(x => x.KundId == kund.KundId));
        }
Ejemplo n.º 20
0
        public Bestallning MapOrderToBestallningEntity(List <Matratt> dishesToOrderDb, int userId)
        {
            var order = new Bestallning
            {
                BestallningDatum = DateTime.Now,
                Totalbelopp      = dishesToOrderDb.Sum(o => o.Pris),
                Levererad        = false,
                KundId           = userId
            };

            return(order);
        }
Ejemplo n.º 21
0
        public async Task <bool> OrderAsync(CartViewModel model, ApplicationUser user)
        {
            var order    = new Bestallning();
            var customer = await _dbService.GetCustomerAsync(user.Id);

            order.Kund             = customer;
            order.BestallningDatum = DateTime.Now;
            order.KundId           = customer.KundId;
            order.Levererad        = false;

            if (model.BonusPoints >= 100)
            {
                if (model.Dishes.Any(e => e.DishId == 1104))
                {
                    model.Dishes.Find(e => e.DishId == 1104).Quantity++;
                }
                else
                {
                    var dish = await GetDishAsync(1104);

                    dish.Quantity++;
                    model.Dishes.Add(dish);
                }

                model.BonusPoints -= 100;
            }

            foreach (var dish in model.Dishes)
            {
                var matratt = await _dbService.GetMatrattAsync(dish.DishId);

                var orderDetail = new BestallningMatratt()
                {
                    Antal       = dish.Quantity,
                    Bestallning = order,
                    Matratt     = matratt,
                    MatrattId   = matratt.MatrattId
                };

                order.BestallningMatratt.Add(orderDetail);
            }

            order.Totalbelopp = user.IsPremium ? model.PremiumPrice : model.TotalPrice;

            var result = await _dbService.AddNewOrderAsync(order);

            if (result)
            {
                user.BonusPoints = model.BonusPoints;
            }
            return(await Task.FromResult <bool>(true));
        }
Ejemplo n.º 22
0
        public async Task AddToCart(int dishId)
        {
            Matratt dish = await _repository.SelectById <Matratt>(dishId);

            Bestallning currentOrder = _repository.GetUserOrder(this.User.FindFirstValue(ClaimTypes.NameIdentifier));

            if (currentOrder == null)
            {
                Bestallning order = new Bestallning();

                order.BestallningDatum = DateTime.Now;
                order.Totalbelopp      = dish.Pris;
                order.Levererad        = false;
                order.KundId           = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
                await _repository.CreateAsync <Bestallning>(order);

                Bestallning orderId = _repository.GetUserOrder(this.User.FindFirstValue(ClaimTypes.NameIdentifier));

                BestallningMatratt orderDish = new BestallningMatratt();
                orderDish.MatrattId     = dish.MatrattId;
                orderDish.BestallningId = orderId.BestallningId;

                await _repository.CreateAsync <BestallningMatratt>(orderDish);
            }
            else
            {
                BestallningMatratt duplicateCheck = _repository.CheckForDishDuplicate(currentOrder.BestallningId, dish.MatrattId);

                if (duplicateCheck == null)
                {
                    BestallningMatratt orderDish = new BestallningMatratt();
                    orderDish.MatrattId     = dish.MatrattId;
                    orderDish.BestallningId = currentOrder.BestallningId;
                    await _repository.CreateAsync <BestallningMatratt>(orderDish);
                }
                else
                {
                    BestallningMatratt addTotalForDish = duplicateCheck;

                    int currentTotal = addTotalForDish.Antal;
                    currentTotal         += 1;
                    addTotalForDish.Antal = currentTotal;

                    await _repository.UpdateAsync <BestallningMatratt>(addTotalForDish);
                }

                int totalPrice = currentOrder.Totalbelopp;
                totalPrice += dish.Pris;
                currentOrder.Totalbelopp = totalPrice;
                await _repository.UpdateAsync <Bestallning>(currentOrder);
            }
        }
Ejemplo n.º 23
0
        public async Task <IActionResult> CheckoutConfirm()
        {
            string cartJSON = HttpContext.Session.GetString("ProductCart");

            List <Matratt> Matratter = JsonConvert.DeserializeObject <List <Matratt> >(cartJSON);

            ApplicationUser user = await _usermanager.FindByNameAsync(User.Identity.Name);

            Kund currentKund = _context.Kunds.SingleOrDefault(x => x.Id == user.Id);

            Bestallning bestallning = new Bestallning();

            bestallning.BestallningDatum = DateTime.Now;
            bestallning.Totalbelopp      = Matratter.Sum(p => p.Pris);
            bestallning.Levererad        = false;
            bestallning.KundId           = currentKund.KundId;

            _context.Bestallnings.Add(bestallning);
            _context.SaveChanges();

            Bestallning currentBestallning = _context.Bestallnings.SingleOrDefault(x => x.BestallningDatum == bestallning.BestallningDatum);
            List <int>  existingMatrattId  = new List <int>();

            foreach (var matratt in Matratter)
            {
                //check for duplicates, either update amount or create new
                if (existingMatrattId.Contains(matratt.MatrattId))
                {
                    BestallningMatratt existingBestallningmatratt = _context.BestallningMatratts.SingleOrDefault(x => x.BestallningId == currentBestallning.BestallningId && x.MatrattId == matratt.MatrattId);
                    existingBestallningmatratt.Antal++;
                    _context.BestallningMatratts.Update(existingBestallningmatratt);
                }
                else
                {
                    existingMatrattId.Add(matratt.MatrattId);
                    BestallningMatratt bestallningmatratt = new BestallningMatratt();
                    bestallningmatratt.BestallningId = currentBestallning.BestallningId;
                    bestallningmatratt.MatrattId     = matratt.MatrattId;
                    bestallningmatratt.Antal         = 1;

                    _context.BestallningMatratts.Add(bestallningmatratt);
                }

                _context.SaveChanges();
            }

            //empty cart
            HttpContext.Session.Remove("ProductCart");

            return(View("Accepted"));
        }
Ejemplo n.º 24
0
        public IViewComponentResult Invoke(string userId)
        {
            CartViewModel model = new CartViewModel();

            Bestallning order = _repository.GetUserOrder(userId);

            if (order != null)
            {
                model.Dishes = _repository.GetDishes(order.BestallningId);
                model.Order  = order;
            }

            return(View("Cart", model));
        }
Ejemplo n.º 25
0
        public void AddBestallningMatrattRelationToDb(Bestallning currentOrder, List <Matratt> dishesToOrderDb, IEnumerable <int> dishesIdnWithoutDuplicates)
        {
            foreach (var dishId in dishesIdnWithoutDuplicates)
            {
                var bestallningMatrattRelation = new BestallningMatratt
                {
                    BestallningId = currentOrder.BestallningId,
                    MatrattId     = dishId,
                    Antal         = dishesToOrderDb.Count(dish => dish.MatrattId == dishId)
                };

                _context.BestallningMatratt.Add(bestallningMatrattRelation);
            }
        }
Ejemplo n.º 26
0
        private Bestallning GetCart()
        {
            Bestallning order;

            if (HttpContext.Session.GetString("Varukorg") == null)
            {
                order = new Bestallning();
            }
            else
            {
                var serializedValue = HttpContext.Session.GetString("Varukorg");
                order = JsonConvert.DeserializeObject <Bestallning>(serializedValue);
            }

            return(order);
        }
Ejemplo n.º 27
0
        public IActionResult Overview()
        {
            CheckOutViewModel model = new CheckOutViewModel();

            AspNetUser user = _repository.GetUser(this.User.FindFirstValue(ClaimTypes.NameIdentifier));

            Bestallning order = _repository.GetUserOrder(this.User.FindFirstValue(ClaimTypes.NameIdentifier));

            if (order != null)
            {
                model.Order      = order;
                model.TotalPrice = model.Order.Totalbelopp;
                model.Dishes     = _repository.GetDishes(model.Order.BestallningId);
                model.User       = user;


                // Här sker kontrollen om användaren har rätt till rabatt & bonus
                if (User.IsInRole("PremiumUser") || User.IsInRole("Admin"))
                {
                    Matratt lowestCostDish = model.Dishes.OrderBy(d => d.Pris).First();

                    int totalNumberDishes = model.Dishes.Sum(d => d.NumberOfOrders);

                    if (user.BonusPoints >= 100)
                    {
                        model.TotalPrice    -= lowestCostDish.Pris;
                        model.PointBouns     = true;
                        model.LowestCostDish = lowestCostDish;
                    }

                    if (totalNumberDishes >= 3)
                    {
                        model.TotalPrice   *= 0.8;
                        model.QuantityBouns = true;
                    }

                    model.NewBonusPoints = "Efter köpet kommer du ha " + (totalNumberDishes * 10).ToString() + " / 100 poäng. Vid 100 bjuder vi på en av rätterna";
                }
                else
                {
                    model.NewBonusPoints = "Ansök om att bli premiummedelem för att få rabatter och poäng när du handlar hos oss!";
                }
            }

            return(View(model));
        }
Ejemplo n.º 28
0
        public IActionResult UserCheckout(UserViewModel model)
        {
            Bestallning newOrder = new Bestallning();

            newOrder.Totalbelopp      = model.CurrentOrder.Totalbelopp;
            newOrder.BestallningDatum = DateTime.Now;
            newOrder.Id        = model.CurrentOrder.Id;
            newOrder.Levererad = false;

            _context.Add(newOrder);
            _context.SaveChanges();

            int orderID = _context.Bestallnings.Where(b => b.Id == newOrder.Id).OrderByDescending(b => b.BestallningDatum).First().BestallningId;

            //Hämta de som finns i varukorgen
            var jsonCart = HttpContext.Session.GetString("cart");

            //Konvertera dvs göra om till en lista med produkter. Jämför med JSON.parse men med .NET-kod istället
            var foodcart = JsonConvert.DeserializeObject <List <Matratt> >(jsonCart);

            var orderedFoodCart = from f in foodcart
                                  group f by f.MatrattId into g
                                  select new { MatrattId = g.Key, Count = g.Count() };

            foreach (var item in orderedFoodCart)
            {
                BestallningMatratt newItem = new BestallningMatratt(orderID, item.MatrattId, item.Count);
                _context.Add(newItem);
            }
            _context.SaveChanges();

            if (User.IsInRole("PremiumUser"))
            {
                AspNetUser user = _context.AspNetUsers.SingleOrDefault(u => u.Id == newOrder.Id);
                user.Points = model.CurrentUser.Points;
                _context.Update(user);
                _context.SaveChanges();
            }

            model.CurrentOrder.BestallningId = orderID;
            model.CurrentUser.Id             = newOrder.Id;

            HttpContext.Session.Clear(); //För att inte gammal beställnings-data ska ligga kvar i session om man gör en ny beställning

            return(View("UserNewOrderMessage", model));
        }
Ejemplo n.º 29
0
        public IActionResult UpdateOrderStatus(int id)
        {
            Bestallning currentOrder = _context.Bestallnings.SingleOrDefault(o => o.BestallningId == id);

            if (currentOrder.Levererad)
            {
                currentOrder.Levererad = false;
            }
            else
            {
                currentOrder.Levererad = true;
            }

            _context.Update(currentOrder); //Uppdaterar orderstatus i databas
            _context.SaveChanges();

            return(RedirectToAction("ManageOrders"));
        }
Ejemplo n.º 30
0
        public async Task <IActionResult> ViewOrder(int id)
        {
            ApplicationUser user = await userManager.GetUserAsync(User);

            Bestallning cartInQuestion = await dbContext.Bestallning
                                         .Include(b => b.Kund)
                                         .Include(b => b.BestallningMatratt).ThenInclude(bm => bm.Matratt).ThenInclude(m => m.MatrattTypNavigation)
                                         .Include(b => b.BestallningMatratt).ThenInclude(bm => bm.Matratt).ThenInclude(m => m.MatrattProdukt)
                                         .ThenInclude(mp => mp.Produkt)
                                         .SingleOrDefaultAsync(b => b != null && b.BestallningId == id && b.KundId == user.Id);

            if (cartInQuestion == null)
            {
                return(RedirectToAction("ViewCart"));
            }

            return(View("ViewCart", cartInQuestion));
        }