public void GenerateReport(Student student)
 {
     using (var studentGenerateDialog = new GenerateStudentReportDialog())
     {
         var result = studentGenerateDialog.ShowDialog();
         if (result == DialogResult.OK)
         {
             var startDate = studentGenerateDialog.GetStartDate();
             var endDate   = studentGenerateDialog.GetEndDate();
             using (var reportGenerator = CreateGenerator(studentGenerateDialog))
             {
                 reportGenerator.GenerateReport(student, startDate, endDate);
             }
         }
     }
 }
        public StudentReportGenerator CreateGenerator(GenerateStudentReportDialog dialog)
        {
            if (dialog.PdfSelected)
            {
                var filePath        = dialog.GetPath();
                var reportGenerator = StudentReportGenerator.CreatePdfGenerator(filePath);
                return(reportGenerator);
            }

            if (dialog.MongoDbSelected)
            {
                var reportGenerator = StudentReportGenerator.CreateMongoDbGenerator();
                return(reportGenerator);
            }

            throw new InvalidOperationException();
        }