public List <LocationBasedStatistics> GetLocationStatistics(DateTime startTime, DateTime endTime, Guid regionId, Guid ownerId, Guid codecTypeId) { var callHistories = _callHistoryRepository.GetCallHistoriesByDate(startTime, endTime); if (callHistories == null) { return(new List <LocationBasedStatistics>()); } var locations = new Dictionary <Guid, LocationBasedStatistics>(); var filter = new CallHistoryFilter(regionId, ownerId, codecTypeId); foreach (var callEvent in LocationCallEvent.GetOrderedEvents(callHistories, filter)) { if (!locations.ContainsKey(callEvent.LocationId)) { locations.Add(callEvent.LocationId, new LocationBasedStatistics { LocationId = callEvent.LocationId, LocationName = callEvent.LocationName }); } locations[callEvent.LocationId].AddEvent(callEvent, startTime, endTime); } var locationStatisticses = locations.Values.ToList(); AddMissingLocations(locationStatisticses, regionId); return(locationStatisticses.OrderBy(l => l.LocationName).ToList()); }
public IList <CallHistory> GetCallHistoriesByDate(DateTime startTime, DateTime endTime) { return(_internalRepository.GetCallHistoriesByDate(startTime, endTime)); }