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 <ActionResult <FinanceDto> > GetAsync(int id) { return(await _financeService.GetAsync(id)); }