public async Task <HttpResponseMessage> FinancesChartAsync(MonthComparisonChartRequestDTO request) { var dictionary = new Dictionary <string, MonthComparisonChartVM[]> { { "Finances Breakdown", (await financeService.GetFinanceTotalsByMonth(request)).ToArray() } }; var results = dictionary.Values.ToList(); var summaries = new List <ChartSummaryVM> { new ChartSummaryVM { Title = "Finances Breakdown", AveragedDaily = Utils.ChartsHeaderTitle(results[0], ChartHeaderTitleType.Daily), AveragedMonthly = Utils.ChartsHeaderTitle(results[0], ChartHeaderTitleType.Monthly), TotalSpent = Utils.ChartsHeaderTitle(results[0], ChartHeaderTitleType.Total), } }; return(Request.CreateResponse(HttpStatusCode.OK, new ChartVM { Labels = Utils.ChartLabels(results), Summary = summaries, Data = dictionary })); }
public async Task <HttpResponseMessage> IncomesByCategoryChart(MonthComparisonChartRequestDTO request) { var isSecondCat = request.SecondCatId.HasValue && request.SecondCatId != 0 && request.SecondCatId != 9999 ? true : false; var catId = isSecondCat ? request.SecondCatId.Value : request.CatId; var catName = await baseService.GetCategoryName(catId); var dictionary = new Dictionary <string, MonthComparisonChartVM[]>() { { catName, (await incomeService.GetIncomesByCategoryAndMonthAsync(request.DateFilter, catId, isSecondCat)).ToArray() } }; var results = dictionary.Values.ToList(); if (!results[0].Any()) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "No results")); } string secondCategory = string.IsNullOrEmpty(results[0].First().SecondCategory) ? "" : $"- ({results[0].First().SecondCategory})"; var summary = new List <ChartSummaryVM>() { new ChartSummaryVM { Title = string.Format("{0} Chart for {1} {2}", "Incomes", results[0].First().Category, secondCategory), AveragedDaily = Utils.ChartsHeaderTitle(results[0], ChartHeaderTitleType.Daily), AveragedMonthly = Utils.ChartsHeaderTitle(results[0], ChartHeaderTitleType.Monthly), TotalSpent = Utils.ChartsHeaderTitle(results[0], ChartHeaderTitleType.Total) } }; if (request.SecondCatId.HasValue && request.SecondCatId.Value == 9999) { int secondTypeId = await baseService.GetSecondTypeId(catId); var categories = await baseService.GetAllCategories((CategoryType)secondTypeId, false); if (categories.Any()) { foreach (var cat in categories) { dictionary.Add(cat.Name, (await incomeService.GetIncomesByCategoryAndMonthAsync(request.DateFilter, cat.Id, isSecondCat: true)).ToArray()); } } dictionary.Remove(catName); } return(Request.CreateResponse(HttpStatusCode.OK, new ChartVM { Summary = summary, Labels = Utils.ChartLabels(results), Data = dictionary })); }
public async Task <HttpResponseMessage> IncomeExpenseComparisonChart(MonthComparisonChartRequestDTO request) { var summaries = new List <ChartSummaryVM>() { new ChartSummaryVM { Title = "Spending Summary" }, new ChartSummaryVM { Title = "Income Summary" }, new ChartSummaryVM { Title = "Savings Summary" } }; var datasets = new Dictionary <string, MonthComparisonChartVM[]> { { summaries[0].Title, (await financeService.GetIncomeExpenseTotalsByMonth(request.DateFilter)).Where(x => x.Type == CategoryType.Spendings).ToArray() }, { summaries[1].Title, (await financeService.GetIncomeExpenseTotalsByMonth(request.DateFilter)).Where(x => x.Type == CategoryType.Income).ToArray() }, { summaries[2].Title, (await financeService.GetIncomeExpenseTotalsByMonth(request.DateFilter)).Where(x => x.Type == CategoryType.Savings).ToArray() } }; var results = datasets.Values.ToList(); var labels = Utils.ChartLabels(results); int idx = 0; foreach (var summary in summaries) { summaries[idx].AveragedDaily = Utils.ChartsHeaderTitle(results[idx], ChartHeaderTitleType.Daily); summaries[idx].AveragedMonthly = Utils.ChartsHeaderTitle(results[idx], ChartHeaderTitleType.Monthly); summaries[idx].TotalSpent = Utils.ChartsHeaderTitle(results[idx], ChartHeaderTitleType.Total); idx++; } ; return(Request.CreateResponse(HttpStatusCode.OK, new ChartVM { Labels = labels, Summary = summaries, Data = datasets })); }
public async Task <IEnumerable <MonthComparisonChartVM> > GetFinanceTotalsByMonth(MonthComparisonChartRequestDTO request) { string sqlTxt = $@" SELECT CONVERT(CHAR(7), Date, 120) as YearMonth, DATENAME(month, Date) AS MonthName, SUM(Amount) as 'Total' FROM Spendings s INNER JOIN {TABLE} f ON f.Id = s.FinanceId WHERE {Utils.FilterDateSql(request.DateFilter)} GROUP BY CONVERT(CHAR(7), Date, 120) , DATENAME(month, Date) ORDER BY YearMonth"; using (var sql = dbConnectionFactory()) { return((await sql.QueryAsync <MonthComparisonChartVM>(sqlTxt)).ToArray()); } }
public async Task <HttpResponseMessage> SpendingsByCategoryChart(MonthComparisonChartRequestDTO request) { var isSecondCat = request.SecondCatId.HasValue && !request.IsFinance && request.SecondCatId != 0 && request.SecondCatId != 9999 ? true : false; var catId = isSecondCat ? request.SecondCatId.Value : request.CatId; var catName = request.IsFinance ? (await financeService.GetAsync(catId)).Name : await baseService.GetCategoryName(catId); var dictionary = new Dictionary <string, MonthComparisonChartVM[]> { { catName, (await spendingService.GetSpendingsByCategoryAndMonthAsync(request.DateFilter, catId, isSecondCat, request.IsFinance)).ToArray() } }; var results = dictionary.Values.ToList(); if (!results[0].Any()) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "No results")); } string secondCategory = !isSecondCat ? "" : $"- ({results[0].First().SecondCategory})"; var summaries = new List <ChartSummaryVM> { new ChartSummaryVM { Title = string.Format("{0} Chart for {1} {2}", "Spendings", results[0].First().Category, secondCategory), AveragedDaily = Utils.ChartsHeaderTitle(results[0], ChartHeaderTitleType.Daily), AveragedMonthly = Utils.ChartsHeaderTitle(results[0], ChartHeaderTitleType.Monthly), TotalSpent = Utils.ChartsHeaderTitle(results[0], ChartHeaderTitleType.Total) } }; // make subcats datasets if (request.SecondCatId.HasValue && request.SecondCatId.Value == 9999) { int secondTypeId = await baseService.GetSecondTypeId(catId); var categories = await baseService.GetAllCategories((CategoryType)secondTypeId, false); if (categories.Any()) { foreach (var cat in categories) { dictionary.Add(cat.Name, (await spendingService.GetSpendingsByCategoryAndMonthAsync(request.DateFilter, cat.Id, isSecondCat: true, isFinance: false)).ToArray()); } } dictionary.Remove(catName); } // if fuel cat then check fuel in ds2 if (request.CatId == 1 && request.SecondCatId == 28) { request.DateFilter.DateField = "PayDate"; string amzVanFuelInLabel = "AMZ Fleet Van Fuel In"; dictionary.Add(amzVanFuelInLabel, (await cnwService.GetFuelInByMonthAsync(request.DateFilter)).ToArray()); summaries.Add(new ChartSummaryVM { Title = amzVanFuelInLabel, AveragedDaily = Utils.ChartsHeaderTitle(dictionary[amzVanFuelInLabel], ChartHeaderTitleType.Daily), AveragedMonthly = Utils.ChartsHeaderTitle(dictionary[amzVanFuelInLabel], ChartHeaderTitleType.Monthly), TotalSpent = Utils.ChartsHeaderTitle(dictionary[amzVanFuelInLabel], ChartHeaderTitleType.Total) }); } return(Request.CreateResponse(HttpStatusCode.OK, new ChartVM { Labels = Utils.ChartLabels(results), Summary = summaries, Data = dictionary } )); }
public async Task <IEnumerable <MonthComparisonChartVM> > GetFinanceTotalsByMonth(MonthComparisonChartRequestDTO request) { return(await financeRepository.GetFinanceTotalsByMonth(request)); }