private static List <Dictionary <string, string> > GetWijmoCallGrid() { if (AllCalls.Any()) { var calls = AllCalls.OrderByDescending(p => p.DateCreated).Select(activeCall => new Dictionary <string, string> { { "Number", CensorPhoneNumber(activeCall.From) }, { "Status", GetCallStatus(activeCall) }, { "Duration", string.Format("{0} seconds", GetCallDuration(activeCall)) }, { "Date", activeCall.DateCreated.ToString() }, { "City", activeCall.City }, { "State", activeCall.State }, { "Zip Code", activeCall.ZipCode }, { "Country", activeCall.Country } }); return(calls.ToList()); } else { return(new List <Dictionary <string, string> >()); } }
public static void AddToLog(string sid, string logText) { if (Log == null) { Log = new List <LogItem>(); } Log.Add(new LogItem() { PhoneNumber = CensorPhoneNumber(AllCalls.Find(p => p.Sid == sid).From), LogText = logText, Date = DateTime.Now }); }
private static void BroadcastCallsPerMinute() { var context = GlobalHost.ConnectionManager.GetHubContext("DashboardHub"); var callsInPastFive = AllCalls.Where(p => (DateTime.Now - p.DateCreated).Minutes <= 5).OrderByDescending(p => p.DateCreated); List <WijLineChartSeriesItem> callList = new List <WijLineChartSeriesItem>(); foreach (var call in callsInPastFive) { var a = callList.FirstOrDefault(); if (a == null) { callList.Add(new WijLineChartSeriesItem() { label = "times", legendEntry = false, fitType = "spline", data = new xyObject() { x = new List <string>(), y = new List <int>() } }); // get latest time DateTime maxTime = DateTime.UtcNow; for (DateTime current = maxTime; (maxTime - current).Minutes <= 5; current = current.AddMinutes(-1)) { callList.FirstOrDefault().data.x.Add(current.ToShortTimeString()); callList.FirstOrDefault().data.y.Add(0); } } a = callList.FirstOrDefault(); if (a.data.x.Contains(call.DateCreated.ToShortTimeString())) { int index = a.data.x.IndexOf(call.DateCreated.ToShortTimeString()); a.data.x[index] = call.DateCreated.ToShortTimeString(); a.data.y[index]++; } else { a.data.x.Add(call.DateCreated.ToShortTimeString()); a.data.y.Add(1); } } context.Clients.updateCallsPerMinute(callList.OrderBy(p => p.data.x)); }
private static void BroadcastAreaCodes() { var context = GlobalHost.ConnectionManager.GetHubContext("DashboardHub"); var areaCodeCounts = new Dictionary <string, int>(); foreach (var areaCode in AllCalls.OrderByDescending(p => p.DateCreated).Select(call => ExtractAreaCode(call.From))) { if (areaCodeCounts.ContainsKey(areaCode)) { areaCodeCounts[areaCode] += 1; } else { areaCodeCounts[areaCode] = 1; } } List <WijPieChartSeriesItem> areaCodeList; if (areaCodeCounts.Any()) { areaCodeList = areaCodeCounts.Select(keyValuePair => new WijPieChartSeriesItem() { data = keyValuePair.Value, label = keyValuePair.Key, legendEntry = true }).ToList(); } else { areaCodeList = new List <WijPieChartSeriesItem>() { new WijPieChartSeriesItem() { data = 1, label = "None", legendEntry = false } }; } context.Clients.updateAreaCodeChart(areaCodeList); }