public ExamAttemptExport export() { ExamAttemptExport data = new ExamAttemptExport(); //Anwsers = Anwsers.ToList(); foreach (Anwser a in Anwsers) { foreach (Mistake m in a.Mistakes) { data.AttemptMistakes.Add(new AttemptMistakesExport(StudentID, CensorID, ID, a.ID, a.QuestionID, (float)a.Adjustment, m.ID, m.ArgumentID, m.AdjustedWeight)); } } foreach (GeneralCritereaImpact i in GeneralCritereaImpacts) { if (i.AnwserID != null) { Anwser temp = Anwsers.First(x => x.ID == i.AnwserID); data.AttemptCritereas.Add(new AttemptCritereaExport(StudentID, CensorID, ID, (int)i.AnwserID, temp.QuestionID, (int)i.MistakeID, temp.Mistakes.First(x => x.AnwserID == temp.ID).ArgumentID, i.ExamCritereaID, i.Weight)); } else { data.AttemptCritereas.Add(new AttemptCritereaExport(StudentID, CensorID, ID, null, null, null, null, i.ExamCritereaID, i.Weight)); } } return(data); }
public FileStreamResult GetAttempt(int examID) { ExamAttemptExport data = new ExamAttemptExport(); List <ExamAttempt> attempts = new List <ExamAttempt>(); try { attempts = _examAttemptService.getAllForExport(examID).ToList(); } catch (AppException ex) { // return error message if there was an exception } foreach (ExamAttempt item in attempts) { var temp = item.export(); data.AttemptMistakes.AddRange(temp.AttemptMistakes); data.AttemptCritereas.AddRange(temp.AttemptCritereas); } MemoryStream stream = new MemoryStream(); using (var package = new ExcelPackage()) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("AttemptCriterea"); worksheet.Cells[1, 1].LoadFromCollection(data.AttemptCritereas, true, OfficeOpenXml.Table.TableStyles.Medium1); worksheet = package.Workbook.Worksheets.Add("AttemptMistakes"); worksheet.Cells[1, 1].LoadFromCollection(data.AttemptMistakes, true, OfficeOpenXml.Table.TableStyles.Medium1); stream = new MemoryStream(package.GetAsByteArray()); } return(new FileStreamResult(stream, new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) { FileDownloadName = "exam cenorsihp " + examID + ".xlsx" }); }