コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        public List <ClicksResult> GetClickForElement(GetSingleElementMetricRequest input)
        {
            var metrics = _statsManager.GetClicksForOneEntitiesInType(input.EntityType, input.EntityId);

            return(StatsFilters.FilterClicksResult(metrics, input));
        }
コード例 #8
0
        public bool CanSendFeedBack(GetSingleElementMetricRequest input)
        {
            var metrics = _statsManager.GetMetricsForOneEntitiesInType(input.EntityType, input.EntityId);

            return(metrics.Any(a => a.StudentId == input.StudentId));
        }