Пример #1
0
        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);
        }
Пример #2
0
        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"));
        }
Пример #3
0
        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);
        }
Пример #4
0
        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"));
            }
        }
Пример #5
0
        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"));
            }
        }
Пример #6
0
        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"));
            }
        }