public List <LearnerPeriodStatsBoxToken> GetLearnerPeriodStats(ReportEnums.ePeriodSelectionKinds period)
        {
            try
            {
                var reportPeriod   = PeriodSelection2DateRange(period);
                var previousPeriod = Period2Previous(period);

                using (var context = new lfeAuthorEntities())
                {
                    var totals = context.tvf_FACT_DASH_GetLearnerPeriodStats(reportPeriod.from, reportPeriod.to).FirstOrDefault();

                    if (totals == null)
                    {
                        return(new List <LearnerPeriodStatsBoxToken>());
                    }

                    var previousTotals = context.tvf_FACT_DASH_GetLearnerPeriodStats(previousPeriod.from, previousPeriod.to).FirstOrDefault();

                    var avgLogin     = ReportEnums.eStatsTypes.AvgLearnerLogin.Type2LearnerPeriodStatsBoxToken(0, totals.AvgLearnerLogin.FormatDecimal(2), previousTotals != null ? previousTotals.AvgLearnerLogin.FormatDecimal(2) : 0);
                    var buyCompltete = ReportEnums.eStatsTypes.PurchaseComplete.Type2LearnerPeriodStatsBoxToken(2, totals.TotalPurchaseComplete, previousTotals != null ? previousTotals.TotalPurchaseComplete: 0);

                    decimal avgWatched     = totals.TotalCoursesWatched > 0 ? totals.TotalVideosWatched / totals.TotalCoursesWatched : 0;
                    decimal prevAvgWatched = previousTotals != null ? (previousTotals.TotalCoursesWatched > 0 ? previousTotals.TotalVideosWatched / previousTotals.TotalCoursesWatched : 0) : 0;

                    var list = new List <LearnerPeriodStatsBoxToken>
                    {
                        ReportEnums.eStatsTypes.ActiveLearners.Type2LearnerPeriodStatsBoxToken(1, totals.TotalActiveLearners, previousTotals != null ? previousTotals.TotalActiveLearners : 0, avgLogin),
                        ReportEnums.eStatsTypes.VideoPreviewWatched.Type2LearnerPeriodStatsBoxToken(2, totals.TotalVideoPreveiwWatched, previousTotals != null ? previousTotals.TotalVideoPreveiwWatched : 0),
                        ReportEnums.eStatsTypes.CoursePreviewEntered.Type2LearnerPeriodStatsBoxToken(3, totals.TotalCoursePreviewEntered, previousTotals != null ? previousTotals.TotalCoursePreviewEntered: 0),
                        ReportEnums.eStatsTypes.PurchasePageEntered.Type2LearnerPeriodStatsBoxToken(4, totals.TotalPurchasePageEntered, previousTotals != null ? previousTotals.TotalPurchasePageEntered: 0, buyCompltete),
                        ReportEnums.eStatsTypes.AvgVideosWatchedPerCourse.Type2LearnerPeriodStatsBoxToken(5, avgWatched.FormatDecimal(2), prevAvgWatched.FormatDecimal(2)),
                        ReportEnums.eStatsTypes.TotalVideosWatched.Type2LearnerPeriodStatsBoxToken(6, totals.TotalVideosWatched, previousTotals != null ? previousTotals.TotalVideosWatched: 0)
                    };

                    return(list);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Get Admin Dashboard learner period stats", ex, CommonEnums.LoggerObjectTypes.Reports);
                return(new List <LearnerPeriodStatsBoxToken>());
            }
        }