/// <summary> /// Tạo danh sách câu hỏi cho đợt thi /// </summary> /// <param name="model"></param> /// <returns></returns> private List <TN_ExamQuestion> CreateExamQuestion(TN_Exam model) { var db = DB.GetContext(); var random = new Random(); var listIndex = new List <int>(); var listQuestion = db.TN_Question.ToList(); while (listIndex.Count < model.QuestionCount) { int index = random.Next(0, listQuestion.Count - 1); //Nếu index này chưa có trong danh sách listIndex if (!listIndex.Contains(index)) { listIndex.Add(index); } } var listExamQuestion = new List <TN_ExamQuestion>(); foreach (var index in listIndex) { var examQuestion = new TN_ExamQuestion(); examQuestion.QuestionID = listQuestion[index].ID; listExamQuestion.Add(examQuestion); } return(listExamQuestion); }
public ActionResult CreateQuestionFromExcelFile(int examID, HttpPostedFileBase file) { try { if (file != null) { var fileUtil = new FileUtil(); string folderUpload = @"D:\FileUploads\"; if (!fileUtil.CheckDirectoryExists(folderUpload)) { fileUtil.CreateDirectory(folderUpload); } string fileName = "nganhangcauhoi" + file.FileName.Substring(file.FileName.LastIndexOf(".")); file.SaveAs(folderUpload + fileName); // đọc file excel và lưu vào csdl //Stream streamDictionary = GetResourceFileStream(folderUpload + fileName); using (var document = SpreadsheetDocument.Open(folderUpload + fileName, false)) { var workbookPart = document.WorkbookPart; var workbook = workbookPart.Workbook; var sheets = workbook.Descendants <Sheet>(); foreach (var sheet in sheets) { if (sheet.SheetId.HasValue && sheet.SheetId.ToString().Equals("1")) { #region Read excel var worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id); var sharedStringPart = workbookPart.SharedStringTablePart; var values = sharedStringPart.SharedStringTable.Elements <SharedStringItem>().ToArray(); var cells = worksheetPart.Worksheet.Descendants <Cell>(); var rows = worksheetPart.Worksheet.Descendants <Row>(); TN_Question questionTemp = new TN_Question(); int countDataNull = 0; bool flag = false; foreach (Row row in rows) { var question = new TN_Question(); var answer = new TN_Answer(); foreach (Cell c in row.Elements <Cell>()) { string value = string.Empty; if ((c.DataType != null) && (c.DataType == CellValues.SharedString)) { int ssid = int.Parse(c.CellValue.Text); value = sharedStringPart.SharedStringTable.ChildElements[ssid].InnerText; } else if (c.CellValue != null) { value = c.CellValue.Text; } // xử lý ban đầu value = value.TrimEnd('%'); if (c.CellReference == "A" + row.RowIndex) { if (!string.IsNullOrEmpty(value)) { question.Content = value; answer.Content = value; countDataNull = 0; } else { countDataNull++; break; } } if (c.CellReference == "B" + row.RowIndex) { if (!string.IsNullOrEmpty(value)) { answer.IsCorrect = true; } else { answer.IsCorrect = false; } } if (c.CellReference == "C" + row.RowIndex && !string.IsNullOrEmpty(value)) { if (!string.IsNullOrEmpty(value)) { question.Type = value; flag = true; } } } if (countDataNull == 0) { if (flag) { question.IsMultiChoose = false; db.TN_Question.AddObject(question); questionTemp = question; var questionExam = new TN_ExamQuestion() { ExamID = examID, QuestionID = question.ID }; db.TN_ExamQuestion.AddObject(questionExam); flag = false; } else { answer.QuestionID = questionTemp.ID; db.TN_Answer.AddObject(answer); } db.SaveChanges(); } } #endregion break; } } } ViewBag.Success = true; } } catch (Exception ex) { } return(View(new List <TN_Exam>())); }