Exemplo n.º 1
0
        static void Main(string[] args)
        {
            AnswerFinder        answerFinder = new AnswerFinder();
            String              question     = Console.ReadLine();
            String              subject      = Console.ReadLine();
            List <QuestionInfo> results      = answerFinder.FindAnswers(question, subject);

            foreach (QuestionInfo questionInfo in results)
            {
                Console.WriteLine("******");
                Console.WriteLine(questionInfo.Question);
                Console.WriteLine(questionInfo.Answer);
            }

            Console.WriteLine("Done");
        }
Exemplo n.º 2
0
        public IActionResult Query(UserEnterBindingModel model)
        {
            //Check if subject already exist in the database
            SubjectModel subjectModel = dbContext.Subjects.Where(s => s.Subject.Equals(model.Subject)).Include(x => x.MatchingQuerys).FirstOrDefault();

            if (subjectModel != null)
            {
                if (subjectModel.MatchingQuerys != null)
                {
                    Query foundQueryFromSubject = subjectModel.MatchingQuerys.Where(q => q.Question.Equals(model.Question)).FirstOrDefault();

                    //Found the question. Display it.

                    if (foundQueryFromSubject != null)
                    {
                        //log info to the user's file
                        if (User.FindFirstValue(ClaimTypes.NameIdentifier) != null)
                        {
                            _logger.StoreInfo(User.FindFirstValue(ClaimTypes.NameIdentifier), foundQueryFromSubject.Question, foundQueryFromSubject.Answer);
                        }


                        return(View(foundQueryFromSubject));
                    }
                }
            }
            else
            {
                //Save the new subject in the database
                dbContext.InsertSubject(new SubjectModel {
                    Subject = model.Subject
                });
            }

            //The subject exists. The query does not.

            Query query = new Query();

            SubjectModel subjectForQuery = dbContext.Subjects.Where(s => s.Subject.Equals(model.Subject)).First();


            //match the question asked to the user logged in
            query.UserId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            //Add the subject id to the query
            //   query.SubjectModelId = subjectForQuery.ID;


            //get the response from algorithm
            List <QuestionInfo> res = _answerFinder.FindAnswers(model.Question, model.Subject);

            //Convert the response into a readable format
            StringBuilder stringBuilder = new StringBuilder();
            const String  newLine       = "<br>";

            for (int i = 0; i < res.Count; i++)
            {
                if (i == 1)
                {
                    query.IsMultipleAnswer = true;
                }

                stringBuilder.Append("<span class='topic'>" + res[i].Question + "</span>");
                stringBuilder.Append(newLine);
                stringBuilder.Append(res[i].Answer);
                if (i != res.Count - 1)
                {
                    stringBuilder.Append(newLine + newLine);
                }
            }

            query.Question = model.Question;
            query.Answer   = stringBuilder.ToString();

            //log info to the user's file
            if (query.UserId != null)
            {
                _logger.StoreInfo(query.UserId, query.Question, query.Answer.Length == 0?"Nothing found, sorry.":query.Answer);
            }


            subjectForQuery.MatchingQuerys.Add(query);

            dbContext.SaveChanges();

            return(View(query));
        }