public ActionResult GetDateBasedChartImage(DateBasedFilterType filterType, DateBasedChartType chartType, DateTime startDate, DateTime endDate, Guid filterId) { IList <DateBasedStatistics> stats; switch (filterType) { case DateBasedFilterType.Regions: stats = _statisticsManager.GetRegionStatistics(startDate.ToUniversalTime(), endDate.ToUniversalTime().AddDays(1.0), filterId); break; case DateBasedFilterType.SipAccounts: stats = _statisticsManager.GetSipStatistics(startDate.ToUniversalTime(), endDate.ToUniversalTime().AddDays(1.0), filterId); break; default: stats = _statisticsManager.GetCodecTypeStatistics(startDate.ToUniversalTime(), endDate.ToUniversalTime().AddDays(1.0), filterId); break; } var chart = new Chart(800, 600) .AddTitle(chartType == DateBasedChartType.NumberOfCalls ? Resources.Stats_Number_Of_Calls : Resources.Stats_Total_Call_Time_In_Minutes) .SetXAxis(title: Resources.Date) .AddSeries( chartType: "Column", xValue: stats.Select(s => s.Date.ToString("yyyy-MM-dd", CultureInfo.CreateSpecificCulture("sv-SE"))).ToArray(), yValues: stats.Select(s => chartType == DateBasedChartType.NumberOfCalls ? s.NumberOfCalls : s.TotaltTimeForCalls).ToArray()) ; return(File(chart.GetBytes("png"), "image/png")); }
public ActionResult GetDateBasedCsv(DateBasedFilterType filterType, DateTime startDate, DateTime endDate, Guid filterId) { IList <DateBasedStatistics> stats; switch (filterType) { case DateBasedFilterType.Regions: stats = _statisticsManager.GetRegionStatistics(startDate.ToUniversalTime(), endDate.ToUniversalTime().AddDays(1.0), filterId); break; case DateBasedFilterType.SipAccounts: stats = _statisticsManager.GetSipStatistics(startDate.ToUniversalTime(), endDate.ToUniversalTime().AddDays(1.0), filterId); break; default: stats = _statisticsManager.GetCodecTypeStatistics(startDate.ToUniversalTime(), endDate.ToUniversalTime().AddDays(1.0), filterId); break; } var csv = new StringBuilder(); csv.AddCsvValue(Resources.Date) .AddCsvSeparator() .AddCsvValue(Resources.Calls) .AddCsvSeparator() .AddCsvValue(Resources.Call_Time + "/" + Resources.Total) .AddCsvSeparator() .AddCsvValue(Resources.Call_Time + "/" + Resources.Average) .AddCsvSeparator() .AddCsvValue(Resources.Call_Time + "/" + Resources.Shortest) .AddCsvSeparator() .AddCsvValue(Resources.Call_Time + "/" + Resources.Longest) .AppendLine(); var svCulture = CultureInfo.CreateSpecificCulture("sv-SE"); foreach (var row in stats) { csv.AddCsvValue(row.Date.ToString("yyyy-MM-dd", svCulture)) .AddCsvSeparator() .AddCsvValue(row.NumberOfCalls) .AddCsvSeparator() .AddCsvValue(row.TotaltTimeForCalls, 0, svCulture) .AddCsvSeparator() .AddCsvValue(row.AverageTime, 0, svCulture) .AddCsvSeparator() .AddCsvValue(row.MinCallTime, 0, svCulture) .AddCsvSeparator() .AddCsvValue(row.MaxCallTime, 0, svCulture) .AppendLine(); } var encoding = Encoding.GetEncoding(1252); var prefix = filterType == DateBasedFilterType.CodecTypes ? Resources.Codec_Type : filterType == DateBasedFilterType.SipAccounts ? Resources.Sip_Accounts : Resources.Region; return(File(encoding.GetBytes(csv.ToString()), "text/csv", string.Format("{0}_{1:yyMMdd}_{2:yyMMdd}.csv", prefix, startDate, endDate))); }
public ActionResult GetDateBasedChart(DateBasedFilterType filterType, DateBasedChartType chartType, DateTime startDate, DateTime endDate, Guid filterId) { var model = new DateBasedChartModel { FilterType = filterType, ChartType = chartType, EndDate = endDate, FilterId = filterId, StartDate = startDate }; return(PartialView(model)); }