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