//Mapping QuestionMultipleChoice to QuestionMultipleChoiceViewModel
 private QuestionMultipleChoiceViewModel MapToQuestionMultipleChoiceViewModel(QuestionMultipleChoice questionMultipleChoice)
 {
     return(new QuestionMultipleChoiceViewModel(
                questionMultipleChoice.Id,
                questionMultipleChoice.QuestionPhrase,
                questionMultipleChoice.Course,
                questionMultipleChoice.Answers,
                _courseManager.GetAll()
                ));
 }
Esempio n. 2
0
        public IActionResult DownloadToPDF(int?id)
        {
            Exam exam = _examManager.Get(id);

            string outputPath = Path.Combine(Path.GetTempPath(), exam.Course.CourseName + ".pdf");

            Document doc = new Document();

            DocumentBuilder docBuilder = new DocumentBuilder(doc);

            Style headerStyle = doc.Styles.Add(StyleType.Paragraph, "HeaderStyle");

            headerStyle.Font.Size = 21;
            headerStyle.Font.Bold = true;
            headerStyle.Font.Name = "Corbel";
            headerStyle.ParagraphFormat.SpaceAfter = 12;
            headerStyle.ParagraphFormat.Alignment  = ParagraphAlignment.Center;

            Style subHeaderStyle = doc.Styles.Add(StyleType.Paragraph, "SubHeaderStyle");

            subHeaderStyle.Font.Size   = 14;
            subHeaderStyle.Font.Italic = true;
            subHeaderStyle.Font.Name   = "Corbel";
            subHeaderStyle.ParagraphFormat.SpaceAfter = 12;
            subHeaderStyle.ParagraphFormat.Alignment  = ParagraphAlignment.Center;

            Style bulletStyle = doc.Styles.Add(StyleType.Paragraph, "bulletStyle");

            bulletStyle.Font.Size = 11;
            bulletStyle.Font.Name = "Calibri";
            bulletStyle.ParagraphFormat.SpaceAfter = 10;
            bulletStyle.ListFormat.List            = doc.Lists.Add(ListTemplate.BulletCircle);
            bulletStyle.ListFormat.ListLevelNumber = 0;


            docBuilder.ParagraphFormat.Style = headerStyle;
            docBuilder.Writeln("Exam " + exam.Course.CourseName + " - " + exam.Course.CourseYear);


            docBuilder.ParagraphFormat.Style = subHeaderStyle;
            docBuilder.Writeln("Date: " + exam.Date.Day.ToString() + "/" + exam.Date.Month.ToString() + "/" + exam.Date.Year.ToString());

            Table      table      = docBuilder.StartTable();
            CellFormat cellFormat = docBuilder.CellFormat;

            docBuilder.RowFormat.HeightRule = HeightRule.Auto;
            docBuilder.ParagraphFormat.ClearFormatting();
            cellFormat.Width = 100;
            docBuilder.InsertCell();
            table.AllowAutoFit = true;
            docBuilder.Writeln("First Name: ");
            docBuilder.InsertCell();
            docBuilder.Writeln("Last Name: ");
            docBuilder.EndRow();
            docBuilder.InsertCell();
            docBuilder.Writeln("Group: ");
            docBuilder.InsertCell();
            docBuilder.Writeln("Year: ");
            docBuilder.EndTable();
            docBuilder.InsertBreak(BreakType.LineBreak);


            int counter = 0;

            foreach (Question question in exam.Course.Questions)
            {
                counter++;

                docBuilder.ParagraphFormat.ClearFormatting();
                docBuilder.StartTable();
                docBuilder.InsertCell();
                docBuilder.RowFormat.HeightRule = HeightRule.Exactly;
                docBuilder.RowFormat.Height     = 30;
                docBuilder.Writeln(counter.ToString() + ". " + question.QuestionPhrase);
                docBuilder.EndRow();
                docBuilder.RowFormat.HeightRule = HeightRule.Exactly;
                docBuilder.RowFormat.Height     = 150;
                docBuilder.InsertCell();


                if (question is QuestionMultipleChoice)
                {
                    QuestionMultipleChoice questionMultipleChoice = (QuestionMultipleChoice)question;

                    foreach (var item in questionMultipleChoice.Answers)
                    {
                        docBuilder.RowFormat.HeightRule  = HeightRule.Auto;
                        docBuilder.ParagraphFormat.Style = bulletStyle;

                        if (questionMultipleChoice.Answers.ToList().IndexOf(item) == questionMultipleChoice.Answers.ToList().Count - 1)
                        {
                            docBuilder.Write(item.Answer);
                        }
                        else
                        {
                            docBuilder.Writeln(item.Answer);
                        }
                    }
                }

                docBuilder.EndTable();
                docBuilder.InsertBreak(BreakType.LineBreak);
            }

            doc.Save(outputPath, SaveFormat.Pdf);

            return(File(System.IO.File.ReadAllBytes(outputPath), "application/pdf", exam.Course.CourseName + "_" + exam.Course.CourseYear.ToString()));
        }