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); } }
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(); } }
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(); }
private void OnBackCommandExecute() { OrderedDishes.Remove(_bonusDish); _rootViewModel.ChangePage(new ClientMenuViewModel(_user, _reservation, OrderedDishes)); }