Esempio n. 1
0
        public IActionResult EditFilters(EditFiltersViewModel model)
        {
            var categoryIdFilter = User.GetAdminCourseCategoryFilter();

            if (!ModelState.IsValid)
            {
                var centreId      = User.GetCentreId();
                var filterOptions = GetDropdownValues(centreId, categoryIdFilter);
                model.SetUpDropdowns(filterOptions, categoryIdFilter);
                model.DataStart = activityService.GetActivityStartDateForCentre(centreId);
                return(View(model));
            }

            var filterData = new ActivityFilterData(
                model.GetValidatedStartDate(),
                model.GetValidatedEndDate(),
                model.JobGroupId,
                categoryIdFilter ?? model.CourseCategoryId,
                model.CustomisationId,
                model.FilterType,
                model.ReportInterval
                );

            Response.Cookies.SetReportsFilterCookie(filterData, DateTime.UtcNow);

            return(RedirectToAction("Index"));
        }
        public void GetFilteredActivity_requests_activity_with_correct_parameters()
        {
            // given
            var filterData = new ActivityFilterData(
                DateTime.Parse("2115-6-22"),
                DateTime.Parse("2116-9-22"),
                1,
                2,
                3,
                CourseFilterType.CourseCategory,
                ReportInterval.Months
                );

            // when
            activityService.GetFilteredActivity(101, filterData);

            // then
            A.CallTo(
                () => activityDataService.GetFilteredActivity(
                    101,
                    filterData.StartDate,
                    filterData.EndDate,
                    filterData.JobGroupId,
                    filterData.CourseCategoryId,
                    null
                    )
                )
            .MustHaveHappened(1, Times.Exactly);
        }
Esempio n. 3
0
 public ReportsFilterModel(
     ActivityFilterData filterData,
     string jobGroupName,
     string courseCategoryName,
     string courseNameString,
     bool userManagingAllCourses
     )
 {
     JobGroupName             = jobGroupName;
     CourseCategoryName       = courseCategoryName;
     CourseName               = courseNameString;
     ReportIntervalName       = Enum.GetName(typeof(ReportInterval), filterData.ReportInterval) !;
     StartDate                = filterData.StartDate.ToString(DateHelper.StandardDateFormat);
     EndDate                  = filterData.EndDate?.ToString(DateHelper.StandardDateFormat) ?? "Today";
     ShowCourseCategoryFilter = userManagingAllCourses;
     FilterValues             = new Dictionary <string, string>
     {
         { "jobGroupId", filterData.JobGroupId?.ToString() ?? "" },
         { "courseCategoryId", filterData.CourseCategoryId?.ToString() ?? "" },
         { "customisationId", filterData.CustomisationId?.ToString() ?? "" },
         { "startDate", filterData.StartDate.ToString() },
         { "endDate", filterData.EndDate?.ToString() ?? "" },
         { "reportInterval", filterData.ReportInterval.ToString() },
     };
 }
        public void GetFilteredActivity_returns_empty_slots_with_no_activity()
        {
            // given
            var filterData = new ActivityFilterData(
                DateTime.Parse("2115-6-22"),
                DateTime.Parse("2116-9-22"),
                null,
                null,
                null,
                CourseFilterType.None,
                ReportInterval.Months
                );

            A.CallTo(
                () => activityDataService.GetFilteredActivity(
                    A <int> ._,
                    A <DateTime> ._,
                    A <DateTime> ._,
                    A <int?> ._,
                    A <int?> ._,
                    A <int?> ._
                    )
                )
            .Returns(new List <ActivityLog>());

            // when
            var result = activityService.GetFilteredActivity(101, filterData).ToList();

            // then
            using (new AssertionScope())
            {
                result.Count.Should().Be(16);
                result.All(p => p.Completions == 0 && p.Evaluations == 0 && p.Registrations == 0).Should().BeTrue();
            }
        }
        public byte[] GetEvaluationSummaryFileForCentre(int centreId, ActivityFilterData filterData)
        {
            using var workbook = new XLWorkbook();

            var evaluationSummaries = GetEvaluationSummary(centreId, filterData).ToList();

            var sheet = workbook.Worksheets.Add(SheetName);

            sheet.Cell(1, 1).Value           = "Total responses";
            sheet.Cell(1, 1).Style.Font.Bold = true;
            sheet.Cell(1, 2).Value           = evaluationSummaries.First().TotalResponses;

            AddQuestionTableToSheet(sheet, 3, evaluationSummaries[0]);
            AddQuestionTableToSheet(sheet, 8, evaluationSummaries[1]);
            AddQuestionTableToSheet(sheet, 13, evaluationSummaries[2]);
            AddQuestionTableToSheet(sheet, 18, evaluationSummaries[3]);
            AddQuestionTableToSheet(sheet, 27, evaluationSummaries[4]);
            AddQuestionTableToSheet(sheet, 32, evaluationSummaries[5]);
            AddQuestionTableToSheet(sheet, 38, evaluationSummaries[6]);

            sheet.Columns().AdjustToContents();

            using var stream = new MemoryStream();
            workbook.SaveAs(stream);
            return(stream.ToArray());
        }
Esempio n. 6
0
        public void GetEvaluationSummaryFileForCentre_returns_expected_excel_data()
        {
            // Given
            using var expectedWorkbook = new XLWorkbook(
                      TestContext.CurrentContext.TestDirectory + EvaluationSummaryDownloadRelativeFilePath
                      );
            GivenEvaluationSummaryDataServiceReturnsDataInExampleSheet();

            var filterData = new ActivityFilterData(
                DateTime.Parse("2020-9-1"),
                DateTime.Parse("2021-9-1"),
                null,
                null,
                null,
                CourseFilterType.None,
                ReportInterval.Months
                );

            // When
            var resultBytes = evaluationSummaryService.GetEvaluationSummaryFileForCentre(101, filterData);

            using var resultsStream  = new MemoryStream(resultBytes);
            using var resultWorkbook = new XLWorkbook(resultsStream);

            // Then
            SpreadsheetTestHelper.AssertSpreadsheetsAreEquivalent(expectedWorkbook, resultWorkbook);
        }
Esempio n. 7
0
        public void GetEvaluationResponseBreakdowns_returns_list_of_models_correctly()
        {
            // Given
            const int centreId           = 121;
            var       data               = EvaluationSummaryTestHelper.GetDefaultEvaluationAnswerCounts();
            var       expectedResults    = EvaluationSummaryTestHelper.GetDefaultEvaluationResponseBreakdowns();
            var       activityFilterData = new ActivityFilterData(
                DateTime.Today,
                DateTime.Today,
                null,
                null,
                null,
                CourseFilterType.None,
                ReportInterval.Months
                );

            A.CallTo(
                () => evaluationSummaryDataService.GetEvaluationSummaryData(
                    centreId,
                    activityFilterData.StartDate,
                    activityFilterData.EndDate,
                    null,
                    null,
                    null
                    )
                ).Returns(data);

            // When
            var result = evaluationSummaryService.GetEvaluationSummary(centreId, activityFilterData);

            // Then
            result.Should().BeEquivalentTo(expectedResults);
        }
        public void GetFilteredActivity_correctly_groups_activity(
            ReportInterval interval,
            int expectedSlotCount,
            string expectedStartDate,
            string expectedFinalDate,
            string expectedLogDateForCompletion
            )
        {
            // given
            var expectedActivityResult = new List <ActivityLog>
            {
                new ActivityLog
                {
                    Completed  = true,
                    Evaluated  = false,
                    Registered = false,
                    LogDate    = DateTime.Parse("2015-12-22"),
                    LogYear    = 2015,
                    LogQuarter = 4,
                    LogMonth   = 12,
                },
            };

            GivenActivityDataServiceReturnsSpecifiedResult(expectedActivityResult);

            var filterData = new ActivityFilterData(
                DateTime.Parse("2014-6-22"),
                DateTime.Parse("2016-6-22"),
                null,
                null,
                null,
                CourseFilterType.None,
                interval
                );

            // when
            var result = activityService.GetFilteredActivity(101, filterData).ToList();

            // then
            using (new AssertionScope())
            {
                ValidatePeriodData(result.First(), expectedStartDate, interval, 0, 0, 0);
                ValidatePeriodData(result.Last(), expectedFinalDate, interval, 0, 0, 0);
                ValidatePeriodData(
                    result.Single(p => p.Completions == 1),
                    expectedLogDateForCompletion,
                    interval,
                    0,
                    1,
                    0
                    );

                result.Count.Should().Be(expectedSlotCount);
                result.All(p => p.Evaluations == 0 && p.Registrations == 0).Should().BeTrue();
                result.All(p => p.DateInformation.Interval == interval).Should().BeTrue();
            }
        }
        public IEnumerable <EvaluationResponseBreakdown> GetEvaluationSummary(
            int centreId,
            ActivityFilterData filterData
            )
        {
            var evaluationSummaryData = evaluationSummaryDataService.GetEvaluationSummaryData(
                centreId,
                filterData.StartDate,
                filterData.EndDate,
                filterData.JobGroupId,
                filterData.CourseCategoryId,
                filterData.CustomisationId
                );

            return(MapDataToEvaluationResponseBreakdowns(evaluationSummaryData));
        }
Esempio n. 10
0
        public static void SetReportsFilterCookie(
            this IResponseCookies cookies,
            ActivityFilterData filterData,
            DateTime currentDateTime
            )
        {
            var expiry = currentDateTime.AddDays(CookieExpiryDays);

            cookies.Append(
                CookieName,
                JsonConvert.SerializeObject(filterData),
                new CookieOptions
            {
                Expires = expiry
            }
                );
        }
Esempio n. 11
0
        public static ActivityFilterData RetrieveFilterDataFromCookie(this IRequestCookieCollection cookies, int?categoryIdFilter)
        {
            var cookie = cookies[CookieName];

            if (cookie == null)
            {
                return(ActivityFilterData.GetDefaultFilterData(categoryIdFilter));
            }

            try
            {
                return(JsonConvert.DeserializeObject <ActivityFilterData>(cookie));
            }
            catch
            {
                return(ActivityFilterData.GetDefaultFilterData(categoryIdFilter));
            }
        }
Esempio n. 12
0
        public void ReportsFilterModel_correctly_formats_date_range()
        {
            // Given
            var filterData = new ActivityFilterData(
                DateTime.Parse("2001-01-01"),
                DateTime.Parse("2002-02-02"),
                null,
                null,
                null,
                CourseFilterType.None,
                ReportInterval.Years
                );

            // When
            var model = new ReportsFilterModel(filterData, "", "", "", false);

            // Then
            model.StartDate.Should().Be("01/01/2001");
            model.EndDate.Should().Be("02/02/2002");
        }
Esempio n. 13
0
        public IActionResult DownloadUsageData(
            int?jobGroupId,
            int?courseCategoryId,
            int?customisationId,
            string startDate,
            string endDate,
            ReportInterval reportInterval
            )
        {
            var centreId = User.GetCentreId();
            var adminCategoryIdFilter = User.GetAdminCourseCategoryFilter();

            var dateRange =
                activityService.GetValidatedUsageStatsDateRange(startDate, endDate, centreId);

            if (dateRange == null)
            {
                return(new NotFoundResult());
            }

            var filterData = new ActivityFilterData(
                dateRange.Value.startDate,
                dateRange.Value.endDate,
                jobGroupId,
                adminCategoryIdFilter ?? courseCategoryId,
                customisationId,
                customisationId.HasValue ? CourseFilterType.Course : CourseFilterType.CourseCategory,
                reportInterval
                );

            var dataFile = activityService.GetActivityDataFileForCentre(centreId, filterData);

            var fileName = $"Activity data for centre {centreId} downloaded {DateTime.Today:yyyy-MM-dd}.xlsx";

            return(File(
                       dataFile,
                       FileHelper.GetContentTypeFromFileName(fileName),
                       fileName
                       ));
        }
Esempio n. 14
0
        public IActionResult DownloadEvaluationSummaries(
            int?jobGroupId,
            int?courseCategoryId,
            int?customisationId,
            string startDate,
            string endDate,
            ReportInterval reportInterval
            )
        {
            var centreId = User.GetCentreId();
            var adminCategoryIdFilter = User.GetAdminCourseCategoryFilter();

            var dateRange =
                activityService.GetValidatedUsageStatsDateRange(startDate, endDate, centreId);

            if (dateRange == null)
            {
                return(new NotFoundResult());
            }

            var filterData = new ActivityFilterData(
                dateRange.Value.startDate,
                dateRange.Value.endDate,
                jobGroupId,
                adminCategoryIdFilter ?? courseCategoryId,
                customisationId,
                customisationId.HasValue ? CourseFilterType.Course : CourseFilterType.CourseCategory,
                reportInterval
                );

            var content = evaluationSummaryService.GetEvaluationSummaryFileForCentre(centreId, filterData);

            return(File(
                       content,
                       FileHelper.ExcelContentType,
                       $"DLS Evaluation Stats {DateTime.Today:yyyy-MM-dd}.xlsx"
                       ));
        }
Esempio n. 15
0
        public EditFiltersViewModel(
            ActivityFilterData filterData,
            int?userCategoryFilter,
            ReportsFilterOptions filterOptions,
            DateTime dataStartDate
            )
        {
            JobGroupId = filterData.JobGroupId;

            if (filterData.CustomisationId.HasValue)
            {
                FilterType = CourseFilterType.Course;
            }
            else if (filterData.CourseCategoryId.HasValue)
            {
                FilterType = CourseFilterType.CourseCategory;
            }
            else
            {
                FilterType = CourseFilterType.None;
            }

            CourseCategoryId = filterData.CourseCategoryId;
            CustomisationId  = filterData.CustomisationId;
            StartDay         = filterData.StartDate.Day;
            StartMonth       = filterData.StartDate.Month;
            StartYear        = filterData.StartDate.Year;
            EndDay           = filterData.EndDate?.Day;
            EndMonth         = filterData.EndDate?.Month;
            EndYear          = filterData.EndDate?.Year;
            EndDate          = filterData.EndDate.HasValue;
            ReportInterval   = filterData.ReportInterval;
            DataStart        = dataStartDate;

            SetUpDropdowns(filterOptions, userCategoryFilter);
        }