public void testUpdateHomeworkRemoveKSTFromQuestionSuccess() { Assert.Null(serv.GetByDetails(hwTitl, hwDesc)); // Arrange int count = serv.All().Count(); serv.Add(entity); Question q = new Question("test question"); SuggestedOpening so = new SuggestedOpening("TSO"); q.Suggested_Openings.Add(so); entity.Questions.Add(q); Assert.True(serv.Update(entity) is MichtavaSuccess); Guid id = serv.GetByDetails(hwTitl, hwDesc).Id; Assert.AreEqual(count + 1, serv.All().Count()); // Act var quest = serv.All().Include(x => x.Questions).FirstOrDefault(y => y.Id == id).Questions.ElementAt(0); quest.Suggested_Openings.Remove(so); MichtavaResult res = serv.Update(entity); // Assert Assert.True(res is MichtavaSuccess); var quests = serv.All().Include(x => x.Questions).FirstOrDefault(y => y.Id == id).Questions.ToList(); Assert.NotNull(quests); Assert.True(quests.Count() != 0); Assert.True(quests.ElementAt(0).Suggested_Openings.Count() == 0); Assert.True(serv.HardDelete(entity) is MichtavaSuccess); }
public ActionResult SubmitPolicy(PolicyViewModel model, string textName, string Submit, DateTime?submissionDate, string homeworkTitle, string homeworkDescription, string word, string wordDefinition) { Teacher currentTeacher = GetCurrentUser(); var currentTeacherId = currentTeacher.Id; Text textForHomework = getText(textName); Guid currentTextId = textForHomework.Id; TempData["textName"] = textForHomework.Name; TempData["TextContent"] = textForHomework.Content; Dictionary <int, string> currentHomework = null; currentHomework = _fileManager.GetCurrentHomework(Server.MapPath("~/TemporaryFiles/Homeworks"), currentTeacherId, currentTextId); if (currentHomework != null && currentHomework.Count > 0) { InitializeHomework(currentHomework); } if (Submit.Equals("הוספת שיעורי הבית")) { SubmitHomework(textForHomework, currentTeacher, currentTeacherId, currentTextId, submissionDate, homeworkTitle, homeworkDescription); return(View("Policy")); } if (Submit.Equals("הוספת פירוש")) { if (word.IsNullOrWhiteSpace() || wordDefinition.IsNullOrWhiteSpace()) { TempData["msg"] = "<script>alert('לא הוכנס ערך');</script>"; } else { AddWordDefinition(word, wordDefinition); } return(View("Policy")); } currentHomework?.Clear(); if (string.IsNullOrEmpty(model?.Question)) { currentHomework = _fileManager.GetCurrentHomework(Server.MapPath("~/TemporaryFiles/Homeworks"), currentTeacherId, currentTextId); if (currentHomework != null && currentHomework.Count > 0) { InitializeHomework(currentHomework); } TempData["msg"] = "<script>alert('לא הכנסת שאלה');</script>"; return(View("Policy")); } Policy policy = new Policy() { MaxConnectors = model.MaxConnectors, MinConnectors = model.MinConnectors, MaxWords = model.MaxWords, MinWords = model.MinWords, }; Question question = new Question() { Content = model.Question, Policy = policy, Date_Added = DateTime.Now, Suggested_Openings = SuggestedOpening.convert(model.KeySentences), Question_Number = _fileManager.GetNextQuestionNumber(Server.MapPath("~/TemporaryFiles/Homeworks"), currentTeacherId, currentTextId) }; _fileManager.SaveQuestion(Server.MapPath("~/TemporaryFiles/Homeworks"), question, currentTeacherId, currentTextId); currentHomework = _fileManager.GetCurrentHomework(Server.MapPath("~/TemporaryFiles/Homeworks"), currentTeacherId, currentTextId); if (currentHomework != null && currentHomework.Count > 0) { InitializeHomework(currentHomework); } TempData["msg"] = "<script>alert('השאלה נוספה למערכת. רק כאשר תוסיף/י את שיעורי הבית, התלמידים יוכלו לראות את השאלה');</script>"; return(View("Policy")); }
private Question ParseQuestion(string questionDir, int questionNumber) { Question ParsedQuestion = new Question(); Policy ParsedPolicy = new Policy(); // Parse content and Policy foreach (var questionParameter in Directory.GetFiles(questionDir)) { switch (new DirectoryInfo(questionParameter).Name) { case "Content.txt": { ParsedQuestion.Content = File.ReadAllText(questionParameter); break; } case "MinWords.txt": { ParsedPolicy.MinWords = int.Parse(File.ReadAllText(questionParameter)); break; } case "MaxWords.txt": { ParsedPolicy.MaxWords = int.Parse(File.ReadAllText(questionParameter)); break; } case "MinConnectors.txt": { ParsedPolicy.MinConnectors = int.Parse(File.ReadAllText(questionParameter)); break; } case "MaxConnectors.txt": { ParsedPolicy.MaxConnectors = int.Parse(File.ReadAllText(questionParameter)); break; } default: { break; } } } // Parse suggested openings: string[] suggestedOpeningFiles = Directory.GetFiles(questionDir, "suggestedOpening*.txt"); List <string> suggestedOpenings = new List <string>(); foreach (var suggestedOpening in suggestedOpeningFiles) { suggestedOpenings.Add(File.ReadAllText(suggestedOpening)); } // Create Question: ParsedQuestion.Policy = ParsedPolicy; ParsedQuestion.Question_Number = questionNumber; ParsedQuestion.Date_Added = DateTime.Now; ParsedQuestion.Suggested_Openings = SuggestedOpening.convert(suggestedOpenings); return(ParsedQuestion); }
public ActionResult FinalAnswerSubmit(int questionNumber, string textContent) { try { string input = textContent; int numOfWords = _smartTextBox.GetNumberOfWords(input); int numOfConnectors = _smartTextBox.GetNumberOfConnectors(input); IDictionary <string, int> repeatedWords = _smartTextBox.GetRepeatedWords(input); TempData["NumberOfWords"] = numOfWords; TempData["NumberOfConnectorWords"] = numOfConnectors; TempData["Answer"] = input; smartView.QuestionNumber = questionNumber; Answer ans = new Answer(); string userid = User.Identity.GetUserId(); foreach (var std in _studentService.All().Include(x => x.Homeworks)) { if (std.ApplicationUserId.Equals(userid)) { student = std; break; } } string tmpName = (string)Session["textName"]; textGuid = _textService.All().Where(t => t.Name == tmpName).FirstOrDefault().Id; List <Homework> AllStudentHW = _homeworkService.All().Where(x => x.Text.Id == textGuid).ToList(); Homework hw = AllStudentHW.First(); ICollection <Question> tmpQuestionsList = _homeworkService.All().Include(x => x.Questions.Select(p => p.Policy)).Where(x => x.Id == hw.Id).FirstOrDefault().Questions; smartView.question = tmpQuestionsList.Where(x => x.Question_Number == questionNumber).FirstOrDefault();//include policy.. smartView.Questions = tmpQuestionsList.ToList(); if (_answerService.All().Where(x => x.Student_Id == student.Id && x.Homework_Id == hw.Id).FirstOrDefault() == null) { ans.Answer_To = _homeworkService.All().Where(x => x.Id == hw.Id).FirstOrDefault(); ans.Date_Submitted = DateTime.Now; ans.Homework_Id = hw.Id; //ans.Id = Guid.NewGuid(); ans.IsDeleted = false; ans.TestID = 0; ans.Grade = 0; ans.Student_Id = student.Id; ans.Submitted_By = student; _answerService.Add(ans); ans = _answerService.All().Where(x => x.Student_Id == student.Id && x.Homework_Id == hw.Id).FirstOrDefault(); ICollection <QuestionAnswer> QuestionsAnsweredOnHomeWork = _answerService.All().Where(x => x.Homework_Id == hw.Id && x.Student_Id == student.Id).SelectMany(x => x.questionAnswers).ToList(); QuestionAnswer tmpQuestionAnswer = new QuestionAnswer(); tmpQuestionAnswer.In_Answer = ans; tmpQuestionAnswer.Answer_Id = ans.Id; tmpQuestionAnswer.Of_Question = smartView.question; tmpQuestionAnswer.Question_Id = smartView.question.Id; tmpQuestionAnswer.Content = input; tmpQuestionAnswer.Date_Submitted = ans.Date_Submitted; QuestionsAnsweredOnHomeWork.Add(tmpQuestionAnswer); ans.questionAnswers = QuestionsAnsweredOnHomeWork; _answerService.Update(ans); } else { ICollection <QuestionAnswer> QuestionsAnsweredOnHomeWork = _answerService.All().Where(x => x.Homework_Id == hw.Id && x.Student_Id == student.Id).SelectMany(x => x.questionAnswers).ToList(); ans = _answerService.All().Where(x => x.Student_Id == student.Id && x.Homework_Id == hw.Id).FirstOrDefault(); if (QuestionsAnsweredOnHomeWork.Where(x => x.Of_Question.Question_Number == questionNumber).Count() == 0) { QuestionAnswer tmpQuestionAnswer = new QuestionAnswer(); // tmpQuestionAnswer.Id = Guid.NewGuid(); tmpQuestionAnswer.Answer_Id = ans.Id; tmpQuestionAnswer.Content = input; tmpQuestionAnswer.Date_Submitted = DateTime.Now; tmpQuestionAnswer.In_Answer = ans; tmpQuestionAnswer.Of_Question = smartView.question; tmpQuestionAnswer.Question_Id = smartView.question.Id; QuestionsAnsweredOnHomeWork.Add(tmpQuestionAnswer); ans.questionAnswers = QuestionsAnsweredOnHomeWork; _answerService.Update(ans); } else { QuestionAnswer tmpQuestionAnswer = QuestionsAnsweredOnHomeWork.Where(x => x.Of_Question.Question_Number == questionNumber).FirstOrDefault(); ans.questionAnswers.Remove(tmpQuestionAnswer); tmpQuestionAnswer.Content = input; tmpQuestionAnswer.Date_Submitted = DateTime.Now; ans.questionAnswers.Add(tmpQuestionAnswer); _answerService.Update(ans); } } if (smartView.question.Suggested_Openings.Count == 0) { SuggestedOpening noSuggOpen = new SuggestedOpening("אין משפטי פתיחה לשאלה זו"); SuggestedOpening noSuggOpen2 = new SuggestedOpening("התשובה לשאלה נמצאת בגוף השאלה"); smartView.question.Suggested_Openings.Add(noSuggOpen); smartView.question.Suggested_Openings.Add(noSuggOpen2); } List <int> SmartViewQuestionsNumbers = new List <int>(); Answer QuestionsAnswered = _answerService.All().Include(y => y.questionAnswers).Where(x => x.Homework_Id == hw.Id && x.Student_Id == student.Id).FirstOrDefault(); smartView.CompleteQuestions = QuestionsAnswered.questionAnswers.ToList(); int k = 0; foreach (var QuestAns in smartView.CompleteQuestions) { SmartViewQuestionsNumbers.Add(QuestAns.Of_Question.Question_Number); k++; } smartView.CompleteQuestionsNumbers = SmartViewQuestionsNumbers; if ((int)(k / smartView.Questions.Count() * 100) > 99) { student.Homeworks.Remove(hw); _studentService.Update(student); } TempData["toManyConnectors"] = "התשובה הוגשה בהצלחה למערכת. תוכל לשנות אותה עד לתאריך ההגשה האחרון"; string tmpstring = "שאלה מספר " + questionNumber; return(RedirectToAction("GotoSmartTextBox", new { questionNumber = tmpstring })); } catch (Exception e) { return(RedirectToAction("Index")); } }
public ActionResult AnalyzeAnswer(string questionNumber) { try { int tmpQuestNumber = 1; if (questionNumber != null) { string[] tmpStringArray = questionNumber.Split(' '); tmpQuestNumber = Int32.Parse(tmpStringArray.Last()); if (tmpStringArray.Length > 4) { return(RedirectToAction("FinalAnswerSubmit", new { questionNumber = tmpQuestNumber, textContent = Request.Form["TextBoxArea"] })); } } string input = Request.Form["TextBoxArea"]; int numOfWords = _smartTextBox.GetNumberOfWords(input); int numOfConnectors = _smartTextBox.GetNumberOfConnectors(input); IDictionary <string, int> repeatedWords = _smartTextBox.GetRepeatedWords(input); string repeatedWordsString = ""; foreach (var word in repeatedWords) { if (word.Value >= 2 && _smartTextBox.IsConnector(word.Key)) { repeatedWordsString = repeatedWordsString + "השתמשת במילה " + word.Key + " " + word.Value + " פעמים, אולי תרצה להשתמש במילה אחרת כמו " + _smartTextBox.SuggestAlternativeWord(word.Key) + ". "; } if (word.Value >= 2 && _smartTextBox.IsConnector((word.Key).Substring(1))) { repeatedWordsString = repeatedWordsString + "השתמשת במילה " + (word.Key).Substring(1) + " " + word.Value + " פעמים, אולי תרצה להשתמש במילה אחרת כמו " + _smartTextBox.SuggestAlternativeWord((word.Key).Substring(1)) + ". "; } } smartView.QuestionNumber = tmpQuestNumber; string userid = User.Identity.GetUserId(); foreach (var std in _studentService.All().Include(x => x.Homeworks)) { if (std.ApplicationUserId.Equals(userid)) { student = std; break; } } string tmpName = (string)Session["textName"]; textGuid = _textService.All().Where(t => t.Name == tmpName).FirstOrDefault().Id; List <Homework> AllStudentHW = _homeworkService.All().Where(x => x.Text.Id == textGuid).ToList(); Homework hw = AllStudentHW.First(); List <Question> tmpQuestionsList = _homeworkService.All().Include(x => x.Questions.Select(q => q.Policy)).Where(x => x.Id == hw.Id).FirstOrDefault().Questions.ToList(); smartView.question = tmpQuestionsList.Where(x => x.Question_Number == tmpQuestNumber).FirstOrDefault(); smartView.Questions = tmpQuestionsList; if (smartView.question == null) { return(RedirectToAction("Index")); } if (smartView.question.Policy != null) { _policy = smartView.question.Policy; } TempData["NumberOfWords"] = numOfWords; TempData["NumberOfConnectorWords"] = numOfConnectors; TempData["Answer"] = input; TempData["AlternativeWords"] = repeatedWordsString; string tmpCounter = ""; if (numOfConnectors > _policy.MaxConnectors) { tmpCounter = "הכנסת " + numOfConnectors + " מילות קישור, אבל מותר לכל היותר " + _policy.MaxConnectors + " מילות קישור."; } if (numOfConnectors < _policy.MinConnectors) { tmpCounter = tmpCounter + " הכנסת " + numOfConnectors + " מילות קישור, אבל עלייך להכניס לכל הפחות " + _policy.MinConnectors + " מילות קישור."; } if (numOfWords > _policy.MaxWords) { tmpCounter = tmpCounter + " הכנסת " + numOfWords + " מילים, אבל מותר לכל היותר " + _policy.MaxWords + " מילים."; } if (numOfWords < _policy.MinWords) { tmpCounter = tmpCounter + " הכנסת " + numOfWords + " מילים, אבל עלייך להכניס לכל הפחות " + _policy.MinWords + " מילים."; } TempData["toManyConnectors"] = tmpCounter; if (smartView.question.Suggested_Openings.Count == 0) { SuggestedOpening noSuggOpen = new SuggestedOpening("אין משפטי פתיחה לשאלה זו"); SuggestedOpening noSuggOpen2 = new SuggestedOpening("התשובה לשאלה נמצאת בגוף השאלה"); smartView.question.Suggested_Openings.Add(noSuggOpen); smartView.question.Suggested_Openings.Add(noSuggOpen2); } List <int> SmartViewQuestionsNumbers = new List <int>(); List <QuestionAnswer> QuestionsAnswered = _answerService.All().Where(x => x.Homework_Id == hw.Id && x.Student_Id == student.Id).SelectMany(x => x.questionAnswers).ToList(); smartView.CompleteQuestions = QuestionsAnswered; if (QuestionsAnswered.Count() == 0) { smartView.CompleteQuestions = new List <QuestionAnswer>(); SmartViewQuestionsNumbers.Add(-1); smartView.CompleteQuestionsNumbers = SmartViewQuestionsNumbers; Session["percentage"] = 0; } else { int k = 0; foreach (var QuestAns in QuestionsAnswered) { SmartViewQuestionsNumbers.Add(QuestAns.Of_Question.Question_Number); k++; } smartView.CompleteQuestionsNumbers = SmartViewQuestionsNumbers; Session["percentage"] = (k / smartView.Questions.Count * 100); } return(View("QuestionsView", smartView)); } catch (Exception e) { return(RedirectToAction("Index")); } }
public ActionResult GotoSmartTextBox(string questionNumber) { try { int tmpQuestNumber = 1; if (questionNumber == "בחזרה לסיפור") { return(View("TextView")); } Session["WithQuestion?"] = "With"; if (questionNumber != null) { string[] tmpStringArray = questionNumber.Split(' '); tmpQuestNumber = Int32.Parse(tmpStringArray.Last()); } if (TempData["NumberOfWords"] == null && TempData["NumberOfConnectorWords"] == null) { TempData["NumberOfWords"] = "0"; TempData["NumberOfConnectorWords"] = "0"; // TempData["toManyWords"] = ""; } //InitializeSmartView(); smartView.QuestionNumber = tmpQuestNumber; string userid = User.Identity.GetUserId(); foreach (var std in _studentService.All().Include(x => x.Homeworks)) { if (std.ApplicationUserId.Equals(userid)) { student = std; break; } } string tmpName = (string)Session["textName"]; textGuid = _textService.All().Where(t => t.Name == tmpName).FirstOrDefault().Id; Session["TextContent"] = _textService.GetById(textGuid).Content; List <Homework> AllStudentHW = _homeworkService.All().Where(x => x.Text.Id == textGuid).ToList(); Homework hw = AllStudentHW.First(); if (hw.Deadline < DateTime.Now) { Answer tmpAns = _answerService.All().Include(q => q.questionAnswers.Select(y => y.Of_Question)).Where(x => x.Homework_Id == hw.Id && x.Student_Id == student.Id).FirstOrDefault(); if (tmpAns.TeacherFeedback == null) { tmpAns.TeacherFeedback = " עוד לא ניתנה תשובה על ידי המורה, אך ניתן לראות את תשובותייך"; } return(View("StudentEvaluationView", tmpAns)); } List <Question> tmpQuestionsList = _homeworkService.All().Include(x => x.Questions.Select(q => q.Policy)).Include(x => x.Questions.Select(q => q.Suggested_Openings)).Where(x => x.Id == hw.Id).FirstOrDefault().Questions.ToList(); smartView.question = tmpQuestionsList.Where(x => x.Question_Number == tmpQuestNumber).FirstOrDefault(); smartView.Questions = tmpQuestionsList; if (smartView.question == null) { return(RedirectToAction("Index")); } if (smartView.question.Suggested_Openings == null) { SuggestedOpening noSuggOpen = new SuggestedOpening("אין משפטי פתיחה לשאלה זו"); SuggestedOpening noSuggOpen2 = new SuggestedOpening("התשובה לשאלה נמצאת בגוף השאלה"); smartView.question.Suggested_Openings.Add(noSuggOpen); smartView.question.Suggested_Openings.Add(noSuggOpen2); } List <int> SmartViewQuestionsNumbers = new List <int>(); List <QuestionAnswer> QuestionsAnswered = _answerService.All().Where(x => x.Homework_Id == hw.Id && x.Student_Id == student.Id).SelectMany(x => x.questionAnswers).ToList(); if (QuestionsAnswered == null || QuestionsAnswered.Count == 0) { smartView.CompleteQuestions = new List <QuestionAnswer>(); SmartViewQuestionsNumbers.Add(-1); smartView.CompleteQuestionsNumbers = SmartViewQuestionsNumbers; Session["percentage"] = 0; } else { smartView.CompleteQuestions = QuestionsAnswered; double k = 0; foreach (var Ans in smartView.CompleteQuestions) { SmartViewQuestionsNumbers.Add(Ans.Of_Question.Question_Number); //----------------------COMMENT 1/5 k++; } smartView.CompleteQuestionsNumbers = SmartViewQuestionsNumbers; Session["percentage"] = (int)(k / smartView.Questions.Count() * 100); } return(View("QuestionsView", smartView)); } catch (Exception e) { return(RedirectToAction("Index")); } }