//если в FAQ вернет айди FAQ иначе -1 public int inFAQ(QA x) { FAQ f;// = db.tFAQ.Where(c => c.theme_id == x.theme_id).FirstOrDefault(); foreach (var a in db.tFAQ) { if(a.theme_id==x.theme_id) { if(x.question == a.question) { return a.Id; } } } return -1; }
//вернет сложность вопроса public int DifficulityQ(QA x) { Themes t = db.tThemes.Where(c => c.Id == x.theme_id).FirstOrDefault(); int kAnsweredQa=0; foreach (var a in db.tFQA) { if (a.theme_id == t.Id) { if (a.answer != null && a.answer != "") kAnsweredQa++; } } int res = t.difficulity; res -= delPercent * (kAnsweredQa / this.nullDifficulityOfQA); if (res < 0) res = 0; return res; }
public QA proccessMessage(string title, string message, string email) { QA res = new QA(); res.theme_id = ThemeQ(title); res.question = message; res.email = email; res.start_time = DateTime.Now; Themes sot = db.tThemes.Where(c => c.Id == res.theme_id).FirstOrDefault(); int year = res.start_time.Year + sot.standart_time.Year; int month = res.start_time.Month + sot.standart_time.Month; int day = res.start_time.Day + sot.standart_time.Day; int hour = res.start_time.Hour + sot.standart_time.Hour; int minute = res.start_time.Minute + sot.standart_time.Minute; int sec = res.start_time.Second + sot.standart_time.Second; DateTime dt = new DateTime(year, month, day, hour, minute, sec); res.end_time = dt; return res; }
public string getSomeQA(QA x, bool isNeedAnswer) { string res=""; List<int> lq; if (!isNeedAnswer) lq = analyzer.someQ(x); else lq = analyzer.someAnswers(x); if (lq == null) return res; foreach (var a in db.tFQA) { if (!lq.Contains(a.Id)) continue; res += a.Id.ToString() + "|"; res += a.question + "|"; Themes t = db.tThemes.Where(c => c.Id == a.theme_id).FirstOrDefault(); if (t == null) throw new Exception("Не найдена тема getSomeQ control"); res += t.Theme + "|"; res += a.answer; res += "~"; } return res; }
//обработка сообщений (теги удаляет) public QA proccessMessage(MailMessage message) { QA res = new QA(); res.theme_id = ThemeQ(message.Subject); bool tag = false; //это убирает лишние теги из письма <div></div> for (int i = 0; i < message.Body.Length; i++ ) { if (message.Body[i] == '<') tag = true; if(!tag) { res.question += message.Body[i]; } if (message.Body[i] == '>') tag = false; } res.consulter_id = -1; res.email = message.From.Address; res.start_time = DateTime.Now; res.end_time = DateTime.Now; return res; }
//вернет айдишники похожих QA по вопросу public List<int> someQ(QA x) { List<int> res = new List<int>(); if (x != null) { foreach (var a in db.tFQA) { if (a.theme_id == x.theme_id) { if (match(x.question, a.question)) res.Add(a.Id); } } } return res; }
//вернет айдишники похожих QA по ответу public List<int> someAnswers(QA x) { List<int> res = new List<int>(); if (x!=null && x.answer != null) { foreach (var a in db.tFQA) { if (a.theme_id == x.theme_id && a.answer != null) { if (match(x.answer, a.answer)) res.Add(a.Id); } } } return res; }
public int getDiff(QA x) { return analyzer.DifficulityQ(x); }