Exemplo n.º 1
0
        public async Task <IActionResult> DayDetails(DateTime startDate, DateTime mealDate)
        {
            Customer customer = await repository.GetCustomer(userManager, HttpContext);

            ViewData["customerName"] = customer.Name;

            OrderedMeal OrderedMealForDate = repository
                                             .GetOrderedMealForDate(startDate, mealDate, customer.EMail);

            bool test = OrderedMealForDate == null;

            System.Diagnostics.Debug.WriteLine("Ordered meal is null? " + test);

            MealDetailViewModel mealDetailViewModel =
                new MealDetailViewModel(OrderedMealForDate)
            {
                Date      = mealDate,
                StartDate = startDate
            };

            if (OrderedMealForDate != null)
            {
                int MealId = OrderedMealForDate.MealId;
                mealDetailViewModel.OrderedMeal = await repository.GetMealById(MealId);
            }

            return(View(mealDetailViewModel));
        }
Exemplo n.º 2
0
        public void OrderedMealShouldBeMappedToOrderedMealPoco()
        {
            //Arrange
            var orderedMeal = new OrderedMeal
            {
                Count         = 6,
                MealName      = "meal name",
                OrderId       = 145,
                Id            = 1765,
                Price         = 234.67,
                PurchaserName = "purchaser name"
            };

            //Act
            var mappedOrderedMeal = _orderdedMealMapper.MapToPoco(orderedMeal);

            //Assert
            Assert.Equal(mappedOrderedMeal.Id, mappedOrderedMeal.Id);
            Assert.Equal(mappedOrderedMeal.MealName, mappedOrderedMeal.MealName);
            Assert.Equal(mappedOrderedMeal.Count, mappedOrderedMeal.Count);
            Assert.Equal(mappedOrderedMeal.OrderId, mappedOrderedMeal.OrderId);
            Assert.Equal(mappedOrderedMeal.Price, mappedOrderedMeal.Price);
            Assert.Equal(mappedOrderedMeal.PurchaserName, mappedOrderedMeal.PurchaserName);
            Assert.IsType <OrderedMealPoco>(mappedOrderedMeal);
        }
Exemplo n.º 3
0
        public async Task <IActionResult> SetMeal(OrderedMeal orderedMeal)
        {
            Customer customer = await repository.GetCustomer(userManager, HttpContext);

            Meal Meal = await repository.GetMealById(orderedMeal.MealId);

            orderedMeal.Meal       = Meal;
            orderedMeal.TotalPrice = orderedMeal.CalculateTotalPrice();
            System.Diagnostics.Debug.WriteLine("Calculated price: " + orderedMeal.CalculateTotalPrice());
            System.Diagnostics.Debug.WriteLine("Received date: " + orderedMeal.MealDate);
            DateTime activeMonday;

            if ((int)orderedMeal.MealDate.DayOfWeek == 0)
            {
                activeMonday = orderedMeal.MealDate.AddDays(-6);
            }
            else
            {
                activeMonday = orderedMeal.MealDate.AddDays(1 - (int)orderedMeal.MealDate.DayOfWeek);
            }

            System.Diagnostics.Debug.WriteLine("Active monday SetMeal: " + activeMonday);

            Order order = await GetOrderFromSession(activeMonday, customer.EMail);

            OrderedMeal existing = order.OrderedMeals.FirstOrDefault(
                om => om.MealDate.Date == orderedMeal.MealDate.Date);

            order.OrderedMeals.Remove(existing);

            order.OrderedMeals.Add(orderedMeal);
            SaveOrderToSession(order);

            return(RedirectToAction("EditOrder", new { startDate = activeMonday }));
        }
        public IActionResult TakeoutOrderForm(AddOrderedMealViewModel model)
        {
            if (model.OrderedMeals == null)
            {
                model.OrderedMeals = new List <OrderedMeal>();
            }

            var meal = new OrderedMeal
            {
                MenuEntryId = (int)model.CurrentOrderedMealId,
                Quantity    = (int)model.Quantity,
                Comment     = model.Comments,
                Price       = _context.MenuEntries.Find(model.CurrentOrderedMealId).Price
            };

            model.OrderedMeals.Add(meal);

            CreateTakeoutPriorityOrderQueue(model);


            var menuEntries = _context.MenuEntries.Include(m => m.Menu).ToList();
            var selectList  = new List <SelectListItem>();

            foreach (var entry in menuEntries)
            {
                selectList.Add(new SelectListItem()
                {
                    Value = entry.MenuEntryId.ToString(),
                    Text  = entry.MenuEntryName,
                });;
            }
            ViewData["Menu"] = new SelectList(selectList, "Value", "Text");
            return(Redirect("/User/TakeoutOrdersPage"));
        }
Exemplo n.º 5
0
        public bool HasMealForDate(DateTime mealDate)
        {
            OrderedMeal oMeal = Order.OrderedMeals
                                .FirstOrDefault(om => om.MealDate == mealDate);

            bool test = oMeal != null;

            System.Diagnostics.Debug.WriteLine("Meal found for date? " + test);
            return(test);
        }
Exemplo n.º 6
0
        public decimal BirthDateDiscount()
        {
            OrderedMeal oMealForBirthDate = OrderedMeals
                                            .FirstOrDefault(om =>
                                                            om.MealDate.Month == BirthDate.Month &&
                                                            om.MealDate.Day == BirthDate.Day);

            if (oMealForBirthDate == null)
            {
                return(0);
            }

            return(oMealForBirthDate.TotalPrice);
        }
Exemplo n.º 7
0
        public IActionResult AddOrderedMeal(int?id, AddOrderedMealViewModel model)
        {
            if (model.OrderedMeals == null)
            {
                model.OrderedMeals = new List <OrderedMeal>();
            }

            var meal = new OrderedMeal
            {
                InOrderOrderId = (int)model.OrderId,
                MenuEntryId    = (int)model.CurrentOrderedMealId,
                Quantity       = (int)model.Quantity,
                Comment        = model.Comments,
                Price          = _context.MenuEntries.Find(model.CurrentOrderedMealId).Price
            };

            model.OrderedMeals.Add(meal);

            foreach (var m in model.OrderedMeals)
            {
                var om = new OrderedMeal
                {
                    InOrderOrderId = (int)model.OrderId,
                    MenuEntryId    = m.MenuEntryId,
                    Quantity       = m.Quantity,
                    Comment        = m.Comment,
                    Price          = m.Price
                };
                _context.Add(om);
            }
            _context.SaveChanges();


            var menuEntries = _context.MenuEntries.Include(m => m.Menu).ToList();
            var selectList  = new List <SelectListItem>();

            foreach (var entry in menuEntries)
            {
                selectList.Add(new SelectListItem()
                {
                    Value = entry.MenuEntryId.ToString(),
                    Text  = entry.MenuEntryName,
                });;
            }
            ViewData["Menu"] = new SelectList(selectList, "Value", "Text");
            return(Redirect("/Waiter/OrderPage/" + model.OrderId.ToString()));
        }
Exemplo n.º 8
0
        public bool HasPlusFifteenOrders()
        {
            if (OrderedMeals.Count() < 15)
            {
                return(false);
            }

            OrderedMeal oMealForBirthDate = OrderedMeals
                                            .FirstOrDefault(om => om.MealDate.Date == BirthDate.Date);

            if (oMealForBirthDate == null)
            {
                return(true);
            }

            return(OrderedMeals.Count() > 15);
        }
Exemplo n.º 9
0
        public MealDetailViewModel(OrderedMeal orderedMeal)
        {
            bool test = orderedMeal == null;

            System.Diagnostics.Debug.WriteLine("Received ordered meal is null? " + test);

            if (test)
            {
                HasOrderedMeal = false;
                return;
            }

            IncludeStarter = orderedMeal.IncludeStarter;
            IncludeDessert = orderedMeal.IncludeDessert;
            Size           = orderedMeal.Size;

            // Meal object is given through controller
        }
Exemplo n.º 10
0
        public IActionResult AddOrderedMealAdd(AddOrderedMealViewModel model)
        {
            if (model.OrderedMeals == null)
            {
                model.OrderedMeals = new List <OrderedMeal>();
            }

            var meal = new OrderedMeal {
                InOrderOrderId = (int)model.OrderId,
                MenuEntryId    = (int)model.CurrentOrderedMealId,
                Quantity       = (int)model.Quantity,
                Comment        = model.Comments,
                Price          = _context.MenuEntries.Find(model.CurrentOrderedMealId).Price
            };

            model.OrderedMeals.Add(meal);
            for (int i = 0; i < model.OrderedMeals.Count; i++)
            {
                model.OrderedMeals[i].MenuEntry = _context.MenuEntries.Find(model.OrderedMeals[i].MenuEntryId);
            }
            model.CurrentOrderedMealId = null;
            model.Quantity             = null;
            model.Comments             = null;


            var menuEntries = _context.MenuEntries.Include(m => m.Menu).ToList();
            var selectList  = new List <SelectListItem>();

            foreach (var entry in menuEntries)
            {
                selectList.Add(new SelectListItem()
                {
                    Value = entry.MenuEntryId.ToString(),
                    Text  = entry.MenuEntryName,
                });;
            }
            ViewData["Menu"] = new SelectList(selectList, "Value", "Text");
            return(View("AddOrderedMeal", model));
        }
        public void CreateTakeoutPriorityOrderQueue(AddOrderedMealViewModel model)
        {
            var usrID = HttpContext.Session.GetInt32("userID");

            var users = _context.Users.Include(t => t.TakeoutOrders).Include(r => r.Reservations).ToList();

            foreach (var user in users)
            {
                user.LoyalityPoints  = user.Reservations.Where(r => r.State != (int)OrderState.Canceled).ToList().Count;
                user.LoyalityPoints -= user.Reservations.Where(r => r.State == (int)OrderState.Canceled).ToList().Count;
                user.LoyalityPoints += user.TakeoutOrders.Where(r => r.State != (int)OrderState.Canceled).ToList().Count;
                user.LoyalityPoints -= user.TakeoutOrders.Where(r => r.State == (int)OrderState.Canceled).ToList().Count;
            }

            var takeout = new TakeoutOrder
            {
                OrderedByUserId   = (int)usrID,
                OrderDate         = DateTime.Now,
                OrderedForDate    = (DateTime)model.OrderedForDate,
                Price             = 0,
                State             = (int)OrderState.Created,
                ManagedByWaiterId = 1
            };

            var  minDate           = takeout.OrderedForDate.AddMinutes(-5);
            var  maxDate           = takeout.OrderedForDate.AddMinutes(5);
            var  beforeTake        = _context.TakeoutOrders.Where(d => DateTime.Compare(minDate, d.OrderedForDate) <= 0);
            var  afterTake         = beforeTake.Where(d => DateTime.Compare(maxDate, d.OrderedForDate) >= 0).Include(u => u.OrderedBy);
            var  overlaped         = afterTake.FirstOrDefault();
            bool overlap           = overlaped != null ? true : false;
            int  currentUserPoints = users.Where(l => l.UserId == (int)usrID).FirstOrDefault().LoyalityPoints;
            int  overlapUserPoints = overlap ? overlaped.OrderedBy.LoyalityPoints : 0;

            if (overlap)
            {
                if (overlapUserPoints >= currentUserPoints)
                {
                    takeout.State = (int)OrderState.Canceled;
                    _context.Add(takeout);
                    _context.SaveChanges();

                    foreach (var m in model.OrderedMeals)
                    {
                        var om = new OrderedMeal
                        {
                            InTakeoutTakeoutOrderId = takeout.TakeoutOrderId,
                            MenuEntryId             = m.MenuEntryId,
                            Quantity = m.Quantity,
                            Comment  = m.Comment,
                            Price    = m.Price
                        };
                        _context.Add(om);
                    }
                }
                else
                {
                    overlaped.State = (int)OrderState.Canceled;
                    _context.Update(overlaped);
                    _context.Add(takeout);
                    _context.SaveChanges();

                    foreach (var m in model.OrderedMeals)
                    {
                        var om = new OrderedMeal
                        {
                            InTakeoutTakeoutOrderId = takeout.TakeoutOrderId,
                            MenuEntryId             = m.MenuEntryId,
                            Quantity = m.Quantity,
                            Comment  = m.Comment,
                            Price    = m.Price
                        };
                        _context.Add(om);
                    }
                }
            }
            else // No overlap detected
            {
                _context.Add(takeout);
                _context.SaveChanges();

                foreach (var m in model.OrderedMeals)
                {
                    var om = new OrderedMeal
                    {
                        InTakeoutTakeoutOrderId = takeout.TakeoutOrderId,
                        MenuEntryId             = m.MenuEntryId,
                        Quantity = m.Quantity,
                        Comment  = m.Comment,
                        Price    = m.Price
                    };
                    _context.Add(om);
                }
            }



            _context.SaveChanges();
        }
Exemplo n.º 12
0
        public void AddOrderedMeal(OrderedMeal orderedMeal)
        {
            var orderedMealPoco = _mealMapper.MapToPoco(orderedMeal);

            _db.Insert("OrderedMeals", "Id", orderedMealPoco);
        }
Exemplo n.º 13
0
 public void AddMeal(OrderedMeal meal)
 {
     orderRepository.AddOrderedMeal(meal);
 }