private void buttonApplyFilters_Click(object sender, RoutedEventArgs e)
        {
            string id          = null;
            double?minPrice    = null;
            double?maxPrice    = null;
            var    groupByName = false;


            if ((bool)checkBoxCustomerId.IsChecked)
            {
                id = textBoxCustomerId.Text;
            }

            if ((bool)checkBoxPriceRange.IsChecked)
            {
                minPrice = longUpDownMinValue.Value;
                maxPrice = longUpDownMaxValue.Value;
            }

            if ((bool)checkBoxGroupByName.IsChecked)
            {
                groupByName = true;
            }

            try
            {
                SummaryRaportViewModel = DbService.GetRequestsRaportViewModel(id, minPrice, maxPrice, groupByName);
            }
            catch (System.NullReferenceException)
            {
                MessageBox.Show("Proszę wczytaj rekordy z zamówieniami");
            }
            if (groupByName != false)
            {
                var groupByService = new GroupByService();
                var itemsGroupBy   = groupByService.GroupBy(SummaryRaportViewModel.ListOfRequests);

                dataGridViewRequests.ItemsSource = itemsGroupBy;

                numberOfRequestsLabel.Content = "";
                numberOfAvgLabel.Content      = "";
                numberOfSumLabel.Content      = "";
            }
            else
            {
                dataGridViewRequests.ItemsSource = SummaryRaportViewModel.ListOfRequests;
                LoadInfoView();
            }
        }
Example #2
0
        public SummaryRaportViewModel GetRequestsRaportViewModel(string id, double?minPrice, double?maxPrice, bool groupByName)
        {
            var newList   = new List <Request>(Requests.ListOfRequests);
            var viewModel = new SummaryRaportViewModel();

            if (groupByName != false && id != null) //Group By and clientId fitler
            {
                newList = newList.Where(x => x.ClientId == id).GroupBy(x => x.Name)
                          .Select(x => new Request {
                    Name = x.Key, Quantity = x.Sum(y => y.Quantity)
                })
                          .ToList();

                viewModel.ListOfRequests = newList;
                return(viewModel);
            }

            if (groupByName != false) //Group By filter
            {
                newList = newList.GroupBy(x => x.Name)
                          .Select(x => new Request {
                    Name = x.Key, Quantity = x.Sum(y => y.Quantity)
                })
                          .ToList();

                viewModel.ListOfRequests = newList;
                return(viewModel);
            }

            if (id != null && minPrice != null && maxPrice != null) //filtr by Id and price range
            {
                newList = newList.FindAll(x => x.Price >= minPrice && x.Price <= maxPrice)
                          .Where(x => x.ClientId == id)
                          .ToList();

                viewModel.ListOfRequests = newList;
                return(viewModel);
            }

            if (id != null && minPrice != null) //filtr by Id and minPrice
            {
                newList = newList.FindAll(x => x.Price >= minPrice)
                          .Where(x => x.ClientId == id)
                          .ToList();

                viewModel.ListOfRequests = newList;
                return(viewModel);
            }

            if (id != null && maxPrice != null) //filtr by Id and maxPrice
            {
                newList = newList.FindAll(x => x.Price <= maxPrice)
                          .Where(x => x.ClientId == id)
                          .ToList();

                viewModel.ListOfRequests = newList;
                return(viewModel);
            }

            if (id != null) //filtr by Id
            {
                newList = newList.FindAll(x => x.ClientId == id).ToList();

                viewModel.ListOfRequests = newList;
                return(viewModel);
            }

            if (minPrice != null && maxPrice != null) //filtr by Price Range
            {
                newList = newList.FindAll(x => x.Price >= minPrice && x.Price <= maxPrice).ToList();
            }

            if (minPrice != null) //filr by minPrice
            {
                newList = newList.FindAll(x => x.Price >= minPrice).ToList();
            }

            if (maxPrice != null) //filtr by maxPrice
            {
                newList = newList.FindAll(x => x.Price <= maxPrice).ToList();
            }

            viewModel.ListOfRequests = newList;
            return(viewModel);
        }