public List <SubCategoriesList> GetIncomesFromCategoryGroupedBySubCategoryInRange()
        {
            List <SubCategoriesList> models = new List <SubCategoriesList>();

            var query = from item in AllOperations
                        where !item.isExpense
                        group item by item.Category into g
                        select new {
                Category      = g.Key,
                SubCategories = from stem in g
                                group stem.Cost by stem.CategoryGlobalId into gr
                                orderby gr.Sum() descending
                                select new {
                    SubCategoryId = gr.Key,
                    Cost          = gr.Sum()
                }
            };

            foreach (var item in query)
            {
                if (item.SubCategories.Count() <= 1)
                {
                    continue;
                }

                // Category category = CategoriesDal.GetCategoryByGlobalId(item.CategoryId);

                SubCategoriesList itemList = new SubCategoriesList {
                    Category = item.Category
                };

                decimal groupySum = item.SubCategories.Sum(i => i.Cost);

                foreach (var sitem in item.SubCategories)
                {
                    Category subCategory = _categoriesAndSubCategories.FirstOrDefault(category => category.GlobalId == sitem.SubCategoryId && category is SubCategory);//sitem.SubCategory;

                    if (subCategory != null)
                    {
                        itemList.List.Add(new ChartDataItem(
                                              (double)(sitem.Cost / groupySum),
                                              subCategory.Brush,
                                              subCategory.Name,
                                              (double)sitem.Cost
                                              ));
                    }
                    else
                    {
                        itemList.List.Add(new ChartDataItem(
                                              (double)(sitem.Cost / groupySum),
                                              item.Category.Brush,
                                              "Bez podkategorii",
                                              (double)sitem.Cost
                                              ));
                    }
                }

                models.Add(itemList);
            }

            return(models);
        }
        public List <SubCategoriesList> GetExpensesFromCategoryGroupedBySubCategoryInRange()
        {
            List <SubCategoriesList> models = new List <SubCategoriesList>();

            var query = from item in AllOperations
                        where item.isExpense
                        group item by item.Category into g
                        select new {
                Category      = g.Key,
                SubCategories = from stem in g
                                group stem.Cost by stem.CategoryGlobalId into gr
                                orderby gr.Sum() descending
                                select new {
                    SubCategoryId = gr.Key,
                    Cost          = gr.Sum()
                }
            };

            foreach (var item in query)
            {
                if (item.SubCategories.Count() <= 1)
                {
                    continue;
                }

                //     Category category = CategoriesDal.GetCategoryByGlobalId(item.CategoryId);

                SubCategoriesList itemList = new SubCategoriesList {
                    Category = item.Category
                };

                decimal groupySum = item.SubCategories.Sum(i => i.Cost);

                /*
                 * var subCategories = item.SubCategories.Where(i => i.Cost / groupySum > (decimal) 0.01);
                 * groupySum = subCategories.Sum(i => i.Cost);
                 */
                foreach (var sitem in item.SubCategories)
                {
                    Category subCategory = _categoriesAndSubCategories.FirstOrDefault(category => category.GlobalId == sitem.SubCategoryId && category is SubCategory);// sitem.SubCategory;//CategoriesDal.GetCategoryByGlobalId(sitem.SubCategoryId);

                    if (subCategory != null)
                    {
                        itemList.List.Add(new ChartDataItem(
                                              (double)(sitem.Cost / groupySum),
                                              subCategory.Brush,
                                              subCategory.Name,
                                              (double)sitem.Cost
                                              ));
                    }
                    else
                    {
                        itemList.List.Add(new ChartDataItem(
                                              (double)(sitem.Cost / groupySum),
                                              item.Category.Brush,
                                              new Windows.ApplicationModel.Resources.ResourceLoader().GetString("withoutSubCategory"),
                                              (double)sitem.Cost
                                              ));
                    }
                }

                models.Add(itemList);
            }

            return(models);
        }