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); }
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()); }
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); }
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)); }
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 } ); }
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)); } }
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"); }
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 )); }
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" )); }
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); }