private void EditCateDialogClosingEventHandler(object sender, DialogClosingEventArgs eventArgs)
        {
            if (eventArgs.Parameter is bool parameter &&
                parameter == false)
            {
                return;
            }

            var tempIndex = this.SelectedIndex;

            using (var db = new CAKESTOREEntities())
            {
                var modifiedCate = this._categoryDialogViewModel.SelectedCakeType;
                var cate         = db.CAKE_TYPE.Find(modifiedCate.TYPE_ID);
                var cateFromDic  = CakeCategories.FirstOrDefault(c => c.Key.TYPE_ID == cate.TYPE_ID).Key;

                var tryUpdateKey = DictionaryHelper.UpdateKey(CakeCategories, cateFromDic, modifiedCate);

                if (tryUpdateKey)
                {
                    cate.TYPE_NAME = modifiedCate.TYPE_NAME;
                    db.SaveChanges();

                    GetCakeCategories(tempIndex);
                }
                else
                {
                    MessageBox.Show("Error");
                }
            };
            MainWindowViewModel.Instance.GetAutocompleteSource();
        }
示例#2
0
        public PieChartViewModel()
        {
            CultureInfo cul = CultureInfo.GetCultureInfo("vi-VN");   // try with "en-US"

            PointLabel = chartPoint => (chartPoint.Y != 0.0 ? chartPoint.Y.ToString("#,###", cul.NumberFormat) : "0.000") + " đồng";

            using (var db = new CAKESTOREEntities())
            {
                //Get orders list
                var ordersList = db.ORDERS.ToList();
                //Get cate name list
                var cateNameList = db.CAKE_TYPE.ToList();
                //Get min date in order list
                var minDate = ordersList.Select(o => o.DATE_CREATE.Value).Min();
                //Get max date in order list
                var maxDate = ordersList.Select(o => o.DATE_CREATE.Value).Max();

                //Check valid date range
                if (IsValidDateRange(minDate, maxDate))
                {
                    //Set date range
                    this.FromDate = minDate;
                    this.ToDate   = maxDate;
                }
            };

            GetSeriesCollection();
        }
示例#3
0
        private void EditCakeDialogClosingEventHandler(object sender, DialogClosingEventArgs eventArgs)
        {
            if (eventArgs.Parameter is bool parameter &&
                parameter == false)
            {
                return;
            }

            using (var db = new CAKESTOREEntities())
            {
                var cake         = db.CAKEs.Find(this.SelectedCake.CAKE_ID);
                var modifiedCake = this._detailDialogViewModel.SelectedCake;
                cake.CAKE_NAME        = modifiedCake.CAKE_NAME;
                cake.CAKE_TYPE        = this._detailDialogViewModel.CakeCategories[this._detailDialogViewModel.SelectedIndex].TYPE_ID;
                cake.PRICE            = modifiedCake.PRICE;
                cake.IMAGE            = modifiedCake.IMAGE;
                cake.REMAINING_AMOUNT = modifiedCake.REMAINING_AMOUNT;
                cake.DESCRIPTION      = modifiedCake.DESCRIPTION;
                db.SaveChanges();

                this.SelectedCake = cake;
            };

            MainWindowViewModel.Instance.GetAutocompleteSource();
        }
        private async void ExecuteAddOrderAsync(object obj)
        {
            ORDER.CAKE_IN_ORDERS.ToList().ForEach(x => {
                UpdateCakeAmount(x.CAKE_ID, (int)x.NUMBER);
                HomeScreenViewModel.Instance.updateCakeAmount(x.CAKE_ID, x.CAKE.CAKE_TYPE, (int)x.NUMBER);
                x.CAKE = null;
            }); //TODO !!!!

            using (var db = new CAKESTOREEntities())
            {
                db.ORDERS.Add(ORDER);
                db.SaveChanges();
            };
            var SuccessMessage = new SampleMessageDialogViewModel {
                Message = "Hóa đơn hoàn tất"
            };
            var view = new SampleMessageDialog {
                DataContext = SuccessMessage
            };
            var result = await DialogHost.Show(view, MainWindowViewModel.Instance.Identifier, ExtendedOpenedEventHandler, SuccessMessageDialogClosingHandler);

            ORDER             = new ORDER();
            ORDER.TOTAL_PRICE = 0;
            ORDER.DATE_CREATE = DateTime.Now;
        }
 private void UpdateCakeAmount(int cakeid, int number)
 {
     using (var db = new CAKESTOREEntities())
     {
         var cake = db.CAKEs.FirstOrDefault(item => item.CAKE_ID == cakeid);
         cake.REMAINING_AMOUNT = cake.REMAINING_AMOUNT - number;;
         db.SaveChanges();
     }
 }
        private void GetCakeCategories(int selectedIndex)
        {
            CakeCategories = new ObservableDictionary <CAKE_TYPE, ObservableCollection <CAKE> >();

            using (var db = new CAKESTOREEntities())
            {
                db.CAKE_TYPE.ToList().ForEach(cat =>
                {
                    var cakeByCateIdList = db.CAKEs.Where(cake => cake.CAKE_TYPE == cat.TYPE_ID).ToList();
                    CakeCategories.Add(cat, new ObservableCollection <CAKE>(cakeByCateIdList));
                });
            };

            this.SelectedIndex = selectedIndex;
        }
示例#7
0
        private void AddCakeDialogClosingEventHandler(object sender, DialogClosingEventArgs eventArgs)
        {
            if (eventArgs.Parameter is bool parameter &&
                parameter == false)
            {
                return;
            }

            using (var db = new CAKESTOREEntities())
            {
                var newCake = this._detailDialogViewModel.SelectedCake;
                db.CAKEs.Add(newCake);
                db.SaveChanges();
            };

            MainWindowViewModel.Instance.GetAutocompleteSource();
        }
        private void GetCakeItems()
        {
            this._cakeItems = new List <CakeItem>();

            using (var db = new CAKESTOREEntities())
            {
                var cakes = db.CAKEs.ToList();

                cakes.ForEach(c =>
                {
                    this._cakeItems.Add(new CakeItem
                    {
                        Id    = c.CAKE_ID,
                        Image = c.IMAGE,
                        Name  = c.CAKE_NAME
                    });
                });
            };
        }
        private void AddCateDialogClosingEventHandler(object sender, DialogClosingEventArgs eventArgs)
        {
            if (eventArgs.Parameter is bool parameter &&
                parameter == false)
            {
                return;
            }

            var tempIndex = this.SelectedIndex;

            using (var db = new CAKESTOREEntities())
            {
                var newCate = this._categoryDialogViewModel.SelectedCakeType;
                db.CAKE_TYPE.Add(newCate);
                db.SaveChanges();
            };

            GetCakeCategories(tempIndex);
            MainWindowViewModel.Instance.GetAutocompleteSource();
        }
        private void DeleteCakeOfCakeInOrderClosingHandler(object sender, DialogClosingEventArgs eventArgs)
        {
            if (eventArgs.Parameter is bool parameter &&
                parameter == false)
            {
                return;
            }

            //tính lại tổng giá
            var resultPrice = ORDER.TOTAL_PRICE;

            resultPrice       = resultPrice - _selectedItem.CAKE.PRICE * _selectedItem.NUMBER;
            ORDER.TOTAL_PRICE = resultPrice;

            using (var db = new CAKESTOREEntities())
            {
                //tính lại số bánh còn lại trong kho
                var cake             = db.CAKEs.FirstOrDefault(item => item.CAKE_ID == _selectedItem.CAKE_ID);
                var remaining_amount = cake.REMAINING_AMOUNT;
                remaining_amount = (int)(remaining_amount + _selectedItem.NUMBER);
            };
            ORDER.CAKE_IN_ORDERS.Remove(_selectedItem);
        }
示例#11
0
        private void GetChartDictinary()
        {
            this.ChartDictinary = new ObservableDictionary <string, SeriesCollection>();

            using (var db = new CAKESTOREEntities())
            {
                //Get orders list
                var ordersList = db.ORDERS.ToList();
                //Get date list from order list
                var dateList = ordersList.Select(o => o.DATE_CREATE.Value).ToList();
                //Get max date
                var maxDate = dateList.Max();
                //Get min date
                var minDate = dateList.Min();
                //Get year range (e.g 2019, 2020)
                var yearRange = GetYearRange(minDate, maxDate);

                if (yearRange.Count != 0)
                {
                    //For each year
                    yearRange.ForEach(y =>
                    {
                        // Get order list of that year
                        var ordersOfYearY = ordersList.Where(o => o.DATE_CREATE.Value.Year == y).ToList();

                        if (ordersOfYearY.Count != 0)
                        {
                            //A dictionary with key-value pair = <month, revenue of that month>
                            var orderDictionary = new Dictionary <int, double>();
                            //Initialize month of a year range
                            var months = Enumerable.Range(1, 12);

                            //For each month of a year
                            foreach (var month in months)
                            {
                                //Get order profit list of that month
                                var orderProfitOfThisMonthList = ordersOfYearY.Where(o => o.DATE_CREATE.Value.Month == month).Select(o => (double)o.TOTAL_PRICE).ToList();
                                //Calculate sum profit of that month
                                var profitOfThisMonth = orderProfitOfThisMonthList.Sum();
                                //Add to dictinary
                                orderDictionary.Add(month, profitOfThisMonth);
                            }

                            //A chart values for chart (expeted 12 double value corresponding to 12 month of year)
                            var chartValues = new ChartValues <double>();

                            //For each value in dictionary
                            foreach (var item in orderDictionary.Values)
                            {
                                //Add value to chart values
                                chartValues.Add(item);
                            }

                            //Initialize a seriessCollection corresponding to chart of that year
                            var seriesCollection = new SeriesCollection
                            {
                                //Initialize a column series corresponding to revenue of each month of a year
                                new ColumnSeries
                                {
                                    //Year
                                    Title = y.ToString(),
                                    //Chart values for each month of that year
                                    Values = chartValues
                                }
                            };

                            //Add to chart dictionary
                            this.ChartDictinary.Add(y.ToString(), seriesCollection);
                        }
                    });
                }
            };
            this.SelectedIndex = ChartDictinary.Count - 1;
        }
示例#12
0
        private void GetSeriesCollection()
        {
            this.SeriesCollection = new SeriesCollection();

            using (var db = new CAKESTOREEntities())
            {
                //Get orders list
                var ordersList = db.ORDERS.ToList();
                //Get cate name list
                var cateNameList = db.CAKE_TYPE.ToList();
                //Get orders in this date range
                var ordersToStatisticsList = ordersList.Where(o => IsDateInDateRange(o.DATE_CREATE.Value)).ToList();
                //A dictionary with key-value pair = <cake-type, revenue of that cake-type>
                var orderDictionary = new Dictionary <CAKE_TYPE, double>();

                //For each cate
                cateNameList.ForEach(cate =>
                {
                    //Get orders that contains cake type equals this cate
                    var orderContainsThisCateList = ordersToStatisticsList.Where(o => o.CAKE_IN_ORDERS.ToList().Any(c => c.CAKE.CAKE_TYPE == cate.TYPE_ID)).ToList();
                    //Get cake in orders Collection list from above orders
                    var cakeInOrdersCollectionList = orderContainsThisCateList.Select(o => o.CAKE_IN_ORDERS).ToList();
                    //Initialize cake in orders list that cotain cake equals this cate
                    var cakeInOrdersList = new List <CAKE_IN_ORDERS>();

                    //Get cake in orders list from above orders
                    cakeInOrdersCollectionList.ForEach(cakeInOrderCollection =>
                    {
                        foreach (var cakeInOrder in cakeInOrderCollection)
                        {
                            if (cakeInOrder.CAKE.CAKE_TYPE == cate.TYPE_ID)
                            {
                                cakeInOrdersList.Add(cakeInOrder);
                            }
                        }
                    });

                    //Initialize revenue list that cotain renenue from each cake in orders from above list
                    var revenueList = new List <double>();

                    // Calculate revenue list
                    cakeInOrdersList.ForEach(cakeInOrder =>
                    {
                        var cakePrice  = (double)cakeInOrder.CAKE.PRICE;
                        var cakeAmount = (int)cakeInOrder.NUMBER;
                        var proceeds   = cakePrice * cakeAmount;
                        revenueList.Add(proceeds);
                    });

                    //Get total proceeds of this cate
                    var sum = revenueList.Sum();
                    //Add to order dictinary
                    orderDictionary.Add(cate, sum);
                });

                foreach (var item in orderDictionary)
                {
                    this.SeriesCollection.Add(new PieSeries
                    {
                        Title  = item.Key.TYPE_NAME,
                        Values = new ChartValues <double> {
                            item.Value
                        },
                        LabelPoint = PointLabel
                    });
                }
            };
        }