Пример #1
0
        public async Task <CategorySummary> GetSummaryByCategoryIdAsync(int id)
        {
            var category = await _categoryRepository.GetByIdAsync(id);

            if (category != null)
            {
                var expenses = await _expenseRepository.GetByCategoryIdAsync(id);

                var             thisMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                CategorySummary summary   = new CategorySummary
                {
                    Category         = category,
                    TotalSpentAmount = expenses
                                       .Select(x => x.Amount)
                                       .Sum(),
                    TotalBoughtCount = expenses
                                       .ToList()
                                       .Count,
                    ThisMonthSpentAmount = expenses
                                           .Where(x => x.Date >= thisMonth)
                                           .Select(x => x.Amount)
                                           .Sum(),
                    ThisMonthBoughtCount = expenses
                                           .Where(x => x.Date >= thisMonth)
                                           .ToList()
                                           .Count
                };
                return(summary);
            }
            return(null);
        }
        private static GetSummaryByCarIdResponse GenerateGetSummaryByCarId(IList <Expense> expenses)
        {
            var response = new GetSummaryByCarIdResponse {
                ExpensesCount = expenses.Count()
            };

            foreach (var expense in expenses)
            {
                response.ExpensesTotalAmount += expense.Amount;

                var categorySummary =
                    response.CategoriesSummary.SingleOrDefault(c => c.CategoryName == expense.Category);

                if (categorySummary == null)
                {
                    var newCategorySummary = new CategorySummary
                    {
                        CategoryName = expense.Category, CategoryExpensesCount = 1, CategoryTotalAmount = expense.Amount
                    };
                    response.CategoriesSummary.Add(newCategorySummary);
                }
                else
                {
                    categorySummary.CategoryExpensesCount++;
                    categorySummary.CategoryTotalAmount += expense.Amount;
                }
            }

            return(response);
        }
Пример #3
0
        public CategorySummary GetCategorySummariesNew(string category)
        {
            var categoryCountSql = @"Select count(*)  
                        from Show as sh
                        join Category as c on sh.CategoryId = c.CategoryId
                        where CategoryName = @Category";

            var showSql = @"select top(3) ShowId, ShowName  
                        from Show as sh
                        join Category as c on sh.CategoryId = c.CategoryId
                        where CategoryName = @Category
                        order by ShowName";

            var parameters = new { Category = category };

            using (var db = new SqlConnection(ConnectionString))
            {
                var shows         = db.Query <ShowNameOnly>(showSql, parameters);
                var categoryCount = db.QueryFirstOrDefault <int>(categoryCountSql, parameters);

                var categorySummary = new CategorySummary
                {
                    CategoryName  = category,
                    CategoryTotal = categoryCount,
                    ShowList      = shows.ToList()
                };

                return(categorySummary);
            }
        }
Пример #4
0
        public List <CategorySummary> MainCategories()
        {
            var availableCategories = GetAvailableCategories();
            var mainCategories      = availableCategories.Where(x => x.ParentCategoryId == null).ToList();
            var expenses            = context.Expenses.Where(x => x.UserId == userId && x.Date >= dateFrom && x.Date <= dateTo).ToList();

            List <CategorySummary> categorySummaries = new List <CategorySummary>();

            foreach (var item in mainCategories)
            {
                CategoryTree tree                  = new CategoryTree(item.Id, availableCategories);
                var          catAndSubcatsIds      = tree.Root.ToList().Select(x => x.Id).ToList();                         //id of main category and id of all subcategories of main category
                var          catAndSubcatsExpenses = expenses.Where(x => catAndSubcatsIds.Contains(x.CategoryId)).ToList(); //expenses in main category and in all subcategories of main category

                if (catAndSubcatsExpenses.Count() == 0)
                {
                    continue;
                }

                CategorySummary summary = new CategorySummary(tree.Root, catAndSubcatsExpenses);

                categorySummaries.Add(summary);
            }

            categorySummaries = categorySummaries.OrderByDescending(x => x.ExpensesCost).ToList();

            return(categorySummaries);
        }
Пример #5
0
        public void ReturnInvalidName()
        {
            var item = new CategorySummary(TestData.CategoryId, TestData.Cultures.ToDictionary(c => c, c => c.EnglishName), "en");
            var name = item.GetName(new CultureInfo("gl"));

            Assert.AreEqual(3, item.Names.Count);
            Assert.IsNull(name);
        }
Пример #6
0
        public void ReturnValidName()
        {
            var item = new CategorySummary(TestData.CategoryId, TestData.Cultures.ToDictionary(c => c, c => c.EnglishName), "en");
            var name = item.GetName(TestData.Culture);

            Assert.AreEqual(3, item.Names.Count);
            Assert.IsTrue(!string.IsNullOrEmpty(name));
        }
Пример #7
0
        public async Task <IEnumerable <CategorySummary> > AllSummariesAsync()
        {
            // get all categories & expenses
            var myCategories = await _categoryRepository.GetAllAsync();

            var myExpenses = await _expenseRepository.GetAllAsync();

            // generate summaries
            List <CategorySummary> summaries = new List <CategorySummary>();

            foreach (var category in myCategories)
            {
                var thisMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                var summary   = new CategorySummary
                {
                    Category         = category,
                    TotalSpentAmount = myExpenses
                                       .Where(x => x.CategoryId == category.Id)
                                       .Select(x => x.Amount)
                                       .Sum(),
                    TotalBoughtCount = myExpenses
                                       .Where(x => x.CategoryId == category.Id)
                                       .ToList()
                                       .Count,
                    ThisMonthSpentAmount = myExpenses
                                           .Where(x => x.CategoryId == category.Id)
                                           .Where(x => x.Date >= thisMonth)
                                           .Select(x => x.Amount)
                                           .Sum(),
                    ThisMonthBoughtCount = myExpenses
                                           .Where(x => x.CategoryId == category.Id)
                                           .Where(x => x.Date >= thisMonth)
                                           .ToList()
                                           .Count
                };
                summaries.Add(summary);
            }
            return(summaries);
        }
Пример #8
0
        public void ReturnValidId()
        {
            var item = new CategorySummary(TestData.CategoryId, TestData.Cultures.ToDictionary(c => c, c => c.EnglishName), "en");

            Assert.AreEqual(TestData.CategoryId, item.Id);
        }
Пример #9
0
        public void WhenCreatingNewNamesCantBeEmpty()
        {
            var item = new CategorySummary(TestData.CategoryId, new Dictionary <CultureInfo, string>(), "en");

            Assert.IsNotNull(item);
        }
Пример #10
0
        public void WhenCreatingNewNamesCantBeNull()
        {
            var item = new CategorySummary(TestData.CategoryId, null, "en");

            Assert.IsNotNull(item);
        }
Пример #11
0
        public void WhenCreatingNewIdCantBeEmpty()
        {
            var item = new CategorySummary(null, TestData.Cultures.ToDictionary(c => c, c => string.Empty), "en");

            Assert.IsNotNull(item);
        }
        /// <summary>
        /// Creates a <see cref="HaushaltsRechner.Business.Reporting.CategorySummaryCollection"/>
        /// for the given <see cref="HaushaltsRechner.Business.SearchParameter.ReportingSearchParameter"/>.
        /// </summary>
        /// <param name="para">The parameter.</param>
        /// <returns></returns>
        public static CategorySummaryCollection GetCategorySummaray(ReportingSearchParameter para)
        {
            var catSumList = new CategorySummaryCollection();

            using (var en = new HaushaltsrechnerEntities())
            {
                //Account
                var movements = en.MOVEMENT.AsQueryable();

                if (para.Accounts.Count > 0)
                {
                    movements = movements.Where(
                        m => para.Accounts.Contains(m.ACCOUNT_ID));
                }

                //Reason
                if (para.Reasons.Count > 0)
                {
                    movements = movements.Where(
                        m => para.Reasons.Contains(m.REASON_ID));
                }

                //DirectionType
                switch (para.DirectionType)
                {
                case ReportingSearchParameterDirectionType.Incomming:
                    movements = movements.Where(
                        m => m.AMOUNT >= 0);
                    break;

                case ReportingSearchParameterDirectionType.Outgoing:
                    movements = movements.Where(
                        m => m.AMOUNT < 0);
                    break;
                }

                //DateAdded
                if (para.DateFrom != DateTime.MinValue)
                {
                    movements = movements.Where(
                        m => m.DATE_ADDED >= para.DateFrom);
                }

                if (para.DateTo != DateTime.MinValue)
                {
                    var date = para.EditTo.AddDays(23.99);
                    movements = movements.Where(
                        m => m.DATE_ADDED <= date);
                }

                //DateEdited
                if (para.EditFrom != DateTime.MinValue)
                {
                    movements = movements.Where(
                        m => m.DATE_EDIT >= para.EditFrom);
                }

                if (para.EditTo != DateTime.MinValue)
                {
                    var date = para.EditTo.AddDays(23.99);
                    movements = movements.Where(
                        m => m.DATE_EDIT <= date);
                }

                //Amount
                if (para.AmountFrom != decimal.MinValue)
                {
                    movements = movements.Where(
                        m => m.AMOUNT >= para.AmountFrom);
                }

                if (para.AmountTo != decimal.MinValue)
                {
                    movements = movements.Where(
                        m => m.AMOUNT <= para.AmountTo);
                }

                var categories = movements.Select(m => m.CATEGORY).Distinct();

                foreach (var cat in categories)
                {
                    var movInCat = movements.Where(
                        m =>
                        m.CATEGORY_ID == cat.ID);

                    var movInCatsGridMovementList = new List <GridMovement>();

                    foreach (var m in movInCat)
                    {
                        movInCatsGridMovementList.Add(new GridMovement
                        {
                            ID           = m.ID,
                            Amount       = m.AMOUNT,
                            CategoryName = m.CATEGORY.NAME,
                            ReasonText   = m.REASON.TEXT,
                            UserName     = m.USER.NAME,
                            AccountName  = m.ACCOUNT.NAME,
                            DateAdded    = m.DATE_ADDED.ToShortDateString(),
                            DateEdit     = m.DATE_EDIT.HasValue ? m.DATE_EDIT.Value.ToShortDateString() : string.Empty,
                            Message      = m.MESSAGE,
                            CategoryID   = m.CATEGORY_ID,
                            ReasonID     = m.REASON_ID,
                            AccountID    = m.ACCOUNT_ID
                        });
                    }

                    var catSum = new CategorySummary(cat.ID, cat.NAME, movInCatsGridMovementList);
                    catSumList.Add(catSum);
                }
            }
            return(catSumList);
        }