public async Task <IActionResult> Download(string sectionName)
        {
            var section = Classroom.Sections
                          .SingleOrDefault(s => s.Name == sectionName);

            if (section == null)
            {
                return(NotFound());
            }

            var archiveContents = await SubmissionService.DownloadSubmissionsAsync
                                  (
                ClassroomName,
                ProjectName,
                CheckpointName,
                sectionName
                                  );

            var timestamp = TimeZoneProvider.ToUserLocalTime(DateTime.UtcNow)
                            .ToString("yyyyMMdd-HHmmss");

            var filename = $"{Classroom.Name}-{Project.Name}-{Checkpoint.Name}-{timestamp}.zip";

            return(File(archiveContents, "application/zip", filename));
        }
        /// <summary>
        /// Once the user has chosen the download properties, made the student selections, and clicked
        /// the main form submit button, this initiates the actual download
        /// </summary>
        /// <param name="downloadSubmissionViewModel">ViewModel for the form</param>
        public async Task <IActionResult> DownloadSubmissionsAsync(DownloadSubmissionViewModel downloadSubmissionViewModel)
        {
            var selectedStudents = downloadSubmissionViewModel.SectionsAndStudents
                                   .Where
                                   (
                sas => sas.SectionName.Selected
                                   )
                                   .SelectMany
                                   (
                sas => sas.SelectedStudents
                .Where
                (
                    ss => ss.Selected &&
                    (ss.Submitted || downloadSubmissionViewModel.IncludeUnsubmitted)
                )
                .Select
                (
                    ss => ss.Id
                )
                                   ).ToList();

            if (selectedStudents.Count == 0)
            {
                return(NotFound());
            }

            var archiveContents = await SubmissionService.DownloadSubmissionsAsync
                                  (
                ClassroomName,
                ProjectName,
                CheckpointName,
                selectedStudents,
                downloadSubmissionViewModel.Format
                                  );

            var timestamp = TimeZoneProvider.ToUserLocalTime(DateTime.UtcNow)
                            .ToString("yyyyMMdd-HHmmss");

            var filename = $"{Classroom.Name}-{Project.Name}-{Checkpoint.Name}-{timestamp}.zip";

            return(File(archiveContents, "application/zip", filename));
        }