Example #1
0
        public ActionResult ViewGeneratedExamination(string examGroup)
        {
            List <ExaminationViewModel> exams = examinationService.GetExamByExamGroup(examGroup);

            TempData["active"] = "Examination";
            return(View(exams));
        }
        //[Feature(FeatureType.Page, "Export Group Examination ", "QBCS", protectType: ProtectType.Authorized)]
        public FileResult ExportGroupExamination(string examGroup, string fileExtension)
        {
            string zipFileName = null;
            List <ExaminationViewModel> exams = examinationService.GetExamByExamGroup(examGroup);

            //the output bytes of the zip file
            byte[] fileBytes = null;
            //create working memory stream of zip file
            using (MemoryStream memoryStream = new MemoryStream())
            {
                //create a zip file
                using (ZipArchive zip = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
                {
                    //file xml
                    if (fileExtension.ToLower().Equals("xml"))
                    {
                        foreach (var exam in exams)
                        {
                            string fileName = exam.Course.Code + "_" + exam.ExamGroup + "_" + exam.ExamCode + "_" + DateTime.Now.ToString("yyyyMMdd");
                            List <QuestionInExamViewModel> questions = new List <QuestionInExamViewModel>();
                            foreach (var part in exam.PartOfExam)
                            {
                                questions = questions.Concat(part.Question).ToList();
                            }
                            if (zipFileName == null)
                            {
                                zipFileName = exam.Course.Code + "_" + exam.ExamGroup + "_" + DateTime.Now.ToString("yyyyMMdd") + "_XML";
                            }
                            //add item to zip
                            ZipArchiveEntry zipItem = zip.CreateEntry(fileName + ".xml");

                            //stream for item

                            byte[] itemBytes = ExportToXMLFile(questions);
                            using (Stream entryStream = zipItem.Open())
                            {
                                Stream itemStream = new MemoryStream(itemBytes);
                                itemStream.CopyTo(entryStream);
                            }
                        }
                        // file GIFT
                    }
                    else
                    {
                        foreach (var exam in exams)
                        {
                            string fileName = exam.Course.Code + "_" + exam.ExamGroup + "_" + exam.ExamCode + "_" + DateTime.Now.ToString("yyyyMMdd");
                            List <QuestionInExamViewModel> questions = new List <QuestionInExamViewModel>();
                            foreach (var part in exam.PartOfExam)
                            {
                                questions = questions.Concat(part.Question).ToList();
                            }
                            if (zipFileName == null)
                            {
                                zipFileName = exam.Course.Code + "_" + exam.ExamGroup + "_" + DateTime.Now.ToString("yyyyMMdd") + "_GIFT";
                            }
                            //add item to zip
                            ZipArchiveEntry zipItem = zip.CreateEntry(fileName + ".txt");
                            //stream for item
                            byte[] itemBytes = ExportToGIFTFile(questions);
                            using (Stream entryStream = zipItem.Open())
                            {
                                Stream itemStream = new MemoryStream(itemBytes);
                                itemStream.CopyTo(entryStream);
                            }
                        }
                    }
                }
                fileBytes = memoryStream.ToArray();
            }
            return(File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, zipFileName + ".zip"));
        }