Exemple #1
0
        public string GetAnswer(string S)
        {
            string AnswerText;
            int    IdAnswer;
            bool   Done = false;
            IEnumerable <string> RequestWords;

            RequestWords = GetWords(S);
            int wordsCount = RequestWords.Count();

            using (var db = new LiteDatabase(filePath))
            {
                var requests = db.GetCollection <Request>("requests");
                var answers  = db.GetCollection <Answer>("answers");

                if (requests.Find(x => x.Text.Equals(S)).Count() != 0)
                {
                    var request = requests.Find(x => x.Text.Equals(S));
                    IdAnswer = request.ElementAt(0).AnwserId;
                    if (IdAnswer != -1)
                    {
                        AnswerText = "Ваш ответ :" + ((answers.Find(x => x.Id == IdAnswer)).ElementAt(0)).Text;
                        Done       = true;
                    }
                    else
                    {
                        AnswerText = "Вопрос в очереди на рассмотрение экспертом";
                    }
                }
                else
                {
                    int[] Ar = new int[requests.FindAll().Count()];
                    int   i  = 0;

                    for (i = 0; i < requests.FindAll().Count(); i++)
                    {
                        Ar[i] = 0;
                    }
                    i = 0;
                    foreach (var req in requests.FindAll())
                    {
                        foreach (string word in RequestWords)
                        {
                            for (int j = 0; j < GetWords(req.Text).Count(); j++)
                            {
                                if (word.Equals(GetWords(req.Text).ElementAt(j)))
                                {
                                    Ar[i] += 1;
                                }
                            }
                        }
                        i++;
                    }
                    int Max = 0, Maxi = -1;
                    for (i = 0; i < requests.FindAll().Count(); i++)
                    {
                        if (Ar[i] > 0)
                        {
                            Maxi = i; Max = Ar[i];
                        }
                    }
                    if (Max >= WordsCount[wordsCount])
                    {
                        IdAnswer = requests.FindById(Maxi + 1).AnwserId;
                        if (IdAnswer < 0)
                        {
                            AnswerText = "Ответ не найден";
                            //MessageBox.Show(RequestWords.ElementAt(0) + RequestWords.ElementAt(1));
                            var request = new Request {
                                AnwserId = -1, Text = S, Words = RequestWords
                            };
                            requests.Insert(request);
                        }
                        else
                        {
                            if (Max == wordsCount)
                            {
                                AnswerText = "Ваш ответ :" + answers.FindById(IdAnswer).Text;
                            }
                            else
                            {
                                if (MessageBox.Show("Возможно вы имелли ввиду" + answers.FindById(IdAnswer).Text, "Question",
                                                    MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
                                {
                                    AnswerText = "Ваш ответ :" + answers.FindById(IdAnswer).Text;
                                }
                                else
                                {
                                    AnswerText = "Ответ на ваш вопрос мне не известен, я спрошу у Эксперта";
                                }
                            }
                        }
                    }
                    else
                    {
                        AnswerText = "Ответ не найден";
                        //MessageBox.Show(RequestWords.ElementAt(0) + RequestWords.ElementAt(1));
                        var request = new Request {
                            AnwserId = -1, Text = S, Words = RequestWords
                        };
                        requests.Insert(request);
                    }
                }
            }
            return(AnswerText);
        }
Exemple #2
0
        public string GetAnswer(string S)
        {
            string AnswerText;
            int    IdAnswer;
            bool   Done = false;
            IEnumerable <string> RequestWords;

            RequestWords = GetWords(S);
            filePath     = System.IO.Path.Combine(mydocpath, "Requests-Answers.db");
            using (var db = new LiteDatabase(filePath))
            {
                var requests = db.GetCollection <Request>("requests");
                var answers  = db.GetCollection <Answer>("answers");

                if (requests.Find(x => x.Text.Equals(S)).Count() != 0)
                {
                    var request = requests.Find(x => x.Text.Equals(S));
                    IdAnswer = request.ElementAt(0).AnwserId;
                    if (IdAnswer != -1)
                    {
                        AnswerText = ((answers.Find(x => x.Equals(IdAnswer))).ElementAt(0)).Text;
                        Done       = true;
                    }
                    else
                    {
                        AnswerText = "Вопрос в очереди на рассмотрение";
                    }
                }
                else
                {
                    int[] Ar = new int[requests.FindAll().Count()];
                    int   i  = 0;

                    for (i = 0; i < requests.FindAll().Count(); i++)
                    {
                        Ar[i] = 0;
                    }
                    i = 0;
                    int wordsCount = RequestWords.Count();
                    foreach (var req in requests.FindAll())
                    {
                        foreach (string word in RequestWords)
                        {
                            foreach (string wor in req.Words)
                            {
                                if (word.Equals(wor))
                                {
                                    Ar[i] += 1;
                                }
                            }
                        }
                        i++;
                    }
                    int Max = 0, Maxi = -1;
                    for (i = 0; i < requests.FindAll().Count(); i++)
                    {
                        if (Ar[i] > 0)
                        {
                            Maxi = i; Max = Ar[i];
                        }
                    }
                    if (Max == 0)
                    {
                        AnswerText = "Ответ не найден";
                        var request = new Request {
                            AnwserId = -1, Text = S, Words = RequestWords
                        };
                        requests.Insert(request);
                    }
                    else
                    {
                        IdAnswer   = requests.FindById(Maxi).AnwserId;
                        AnswerText = answers.FindById(IdAnswer).Text;
                    }
                }
            }
            return(AnswerText);
        }