private List <MetricsResult> GetFilteredResultForStats(IQueryable <MetricElement> metricElements, GetSingleElementMetricRequest input) { var filteredDate = DateHelper.GetFilteredDate(input.Filter); var result = metricElements.Where(a => a.CreationTime > filteredDate); return(StatsFilters.FilterMetricsResult(result, input)); }
public List <MetricsResult> GetMetricsForElement(GetSingleElementMetricRequest input) { if (string.IsNullOrEmpty(input.Filter)) { input.Filter = "sevdays"; } var metrics = _statsManager.GetMetricsForOneEntitiesInType(input.EntityType, input.EntityId); return(input.Filter == "all" ? StatsFilters.FilterMetricsResult(metrics, input) : GetFilteredResultForStats(metrics, input)); }
public static List <MetricsResult> FilterMetricsResult(IQueryable <MetricElement> metrics, GetSingleElementMetricRequest input) { var result = new List <MetricsResult>(); if (input.EndDate.HasValue && input.StartDate.HasValue) { metrics = DateHelper <MetricElement> .GetDateFilteredResult(metrics, input.StartDate.Value, input.EndDate.Value, input.ByDay); } if (input.ByDay) { var query = metrics.GroupBy(a => new { a.CreationTime.Year, a.CreationTime.Month, a.CreationTime.Day }) .Select(i => new { i.Key.Year, i.Key.Month, i.Key.Day, i }); foreach (var element in query.ToList()) { var metricsResult = new MetricsResult { Date = new DateTime(element.Year, element.Month, element.Day).ToString("dd-MMMM-yyyy"), ElementsDtos = element.i.Select(a => a.MapTo <MetricDto>()).ToList() }; result.Add(metricsResult); } return(result); } else { var query = metrics.GroupBy(a => new { a.CreationTime.Year, a.CreationTime.Month }) .Select(i => new { i.Key.Year, i.Key.Month, i }); foreach (var element in query.ToList()) { var metricsResult = new MetricsResult { Date = new DateTime(element.Year, element.Month, 1).ToString("MMMM-yyyy"), ElementsDtos = element.i.Select(a => a.MapTo <MetricDto>()).ToList() }; result.Add(metricsResult); } return(result); } }
public List <NotificationsResult> GetNotificationsStatsForElement(GetSingleElementMetricRequest input) { if (string.IsNullOrEmpty(input.Filter)) { input.Filter = "sevdays"; } var phoneNotifications = _phoneNotificationsRepository.GetAllIncluding(a => a.SendNotificationsStatuses) .Where(a => a.AssignedTo == input.EntityType && a.AssignedToId == input.EntityId); return(input.Filter == "all" ? StatsFilters.FilterNotificationStats(phoneNotifications, input) : GetFilteredResultForStats(phoneNotifications, input)); }
public static List <NotificationsResult> FilterNotificationStats(IQueryable <PhoneNotification> phoneNotifications, GetSingleElementMetricRequest input) { var result = new List <NotificationsResult>(); var list = phoneNotifications.ToList(); foreach (var phoneNotification in list) { if (phoneNotification == null) { continue; } var phoneStatuses = phoneNotification.SendNotificationsStatuses; IEnumerable <SendNotificationsStatus> phoneStatusesList; if (input.EndDate.HasValue && input.StartDate.HasValue) { phoneStatusesList = DateHelper <SendNotificationsStatus> .GetDateFilteredResult(phoneStatuses, input.StartDate.Value, input.EndDate.Value, input.ByDay); } else { phoneStatusesList = phoneStatuses.ToList(); } if (input.ByDay) { var query = phoneStatusesList.GroupBy(a => new { a.CreationTime.Year, a.CreationTime.Month, a.CreationTime.Day }) .Select(i => new { i.Key.Year, i.Key.Month, i.Key.Day, i }); foreach (var element in query.ToList()) { var metricsResult = new NotificationsResult { Date = new DateTime(element.Year, element.Month, element.Day).ToString("dd-MMMM-yyyy"), SeenCount = element.i.Count(a => a.Readed), UnseenCount = element.i.Count(a => !a.Readed) }; result.Add(metricsResult); } } else { var query = phoneStatusesList.GroupBy(a => new { a.CreationTime.Year, a.CreationTime.Month }) .Select(i => new { i.Key.Year, i.Key.Month, i }); foreach (var element in query.ToList()) { var metricsResult = new NotificationsResult { Date = new DateTime(element.Year, element.Month, 1).ToString("MMMM-yyyy"), SeenCount = element.i.Count(a => a.Readed), UnseenCount = element.i.Count(a => !a.Readed && a.Sent), }; result.Add(metricsResult); } } } return(result); }
private List <NotificationsResult> GetFilteredResultForStats(IQueryable <PhoneNotification> phoneNotifications, GetSingleElementMetricRequest input) { var filteredDate = DateHelper.GetFilteredDate(input.Filter); var result = phoneNotifications.Where(a => a.CreationTime > filteredDate); return(StatsFilters.FilterNotificationStats(result, input)); }
public List <ClicksResult> GetClickForElement(GetSingleElementMetricRequest input) { var metrics = _statsManager.GetClicksForOneEntitiesInType(input.EntityType, input.EntityId); return(StatsFilters.FilterClicksResult(metrics, input)); }
public bool CanSendFeedBack(GetSingleElementMetricRequest input) { var metrics = _statsManager.GetMetricsForOneEntitiesInType(input.EntityType, input.EntityId); return(metrics.Any(a => a.StudentId == input.StudentId)); }