public ClientMenuViewModel(User user, Reservation reservation, FastObservableCollection <OrderedDish> orderedDishes = null)
        {
            _user          = user;
            _reservation   = reservation;
            _rootViewModel = ViewModelManager.GetFirstOrDefaultInstance <MainWindowViewModel>();
            OrderedDishes.AutomaticallyDispatchChangeNotifications = true;
            // передаем в конструктор ссылку на собираемую коллекцию заказанных блюд
            _sumCalculator = new OrderedSumCalculator(OrderedDishes);

            AddCommand = new Command(OnAddCommandExecute);
            SelectionChangedCommand = new Command(OnSelectionChangedCommandExecute);
            DeleteCommand           = new Command(OnDeleteCommandExecute, OnDeleteCommandCanExecute);
            BackCommand             = new Command(OnBackCommandExecute);
            NextCommand             = new Command(OnNextCommandExecute, OnNextCommandCanExecute);

            RefreshDishesCollection();

            if (orderedDishes != null)
            {
                OrderedDishes = orderedDishes;
                TotalSum      = _sumCalculator.GetCurrentOrderedSum();
            }
            else
            {
                OrderedDishes.Clear();
            }
        }
        private void RefreshOrdersWithReservationsCollection()
        {
            OrdersWithReservations.Clear();
            OrderedDishes.Clear();

            var userOrders = _unitOfWork.Orders.GetAll()
                             .Join(_unitOfWork.Reservations.GetAll(),
                                   order => order.ReservationId,
                                   reservation => reservation.Id,
                                   (o, r) => new OrderWithReservationInfo
            {
                OrderId   = o.Id,
                TableId   = r.TableId,
                UserId    = o.UserId,
                Day       = r.Day.ToLongDateString(),
                FirstTime = r.FirstTime.ToShortTimeString(),
                LastTime  = r.LastTime.ToShortTimeString()
            })
                             .Where(or => or.UserId == _user.Id);

            foreach (var us in userOrders)
            {
                OrdersWithReservations.Add(us);
            }
        }
Ejemplo n.º 3
0
        internal void ChangeDish(string name, int amount)
        {
            var dish = OrderedDishes.Find(x => x.Dish.Name == name);

            if (dish == null)
            {
                OrderedDishes.Add(new OrderedDish(name, amount));
            }
            else
            {
                dish.Amount = amount;
            }
            WaiterManager.AddOrder(Number);
        }
        private void OnSelectAnotherOrderCommandExecute()
        {
            if (SelectedOrderWithReservation != null)
            {
                OrderedDishes.Clear();
                // получаем все заказанные блюда
                var orderedDishes = _unitOfWork.OrderedDishes.GetAll()
                                    .Where(od => od.OrderId == SelectedOrderWithReservation.OrderId);

                // добавляем в коллекцию
                OrderedDishes.AddItems(orderedDishes);
                TotalSum = _orderedSumCalculator.GetCurrentOrderedSum();
            }
        }
Ejemplo n.º 5
0
        private void CheckBonus()
        {
            var bonuses = _unitOfWork.BonusActions.GetAll().Where(b => b.ExcessSum < TotalSum);
            var bonus   = bonuses.OrderBy(b => b.ExcessSum).LastOrDefault();

            if (bonus != null)
            {
                BonusHeaderString = $"{bonus.Dish.Name} | ЗАКАЗ > {bonus.ExcessSum}";
                BonusInfo         = bonus.Description;
                // добавить бонусное блюдо
                _bonusDish = new OrderedDish {
                    DishId = bonus.DishId, OrderedPrice = 0, Quantity = 1
                };
                OrderedDishes.Add(_bonusDish);
            }
            else
            {
                BonusInfo = "Извините, но за Ваш заказ бонус не предусмотрен.";
            }
        }
 private bool OnNextCommandCanExecute()
 {
     return(OrderedDishes.Any());
 }
 private void OnDeleteCommandExecute()
 {
     OrderedDishes.Remove(SelectedOrderedDish);
     TotalSum = _sumCalculator.GetCurrentOrderedSum();
 }
Ejemplo n.º 8
0
 private void OnBackCommandExecute()
 {
     OrderedDishes.Remove(_bonusDish);
     _rootViewModel.ChangePage(new ClientMenuViewModel(_user, _reservation, OrderedDishes));
 }