public PartialViewResult PredictAnalysis() { var currentIncome = _analysisModule.GetCurrentIncome(); var movingAverageForCurrentIncome = _analysisModule.GetMovingAverageForNextYear(3, currentIncome); for (int i = 1; i < 12; i++) { currentIncome[i] = Math.Round(currentIncome[i], 2); movingAverageForCurrentIncome[i] = Math.Round(movingAverageForCurrentIncome[i], 2); } var months = currentIncome.Select(x => x.Key).OrderBy(x => x).Select(x => Enum.GetName(typeof (Months), x)).ToArray(); var series = new List<Series> { new Series { Name = "Przychód bieżący", Data = new Data(currentIncome.Select(x => x.Value).Cast<object>().ToArray()) }, new Series { Name = "Przychód przewidywany", Data = new Data(movingAverageForCurrentIncome.Select(x => x).Cast<object>().ToArray()) } }; var viewModel = new AnalysisChartModel { Charts = new List<Highcharts> { LineChart("Przewidywany miesięczny przychód bazujący na bieżącym", 1300, 400, months, series.ToArray(), "chart1", "Dochód") } }; return PartialView("_AnalysisChartSection", viewModel); }
public PartialViewResult ProductAnalysis() { var top5products = _analysisModule.GetTopProducts(5); var top5worstProducts = _analysisModule.GetTopWorstProducts(5); var top5Data = new List<object[]>(); var top5WorstData = new List<object[]>(); var top5Sum = 0; var top5Total = top5products.Sum(x => x.Value); var top5WorstTotal = top5worstProducts.Sum(x => x.Value); var top5WorstSum = 0; foreach (var product in top5products) { var obj = new object[2]; obj[0] = product.Key; obj[1] = (int) Math.Round((double) (100*product.Value)/top5Total); top5Data.Add(obj); top5Sum += (int) Math.Round((double) (100*product.Value)/top5Total); } if (top5Sum < 100) { var lastItem = top5Data.LastOrDefault(); lastItem[1] = Convert.ToInt32(lastItem[1]) + (100 - top5Sum); } foreach (var product in top5worstProducts) { var obj = new object[2]; obj[0] = product.Key; obj[1] = (int) Math.Round((double) (100*product.Value)/top5WorstTotal); top5WorstData.Add(obj); top5WorstSum += (int) Math.Round((double) (100*product.Value)/top5WorstTotal); } if (top5WorstSum < 100) { var lastItem = top5WorstData.LastOrDefault(); lastItem[1] = Convert.ToInt32(lastItem[1]) + (100 - top5WorstSum); } var viewModel = new AnalysisChartModel { Charts = new List<Highcharts>() { PieChart("Top 5 najczęściej kupowanych produktów", top5Data, 1300, 400, "chart1"), PieChart("Top 5 najgorzej sprzedających się produktów", top5WorstData, 1300, 400, "chart2") } }; return PartialView("_AnalysisChartSection", viewModel); }
public PartialViewResult OriginAnalysis() { var ordersByCity = _analysisModule.OrderCountByCities(); var incomeByCity = _analysisModule.IncomeByCity(); var totalIncome = incomeByCity.Sum(x => x.Value); var incomeChartData = new List<object[]>(); var cities = ordersByCity.Select(x => x.Key).OrderBy(x => x).ToArray(); var orderByCityData = ordersByCity.Select(x => x.Value).Cast<object>().ToArray(); var viewModel = new AnalysisChartModel { CityIncome = new Dictionary<string, int>(), Charts = new List<Highcharts>() }; var incomeSum = 0; foreach (var income in incomeByCity) { var obj = new object[2]; obj[0] = income.Key; obj[1] = (int) Math.Round((double) (100*income.Value)/totalIncome); incomeChartData.Add(obj); viewModel.CityIncome.Add(income.Key, income.Value); incomeSum += (int) Math.Round((double) (100*income.Value)/totalIncome); } if (incomeSum < 100) { var lastItem = incomeChartData.LastOrDefault(); lastItem[1] = Convert.ToInt32(lastItem[1]) + (100 - incomeSum); } viewModel.CityIncome.Add("Zysk całkowity", totalIncome); viewModel.Charts.Add(ColumnChart("Ilość dokonanych zamówień względem miejscowości", "Ilość dokonanych zamówień", cities, orderByCityData, 1300, 400, "Ilość", "chart1")); viewModel.Charts.Add(PieChart("Procentowy dochów wygenerowany w poszczególnych miejscowościach", incomeChartData, 1300, 400, "chart2")); return PartialView("_AnalysisChartSection", viewModel); }