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); }
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); } }
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); }
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); }
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)); }
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); }
public void ReturnValidId() { var item = new CategorySummary(TestData.CategoryId, TestData.Cultures.ToDictionary(c => c, c => c.EnglishName), "en"); Assert.AreEqual(TestData.CategoryId, item.Id); }
public void WhenCreatingNewNamesCantBeEmpty() { var item = new CategorySummary(TestData.CategoryId, new Dictionary <CultureInfo, string>(), "en"); Assert.IsNotNull(item); }
public void WhenCreatingNewNamesCantBeNull() { var item = new CategorySummary(TestData.CategoryId, null, "en"); Assert.IsNotNull(item); }
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); }