Beispiel #1
0
        public async Task AddDishItem()
        {
            var context = new FoodOrderContext().CreateDbContext(null);
            var repo    = new FoodOrderRepository(context);
            var date    = DateTime.Now;

            var dishItem = new DishItem
            {
                Name     = "Salo",
                Price    = 100,
                Category = new DishCategory
                {
                    Name = "Еда богов"
                },
                Supplier    = repo.All <Supplier>().FirstOrDefault(x => x.Name == "ГлаголЪ"),
                AvailableOn = new List <DishItemToWeekDay> {
                    new DishItemToWeekDay {
                        WeekDay = repo.GetById <WeekDay>(1)
                    }
                },
                AvailableUntil = date
            };

            await repo.InsertAsync(dishItem);

            await repo.SaveAsync();

            var i = repo.All <DishItem>().Include(x => x.AvailableOn).FirstOrDefault(x => x.AvailableUntil == date);

            Assert.Equal(dishItem.AvailableOn.First().DishItemId, i.AvailableOn.First().DishItemId);
            Assert.Equal(dishItem.AvailableOn.First().WeekDayId, i.AvailableOn.First().WeekDayId);
        }
Beispiel #2
0
        private void fillDishGroupBox
            (GroupBox dishGroupBox,
            Label imageLabel,
            Label descriptionLabel,
            ListBox ingredientsListBox,
            DishItem dishToShow)
        {
            dishGroupBox.Visible  = true;
            descriptionLabel.Text = dishToShow.DishModel.CookingInstructions;
            dishGroupBox.Text     = dishToShow.DishModel.Name;

            imageLabel.Image = dishToShow.Image;

            foreach (var ingredient in dishToShow.Ingredients)
            {
                StringBuilder ingredientInfo = new StringBuilder();
                ingredientInfo.Append(ingredient.ProductName);
                ingredientInfo.Append(" - ");
                ingredientInfo.Append(ingredient.Weight);
                ingredientsListBox.Items.Add(ingredientInfo.ToString());
            }

            Thread imageLoader = new Thread(() =>
            {
                showDisheImage(imageLabel, dishToShow);
            });

            imageLoader.Start();
        }
Beispiel #3
0
        public async Task <ActionResult <DishItem> > PostDishItem(DishItem item)
        {
            _context.DishItems.Add(item);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetDishItem), new { id = item.Id }, item));
        }
Beispiel #4
0
        private void dishDel()
        {
            DishItem dishItem = (DishItem)lstDishes.SelectedItem;

            if (dishItem == null)
            {
                return;
            }
            OrderItem order = AppLib.GetCurrentOrder();

            AppLib.WriteAppAction($"CartWin|Удаление блюда '{dishItem.langNames["ru"]}'...");

            string           title  = AppLib.GetLangTextFromAppProp("cartDelDishTitle");
            string           msg    = string.Format("{0} \"{1}\" ?", AppLib.GetLangTextFromAppProp("cartDelDishQuestion"), AppLib.GetLangText(dishItem.langNames));
            MessageBoxResult result = AppLib.ShowChoiceBox(title, msg);

            AppLib.WriteAppAction($"CartWin|Удаление блюда '{dishItem.langNames["ru"]}': {result.ToString()}");

            if (result == MessageBoxResult.Yes)
            {
                order.Dishes.Remove(dishItem);
                lstDishes.Items.Refresh();
                scrollDishes.ScrollToTop();

                updatePriceOrder();
            }
        }
Beispiel #5
0
        public DishPopup(DishItem dishItem, BitmapImage img)
        {
            InitializeComponent();

            AppLib.WriteAppAction($"DishPopup|Открывается всплывашка для блюда '{dishItem.langNames["ru"]}'...");

            this.Loaded += DishPopup_Loaded;

            // init private vars
            _notSelTextColor = new SolidColorBrush(Colors.Black);
            _selTextColor    = (SolidColorBrush)AppLib.GetAppGlobalValue("addButtonBackgroundTextColor");

            setWinLayout();

            // set Win data
            _currentDish     = dishItem;
            this.DataContext = _currentDish;

            dishImage.Fill = new ImageBrush(img);

            //if (AppLib.GetAppSetting("IsWriteWindowEvents").ToBool())
            //{
            //    _eventsLog = new UserActionsLog(this, EventsMouseEnum.Bubble, EventsKeyboardEnum.None, EventsTouchEnum.Bubble, UserActionLog.LogFilesPathLocationEnum.App_Logs, true, false);
            //}

            updatePriceControl();
        }
Beispiel #6
0
        public MainMenuGarnish(DishItem dishItem, int garnIndex, double garnHeight, double garnWidth, Grid dishContentPanel)
        {
            _dishItem     = dishItem;
            _garnIndex    = garnIndex;
            _garnItem     = _dishItem.Garnishes[garnIndex];
            _height       = garnHeight;
            _width        = garnWidth;
            _contentPanel = dishContentPanel;

            _fontSize   = (double)AppLib.GetAppGlobalValue("appFontSize5");
            _fontSizeUp = (double)AppLib.GetAppGlobalValue("appFontSize4");

            _selectBackgroundBrush    = (Brush)AppLib.GetAppGlobalValue("appSelectedItemColor");
            _notSelectBackgroundBrush = (Brush)AppLib.GetAppGlobalValue("garnishBackgroundColor");
            _selectTextBrush          = (Brush)AppLib.GetAppGlobalValue("addButtonBackgroundPriceColor");
            _notSelectTextBrush       = Brushes.Black;
            //_shadow = new DropShadowEffect() { BlurRadius = 5, Opacity = 0.5, ShadowDepth = 1 };

            _isSelected = false;

            this.DishWithGarnishImageBrush = new ImageBrush()
            {
                ImageSource = _garnItem.ImageDish
            };
            createGarnishButton();

            base.MouseUp += MainMenuGarnish_PreviewMouseDown;
        }
Beispiel #7
0
 public void RemoveDishItem(DishItem item)
 {
     if (dishBag.Contains(item))
     {
         dishBag.Remove(item);
     }
 }
Beispiel #8
0
        public MainMenuDishPanel(DishItem dishItem, double leftPos, double topPos)
        {
            _parentWindow              = (Window)App.Current.MainWindow;
            _dishItem                  = dishItem;
            _leftPos                   = leftPos; _topPos = topPos;
            _hasGarnishes              = (_dishItem.Garnishes != null);
            currentPanelHeight         = (_hasGarnishes) ? (double)AppLib.GetAppGlobalValue("dishPanelHeightWithGarnish") : (double)AppLib.GetAppGlobalValue("dishPanelHeight");
            _brushSelectedItem         = (SolidColorBrush)AppLib.GetAppGlobalValue("appSelectedItemColor");
            _dishPanelAddButtoFontSize = Convert.ToDouble(AppLib.GetAppGlobalValue("dishPanelAddButtoFontSize"));
            _animBCol                  = (ColorAnimation)AppLib.GetAppGlobalValue("AddDishButtonBackgroundColorAnimation");
            // анимация текста на кнопке добавления блюда
            _tAnim = new TextAnimation()
            {
                IsAnimFontSize         = true,
                DurationFontSize       = 200,
                FontSizeKoef           = 1.2,
                RepeatBehaviorFontSize = 3,
                IsAnimTextBlur         = false,
            };
            _tAnim.Completed += _tAnim_Completed;

            // декоратор для панели блюда (должен быть для корректной работы ручного скроллинга)
            setDishPanel();
            // панель содержания
            createContentPanel();
            // Заголовок панели
            setDishPanelHeader();
            // изображение блюда и описание
            setDishDescription();
            // гарниры для Воков
            if (_hasGarnishes)
            {
                createGarnisheButtons();
            }
            // изображения кнопок добавления
            setDishAddButton();

            // прочитать и установить длительность анимации
            double cfgDuration = getDuration();

            if (cfgDuration > 0)
            {
                // показать подсказку
                _sbDescrShow            = getDescrStoryboard(true, cfgDuration);
                _sbDescrShow.Completed += _sbDescrShow_Completed;
                // скрыть подсказку
                _sbDescrHide            = getDescrStoryboard(false, 0.7 * cfgDuration);
                _sbDescrHide.Completed += _sbDescrHide_Completed;
            }

            base.Children.Add(dGrid); Grid.SetRow(dGrid, 1); Grid.SetColumn(dGrid, 1);

            _daAddBtnShow            = new DoubleAnimation(0d, 1d, TimeSpan.FromMilliseconds(300));
            _daAddBtnHide            = new DoubleAnimation(1d, 0d, TimeSpan.FromMilliseconds(300));
            _daAddBtnShow.Completed += _daOpacity_Completed;
        }
Beispiel #9
0
        public async Task <IActionResult> PutDishItem(long id, DishItem item)
        {
            if (id != item.Id)
            {
                return(BadRequest());
            }

            _context.Entry(item).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(NoContent());
        }
Beispiel #10
0
        }  // method

        #region добавить блюдо к заказу

        private void BtnAddDish_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (AppLib.IsDrag)
            {
                return;
            }
            if (AppLib.IsEventsEnable == false)
            {
                AppLib.IsEventsEnable = true; return;
            }

            Border brdAddButton = (Border)sender;

            if (brdAddButton.Opacity == 0)
            {
                return;
            }

            OrderItem _currentOrder = AppLib.GetCurrentOrder();

            // изображение взять из элемента
            ImageBrush  imgBrush = (ImageBrush)_pathImage.Fill;
            BitmapImage bmpImage = (imgBrush.ImageSource as BitmapImage);

            // если нет ИНГРЕДИЕНТОВ, то сразу в корзину
            // т.к. блюда без гарниров тоже могут быть с ингредиентами (и рекомендациями)
            if ((_dishItem.Ingredients == null) || (_dishItem.Ingredients.Count == 0))
            {
                AppLib.WriteAppAction($"MainWin|Нажата кнопка выбора блюда '{_dishItem.langNames["ru"]}' (price {_dishItem.GetPrice().ToStringMoneyFormat()}) БЕЗ гарнира");

                DishItem orderDish = _dishItem.GetCopyForOrder();
                orderDish.Image = bmpImage;

                _currentOrder.Dishes.Add(orderDish);
                // анимировать перемещение блюда в корзину
                animateDishToCart();
            }

            // иначе через "всплывашку"
            else
            {
                AppLib.WriteAppAction($"MainWin|Нажата кнопка выбора блюда '{_dishItem.langNames["ru"]}' (price {_dishItem.GetPrice().ToStringMoneyFormat()}) С гарниром '{_dishItem.Ingredients[0].langNames["ru"]}' (price {_dishItem.Ingredients[0].Price.ToStringMoneyFormat()})");

                // текущее блюдо и его изображение передать в конструкторе
                DishPopup popupWin = new DishPopup(_dishItem, bmpImage);
                popupWin.ShowDialog();

                // очистить выбранный гарнир
                ClearSelectedGarnish();
            } // if else
        }
Beispiel #11
0
        private void portionCountAdd()
        {
            DishItem curDish = (DishItem)lstDishes.SelectedItem;

            if (curDish == null)
            {
                return;
            }

            AppLib.WriteAppAction($"CartWin|Блюдо '{curDish.langNames["ru"]}' (price {curDish.GetPrice().ToStringMoneyFormat()}), увеличить кол-во порций({curDish.Count}) на 1");
            curDish.Count++;
            AppLib.WriteAppAction($"CartWin|Блюдо '{curDish.langNames["ru"]}', кол-во порций: {curDish.Count}");

            updatePriceControls();
        }
Beispiel #12
0
        // выбор блюда
        // ****** ??? процедура вызывается 2 раза!!!
        // если это MouseUp, если PreviewMouseUp - то один раз!!
        private void btnAddDish_MouseUp(object sender, MouseButtonEventArgs e)
        {
            _closeCause = "ButtonAddDish";
            AppLib.WriteAppAction("DishPopup|Нажата кнопка AddDish");
            e.Handled = true;

            // добавить блюдо в заказ
            OrderItem curOrder  = AppLib.GetCurrentOrder();
            DishItem  orderDish = _currentDish.GetCopyForOrder();  // сделать копию блюда со всеми добавками

            // изображение взять из элемента
            ImageBrush  imgBrush = (ImageBrush)dishImage.Fill;
            BitmapImage bmpImage = (imgBrush.ImageSource as BitmapImage);

            orderDish.Image = bmpImage;

            curOrder.Dishes.Add(orderDish);

            //Debug.Print("order.Dishes.Count = " + curOrder.Dishes.Count.ToString());

            // добавить в заказ рекомендации
            if ((_currentDish.SelectedRecommends != null) && (_currentDish.SelectedRecommends.Count > 0))
            {
                foreach (DishItem item in _currentDish.SelectedRecommends)
                {
                    curOrder.Dishes.Add(item);
                }
            }

            if ((bool)AppLib.GetAppGlobalValue("isAnimatedSelectVoki"))
            {
                // закрыть окно после завершения анимации
                animateDishSelection();
            }
            else
            {
                updatePriceAndClose(false);
            }
        }
Beispiel #13
0
        // удаление ингредиента
        private void ingrDel(object sender, Point point)
        {
            // получить контролы из нажатого элемента
            //    listbox ингредиентов
            ListBoxItem lbiIngr = (ListBoxItem)AppLib.FindVisualParentByType((FrameworkElement)sender, typeof(ListBoxItem));
            ListBox     lbIngr  = (ListBox)AppLib.FindVisualParentByType((FrameworkElement)lbiIngr, typeof(ListBox));
            DishAdding  tmpIngr = (DishAdding)lbIngr.ItemContainerGenerator.ItemFromContainer(lbiIngr);

            int iCnt = lbIngr.ItemContainerGenerator.IndexFromContainer(lbiIngr);

            if (lbIngr.SelectedIndex != iCnt)
            {
                lbIngr.SelectedIndex = iCnt;
            }

            //    listbox блюд
            AppLib.SelectListBoxItemByHisInnerControl((FrameworkElement)lbIngr, lstDishes); // делаем это принудетельно

            DishItem   dishItem = (DishItem)lstDishes.SelectedItem;
            DishAdding ingrItem = (DishAdding)lbIngr.SelectedItem;

            AppLib.WriteAppAction($"CartWin|Нажата кнопка удаления ингредиента '{ingrItem.langNames["ru"]}' для блюда '{dishItem.langNames["ru"]}'");

            string           title  = AppLib.GetLangTextFromAppProp("cartDelIngrTitle");
            string           msg    = string.Format("{0} \"{1}\" ?", AppLib.GetLangTextFromAppProp("cartDelIngrQuestion"), AppLib.GetLangText(ingrItem.langNames));
            MessageBoxResult result = AppLib.ShowChoiceBox(title, msg);

            AppLib.WriteAppAction($"CartWin|Удаление ингредиента {ingrItem.langNames["ru"]}: {result.ToString()}");
            if (result == MessageBoxResult.Yes)
            {
                dishItem.SelectedIngredients.Remove(ingrItem);
                lbIngr.Items.Refresh();

                updatePriceControls();
            }
            this.Activate();
        }
Beispiel #14
0
 private void showDisheImage(Label element, DishItem dishItem)
 {
     element.Image = Resources.Spinner;
     element.Image = imageHelper.GetDishImage(dishItem.DishModel.BigPhotoLink);
 }
Beispiel #15
0
        public IActionResult NewMealView(string submitButton, NewMealModel model)
        {
            long         loggedUserId = GetUserSessionId();
            NewMealModel returnModel  = new NewMealModel();

            SetBasicInfo(ref dishList, ref mealList, ref returnModel, loggedUserId);
            var meal = new MealItem();

            //Został wciśnięty przycisk "Dodaj posiłek"
            if (submitButton == "add")
            {
                //Jeżeli nie uzupełniono obowiązkowych pól formularza
                if (!ModelState.IsValid)
                {
                    return(View(returnModel));
                }

                meal.Id = CalculateNextMealId();

                //Pobranie z bazy danych dania którego dotyczył posiłek
                DishItem selectedDish = _dishDriver.GetDish(model.DishId);

                //Uzupełnienie obiektu posiłku i dodanie go do bazy
                meal.User_Id       = GetUserSessionId();
                meal.Dish_Id       = model.DishId;
                meal.Amount        = model.Amount;
                meal.Description   = model.Description;
                meal.Meal_Name     = model.Name;
                meal.Energy_Value  = selectedDish.Energy_Value / 100 * model.Amount;
                meal.Carbonhydrate = selectedDish.Carbonhydrate / 100 * model.Amount;
                meal.Fat           = selectedDish.Fat / 100 * model.Amount;
                meal.Fibre         = selectedDish.Fibre / 100 * model.Amount;
                meal.Protein       = selectedDish.Protein / 100 * model.Amount;
                meal.Sodium        = selectedDish.Sodium / 100 * model.Amount;
                meal.Meal_Date     = Convert.ToDateTime(model.Date + " " + model.Time);

                _mealDriver.Add(meal);
                returnModel.AddedDish   = model.Name;
                returnModel.Communicate = "Added";
            }
            //Został wciśnięty przycisk "Edytuj posiłek"
            else if (submitButton == "edit")
            {
                //Pobranie z bazy danych dania którego dotyczył posiłek
                DishItem selectedDish = _dishDriver.GetDish(model.EditedToDishId);

                //Uzupełnienie obiektu posiłku i aktualizacja odpowiedniego rekordu
                var mealEdit = new MealItem();
                mealEdit.Id            = model.EditMealId;
                mealEdit.Meal_Name     = model.EditedToName;
                mealEdit.Description   = model.EditedToDescription;
                mealEdit.User_Id       = GetUserSessionId();
                mealEdit.Dish_Id       = model.EditedToDishId;
                mealEdit.Amount        = model.EditedToAmount;
                mealEdit.Energy_Value  = selectedDish.Energy_Value / 100 * model.EditedToAmount;
                mealEdit.Carbonhydrate = selectedDish.Carbonhydrate / 100 * model.EditedToAmount;
                mealEdit.Fat           = selectedDish.Fat / 100 * model.EditedToAmount;
                mealEdit.Fibre         = selectedDish.Fibre / 100 * model.EditedToAmount;
                mealEdit.Protein       = selectedDish.Protein / 100 * model.EditedToAmount;
                mealEdit.Sodium        = selectedDish.Sodium / 100 * model.EditedToAmount;
                mealEdit.Meal_Date     = Convert.ToDateTime(model.EditedToDate + " " + model.EditedToTime);

                _mealDriver.Update(mealEdit);
                returnModel.AddedDish = model.EditedToName;

                returnModel.AllMeals    = _mealDriver.GetAllMeal().ToList();
                returnModel.Communicate = "Edited";
            }
            //Został wciśnięty przycisk "Usuń posiłek"
            else if (submitButton == "delete")
            {
                //Usuwanie posiłku z bazy
                _mealDriver.Delete(model.EditMealId);
                returnModel.Communicate = "Deleted";
            }
            //Aktualizacja modelu zwrotnego po dodaniu/edycji/usunięciu posiłku
            SetBasicInfo(ref dishList, ref mealList, ref returnModel, loggedUserId);

            return(View(returnModel));
        }
Beispiel #16
0
 public void AddDishItem(DishItem item)
 {
     dishBag.Add(item);
 }