public void GetNumberOfConnectorsTests() { _smartTextBox = new SmartTextBoxImpl(); _text = "את מספר מילות הקישור נספור כאשר מידי פעם נזרוק מילה כמו זו אולם ספרתי כבר 3"; Assert.AreEqual(3, _smartTextBox.GetNumberOfConnectors(_text)); _text = "כמו אבל אולם נספור כך, בשל לאור לפיכך כבר 6"; Assert.AreEqual(6, _smartTextBox.GetNumberOfConnectors(_text)); _text = "נרצה לוודא עבוד מילים מסובכות בזמן שננסה יש 1"; Assert.AreEqual(1, _smartTextBox.GetNumberOfConnectors(_text)); _text = "במשפט הזה אני לא אשים שום מילת חיבור"; Assert.AreEqual(0, _smartTextBox.GetNumberOfConnectors(_text)); }
public ActionResult AnalyzeAnswer() { // here we have to call the SmartTextBox in server side string input = Request.Form["TextBoxArea"]; int numOfWords = _smartTextBox.GetNumberOfWords(input); int numOfConnectors = _smartTextBox.GetNumberOfConnectors(input); TempData["NumberOfWords"] = numOfWords; TempData["NumberOfConnectorWords"] = numOfConnectors; TempData["Answer"] = input; //כשנוסיף את הפוליסי שתרוץ לא תהיה כנראה את הבעיה.. בינתיים Policy _policy = new Policy(); HashSet <string> _keySentencesList = new HashSet <string>(); _keySentencesList.Add("התשובה לשאלה שנשאלה היא"); _policy = new Policy() { Id = Guid.NewGuid(), MinWords = 20, MaxWords = 30, MinConnectors = 3, MaxConnectors = 8 }; if (numOfWords > _policy.MaxWords) { TempData["toManyWords"] = "הכנסת " + numOfWords + " מילים, אבל מותר לכל היותר " + _policy.MaxWords + " מילים."; } if (numOfConnectors > _policy.MaxConnectors) { TempData["toManyConnectors"] = "הכנסת " + numOfConnectors + " מילות קישור, אבל מותר לכל היותר " + _policy.MaxConnectors + " מילות קישור."; } return(RedirectToAction("SmartTextBox", _policy)); }
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")); } }