예제 #1
0
        public virtual ActionResult ExportCsv(int?sessionId, Guid?parentCourseId)
        {
            if (!sessionId.HasValue || !parentCourseId.HasValue)
            {
                return(RedirectToAction(MVC.ParentCourseGrade.Get()));
            }

            var parentCourseGrades = _parentCourseRepository.GetParentCourseGrades(parentCourseId.Value, sessionId.Value);

            if (parentCourseGrades.IsNullOrEmpty())
            {
                return(RedirectToAction(MVC.ParentCourseGrade.Get()));
            }

            var bytesInStream = _parentCourseToCsvMapper.Build(parentCourseGrades);

            Response.Clear();
            Response.ContentType = "application/force-download";
            Response.AddHeader("content-disposition", "attachment; filename=CourseGrades.csv");
            Response.BinaryWrite(bytesInStream);
            Response.End();

            return(new FileContentResult(bytesInStream, "application/force-download"));
        }
        public void ShouldMap()
        {
            var parentCourseGrade1 =
                new ParentCourseGradeBuilder().WithParentCourse(new ParentCourseBuilder().WithCourseCode("MATH12321").Build())
                .WithStudent(new StudentBuilder().WithStudentUsi(2000).WithLastSurname("Jones").Build())
                .Build();
            var parentCourseGrade2 =
                new ParentCourseGradeBuilder().WithParentCourse(new ParentCourseBuilder().WithCourseCode("ENGL432").Build())
                .WithStudent(new StudentBuilder().WithStudentUsi(2001).WithLastSurname("White").Build())
                .Build();

            var parentCourseGrades = new List <ParentCourseGrade>
            {
                parentCourseGrade1, parentCourseGrade2
            };

            var mapper          = new ParentCourseGradeToCsvMapper();
            var gradesByteArray = mapper.Build(parentCourseGrades);

            var csvString = System.Text.Encoding.Default.GetString(gradesByteArray);
            var csvLines  = csvString.Split(new [] { Environment.NewLine }, StringSplitOptions.None);

            csvLines.Count().ShouldBe(4);
            csvLines[0].ShouldBe("StudentLastName,StudentUSI,CourseCode,CourseTitle,Grade");
            csvLines[1].ShouldBe(parentCourseGrade1.Student.LastSurname + ","
                                 + parentCourseGrade1.StudentUSI + ","
                                 + parentCourseGrade1.ParentCourse.ParentCourseCode + ","
                                 + parentCourseGrade1.ParentCourse.ParentCourseTitle + ","
                                 + parentCourseGrade1.GradeEarned);

            csvLines[2].ShouldBe(parentCourseGrade2.Student.LastSurname + ","
                                 + parentCourseGrade2.StudentUSI + ","
                                 + parentCourseGrade2.ParentCourse.ParentCourseCode + ","
                                 + parentCourseGrade2.ParentCourse.ParentCourseTitle + ","
                                 + parentCourseGrade2.GradeEarned);
        }