public IActionResult AddMenuitem(AddItemViewModel newitem)
        {
            if (ModelState.IsValid)
            {
                var newMatratt = new Matratt()
                {
                    MatrattNamn = newitem.MatrattNamn,
                    MatrattTyp  = newitem.MatrattTyp,
                    Pris        = newitem.Pris,
                    Beskrivning = newitem.Beskrivning
                };
                _tomasos.Add(newMatratt);
                foreach (var item in newitem.ValdaIdn)
                {
                    _tomasos.Add(
                        new MatrattProdukt()
                    {
                        MatrattId = newMatratt.MatrattId,
                        ProduktId = item
                    });
                }
                _tomasos.SaveChanges();
            }
            else
            {
                return(View());
            }


            return(RedirectToAction("StartPage", "Home"));
        }
Esempio n. 2
0
        public async Task <int> AddNewProdukt(Produkt prod)
        {
            _context.Add(prod);
            await _context.SaveChangesAsync();

            return(prod.ProduktId);
        }
Esempio n. 3
0
        public IActionResult CheckOut()
        {
            var model = new OrderCheckOut();

            model.TodoBestallning.BestallningDatum = DateTime.Now;
            var user        = HttpContext.Session.GetString("Users");
            var currentUser = JsonConvert.DeserializeObject <Kund>(user);

            model.ShoppingUser                = _context.Kund.SingleOrDefault(k => k.AnvandarNamn.Equals(currentUser.AnvandarNamn));
            model.TodoBestallning.KundId      = model.ShoppingUser.KundId;
            model.ListOfMatrattToOrder        = GetKopplingsTabell();
            model.TodoBestallning.Totalbelopp = GetSum(model);
            _context.Add(model.TodoBestallning);
            _context.SaveChanges();
            var currentOrder = _context.Bestallning.OrderByDescending(d => d.BestallningDatum)
                               .Where(k => k.KundId == model.ShoppingUser.KundId).Take(1);

            foreach (var matratt in model.ListOfMatrattToOrder)
            {
                matratt.BestallningId = model.TodoBestallning.BestallningId;
                _context.Add(matratt);
                _context.SaveChanges();
            }

            return(View(model));
        }
Esempio n. 4
0
        public async Task <bool> AddIngredientToDish(string name, int matrattId)
        {
            // Get the current dish
            var dish = await GetDishAsync(matrattId);

            // Get all ingredients in DB
            var produkter = await GetDishIngredientsAsync();

            MatrattProdukt matrattProdukt;

            // Check if the name doesn't already exists in the DB
            if (!produkter.Any(p => string.Equals(p.ProduktNamn, name, StringComparison.CurrentCultureIgnoreCase)))
            {
                // Name doesn't exist, create it and attach the id to the current dish through connection table
                var newProdukt = new Produkt {
                    ProduktNamn = name.ToFirstLetterUpper()
                };
                _context.Add(newProdukt);
                _context.SaveChanges();

                // Attach tne new produkt to MatrattProdukt.
                matrattProdukt = new MatrattProdukt
                {
                    MatrattId = matrattId,
                    ProduktId = newProdukt.ProduktId
                };
                dish.MatrattProdukt.Add(matrattProdukt);
                _context.Entry(dish).State = EntityState.Modified;
                var result = await _context.SaveChangesAsync();

                return(result == 1);
            }

            // Check if the dish doesn't have that produkt already
            if (!dish.MatrattProdukt.Any(p => string.Equals(p.Produkt.ProduktNamn, name, StringComparison.CurrentCultureIgnoreCase)))
            {
                // Take the produkt from the list of existing produkts and attach it to the dish.
                matrattProdukt = new MatrattProdukt
                {
                    MatrattId = matrattId,
                    ProduktId = produkter.First(p =>
                                                string.Equals(p.ProduktNamn, name, StringComparison.CurrentCultureIgnoreCase)).ProduktId
                };
                _context.MatrattProdukt.Add(matrattProdukt);
                _context.Entry(dish).State = EntityState.Modified;
                var result = await _context.SaveChangesAsync();

                return(result == 1);
            }
            return(false);
        }
        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);
            }
        }
Esempio n. 6
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));
        }
        public async Task <ActionResult> PlaceOrder()
        {
            string sessionString = HttpContext.Session.GetString("Order");

            if (sessionString != null)
            {
                BestallningMatratt orderDish = new BestallningMatratt();
                var dishes = JsonConvert.DeserializeObject <List <Matratt> >(sessionString);
                var order  = await NewOrderAsync(dishes);

                foreach (var dish in dishes)
                {
                    if (order.BestallningMatratt.Where(o => o.MatrattId == dish.MatrattId).Count() == 0)
                    {
                        orderDish = new BestallningMatratt {
                            MatrattId = dish.MatrattId, Antal = 1
                        };
                        order.BestallningMatratt.Add(orderDish);
                    }
                    else
                    {
                        order.BestallningMatratt.Single(o => o.MatrattId == dish.MatrattId).Antal++;
                    }
                }
                // Change to altered prices, depending on bonus points and how many dishes
                var user = await GetCurrentUserAsync();

                if (User.IsInRole("Premium"))
                {
                    if (user.Points == null)
                    {
                        user.Points = 0;
                    }
                    user.Points += 10 * dishes.Count;
                    if (user.Points >= 100)
                    {
                        order.Totalbelopp -= dishes.Max(d => d.Pris);
                        user.Points       -= 100;
                    }
                    if (dishes.Count >= 3)
                    {
                        order.Totalbelopp = (int)(order.Totalbelopp * 0.8);
                    }
                }

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

                HttpContext.Session.Remove("Order");
                return(View("ThankYou"));
            }
            else
            {
                return(RedirectToAction("Cart"));
            }
        }
        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);
        }
        // Helpers
        private void AddIngredient(int ingredientId, int dishId)
        {
            var dish = _context.MatrattProdukt.SingleOrDefault(m => m.MatrattId == dishId && m.ProduktId == ingredientId);

            if (dish == null)
            {
                _context.Add(new MatrattProdukt {
                    ProduktId = ingredientId, MatrattId = dishId
                });
                _context.SaveChanges();
            }
        }
Esempio n. 10
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));
        }
Esempio n. 11
0
        public IActionResult EditMenu(ViewModelFood edited)
        {
            var old = GetViewModel();

            old.CurrentFood = _context.Food.SingleOrDefault(f => f.FoodId == edited.CurrentFood.FoodId);
            edited.CurrentFood.Ingredients = new List <Ingredient>();

            foreach (var item in edited.AllIngredients)
            {
                if (item.Selected == true)
                {
                    if (old.CurrentFood.Ingredients.FirstOrDefault(i => i.IngredientId == item.IngredientId) == null)
                    {
                        FoodIngredient foodIng = new FoodIngredient();
                        foodIng.FoodId       = edited.CurrentFood.FoodId;
                        foodIng.IngredientId = item.IngredientId;

                        _context.Add(foodIng);
                        _context.SaveChanges();
                    }
                }
                else
                {
                    if (old.CurrentFood.Ingredients.FirstOrDefault(i => i.IngredientId == item.IngredientId) != null)
                    {
                        var foodIng = _context.FoodIngredient.FirstOrDefault(i => i.IngredientId == item.IngredientId &&
                                                                             i.FoodId == edited.CurrentFood.FoodId);

                        _context.Remove(foodIng);
                        _context.SaveChanges();
                    }
                }
            }


            _context.Entry(old.CurrentFood).CurrentValues.SetValues(edited.CurrentFood);
            _context.SaveChanges();

            return(RedirectToAction("ManageMenu"));
        }
Esempio n. 12
0
        public IActionResult AddFood(ManageFoodViewModel model)
        {
            var foodAldreadyExist = _context.Matratts.Where(m => m.MatrattNamn == model.CurrentMatratt.MatrattNamn).ToList();

            if (ModelState.IsValid)
            {
                if (foodAldreadyExist.Count == 0)
                {
                    _context.Add(model.CurrentMatratt);
                    _context.SaveChanges();
                    TempData["AddFood"] = "Ny maträtt tillagd";

                    var selectedIngredients = model.ingredients.Where(i => i.IsChecked == true).ToList();
                    var newFoodId           = _context.Matratts.SingleOrDefault(m => m.MatrattNamn == model.CurrentMatratt.MatrattNamn).MatrattId;

                    foreach (var ingredient in selectedIngredients)
                    {
                        MatrattProdukt newItem = new MatrattProdukt();
                        newItem.MatrattId = newFoodId;
                        newItem.ProduktId = ingredient.ProduktId;
                        _context.Add(newItem);
                    }

                    _context.SaveChanges();

                    return(RedirectToAction("ManageFood"));
                }
                else
                {
                    TempData["AddFood"] = "Maträtt kunde inte läggas till. Namn på maträtt upptaget?";
                    return(RedirectToAction("ManageFood"));
                }
            }

            return(RedirectToAction("ManageFood"));
        }
        public async Task <IActionResult> Register(RegistrationViewModel user)
        {
            if (ModelState.IsValid)
            {
                var userIdentity = new ApplicationUser
                {
                    UserName = user.AnvandarNamn
                };

                var result = await _userManager.CreateAsync(userIdentity, user.Losenord);

                if (result.Succeeded)
                {
                    if (user.RoleName == "Premium")
                    {
                        var resultRole = await _userManager.AddToRoleAsync(userIdentity, user.RoleName);
                    }
                    else
                    {
                        var resultRole = await _userManager.AddToRoleAsync(userIdentity, "Regular");
                    }
                    var reguser = new Kund
                    {
                        Namn         = user.Namn,
                        Gatuadress   = user.Gatuadress,
                        Postnr       = user.Postnr,
                        Postort      = user.Postort,
                        Email        = user.Email,
                        Telefon      = user.Telefon,
                        AnvandarNamn = user.AnvandarNamn,
                        Losenord     = user.Losenord,
                        IdentityId   = userIdentity.Id
                    };

                    _tomasos.Add(reguser);
                    await _tomasos.SaveChangesAsync();

                    await _signInManager.SignInAsync(userIdentity, isPersistent : false);

                    return(RedirectToAction("StartPage", "Home"));
                }
            }

            return(View());
        }
        public void SaveOrder(List <Matratt> matratter, int userid)
        {
            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);
        }
Esempio n. 15
0
        public IActionResult Register(Kund kund)
        {
            if (ModelState.IsValid)
            {
                var newKund = new Kund();
                newKund.Namn         = kund.Namn;
                newKund.Gatuadress   = kund.Gatuadress;
                newKund.Postnr       = kund.Postnr;
                newKund.Postort      = kund.Postort;
                newKund.Telefon      = kund.Telefon;
                newKund.Email        = kund.Email;
                newKund.AnvandarNamn = kund.AnvandarNamn;
                newKund.Losenord     = kund.Losenord;

                _context.Add(newKund);
                _context.SaveChanges();

                return(View("Registered", newKund));
            }
            return(View());
        }
Esempio n. 16
0
        public IActionResult AddMeal(AddMealViewModel model)
        {
            Matratt matratt = new Matratt();

            matratt = model.Recipe;

            foreach (var ingredient in model.SelectedIngredientIds)
            {
                matratt.MatrattProdukt.Add(new MatrattProdukt {
                    MatrattId = model.Recipe.MatrattId, ProduktId = ingredient
                });
            }

            if (ModelState.IsValid)
            {
                _tomasosContext.Add(matratt);
                _tomasosContext.SaveChanges();
                return(RedirectToAction("AdminPanel", "Admin"));
            }

            return(View());
        }
Esempio n. 17
0
        public async Task <IActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.AnvandarNamn, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Losenord);

                if (result.Succeeded)
                {
                    // lägger in ny kund i databasen
                    Kund NewKund = new Kund
                    {
                        Namn         = model.Namn,
                        Gatuadress   = model.Gatuadress,
                        Postnr       = model.Postnr,
                        Postort      = model.Postort,
                        Email        = model.Email,
                        Telefon      = model.Telefon,
                        AnvandarNamn = model.AnvandarNamn,
                        Losenord     = model.Losenord,
                    };
                    _context.Add(NewKund);
                    _context.SaveChanges();
                    //
                    await _signInManager.SignInAsync(user, isPersistent : false);

                    return(RedirectToAction("index", "home"));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError("", error.Description);
                }
            }
            return(View(model));
        }
        public void SaveBestallningMatratter(List <Matratt> matratter)
        {
            var bestallningsmatrattlista = new List <BestallningMatratt>();
            var id          = 0;
            var first       = 0;
            var count       = 0;
            var nymatratter = matratter.OrderBy(r => r.MatrattNamn).ToList();

            using (TomasosContext db = new TomasosContext())
            {
                var listbestallning = db.Bestallning.OrderByDescending(r => r.BestallningDatum).ToList();
                for (var i = 0; i < nymatratter.Count; i++)
                {
                    if (id != nymatratter[i].MatrattId)
                    {
                        first++;
                        var best = new BestallningMatratt();
                        id = nymatratter[i].MatrattId;
                        best.BestallningId = listbestallning[0].BestallningId;
                        best.MatrattId     = nymatratter[i].MatrattId;
                        best.Antal         = 1;
                        bestallningsmatrattlista.Add(best);
                    }
                    else if (id == nymatratter[i].MatrattId)
                    {
                        count = first - 1;
                        bestallningsmatrattlista[count].Antal++;
                    }
                }
                foreach (var item in bestallningsmatrattlista)
                {
                    db.Add(item);
                    db.SaveChanges();
                }
            }
        }
Esempio n. 19
0
 public void CreateNewCustomer(TomasosContext context, Kund newCustomer)
 {
     context.Add(newCustomer);
     context.SaveChanges();
 }
Esempio n. 20
0
 public void CreateOrderConnection(TomasosContext context, BestallningMatratt connection)
 {
     context.Add(connection);
     context.SaveChanges();
 }
Esempio n. 21
0
        private async Task CreateUserRoles(IServiceProvider serviceProvider)
        {
            var RoleManager = serviceProvider.GetRequiredService <RoleManager <IdentityRole> >();
            var UserManager = serviceProvider.GetRequiredService <UserManager <ApplicationUser> >();

            IdentityResult roleResult;
            IdentityResult roleResult2;
            IdentityResult roleResult3;
            //Adding Admin Role
            var roleCheck = await RoleManager.RoleExistsAsync("Admin");

            if (!roleCheck)
            {
                //create the roles and seed them to the database
                roleResult = await RoleManager.CreateAsync(new IdentityRole("Admin"));
            }
            var roleCheck2 = await RoleManager.RoleExistsAsync("Premium");

            if (!roleCheck2)
            {
                //create the roles and seed them to the database
                roleResult2 = await RoleManager.CreateAsync(new IdentityRole("Premium"));
            }
            var roleCheck3 = await RoleManager.RoleExistsAsync("Regular");

            if (!roleCheck3)
            {
                //create the roles and seed them to the database
                roleResult3 = await RoleManager.CreateAsync(new IdentityRole("Regular"));
            }

            if (await UserManager.FindByNameAsync("Admin") == null)
            {
                var userIdentity = new ApplicationUser
                {
                    UserName = "******"
                };

                var result = await UserManager.CreateAsync(userIdentity, "Admin123");

                if (result.Succeeded)
                {
                    var resultRole = await UserManager.AddToRoleAsync(userIdentity, "Admin");

                    var reguser = new Kund
                    {
                        Namn         = "Admin",
                        Gatuadress   = "Admin",
                        Postnr       = "Admin",
                        Postort      = "Admin",
                        Email        = "Admin",
                        Telefon      = "Admin",
                        AnvandarNamn = "Admin",
                        Losenord     = "Admin123",
                        IdentityId   = userIdentity.Id
                    };

                    TomasosContext DB = new TomasosContext();

                    DB.Add(reguser);

                    await DB.SaveChangesAsync();
                }
            }
        }
Esempio n. 22
0
 public void CreateOrder(TomasosContext context, Bestallning order)
 {
     context.Add(order);
     context.SaveChanges();
 }
 public void Add(Produkt produkt)
 {
     _context.Add(produkt);
     _context.SaveChanges();
 }