Exemplo n.º 1
0
 public BasicQueue(Guid queueGuid, Guid currentUser, NoteContext db, T[] array) : this(queueGuid, currentUser, db)
 {
     foreach (T a in array)
     {
         QuestionQueue queues = new QuestionQueue
         {
             QueueGuid       = guid,
             QuestionVersion = a.Version,
             QueueUser       = user,
             Ctime           = DateTime.Now
         };
         noteContext.QuestionQueue.Add(queues);
     }
     noteContext.SaveChanges();
 }
Exemplo n.º 2
0
            /// <summary>
            /// 入队
            /// </summary>
            /// <param name="obj"></param>
            public void Enqueue(T obj)
            {
                QuestionQueue queues = new QuestionQueue
                {
                    QueueGuid       = guid,
                    QuestionVersion = obj.Version,
                    QueueUser       = user,
                    Ctime           = DateTime.Now
                };

                if (!string.IsNullOrEmpty(obj.Content))
                {
                    queues.DynamicContent = obj.Content;
                }
                noteContext.QuestionQueue.Add(queues);
                noteContext.SaveChanges();
            }
Exemplo n.º 3
0
            /// <summary>
            /// 出队
            /// </summary>
            /// <returns></returns>
            public T Dequeue()
            {
                QuestionQueue queueRecord = (from s in noteContext.QuestionQueue
                                             where s.QueueGuid == guid
                                             orderby s.Ctime ascending
                                             select s).FirstOrDefault();

                noteContext.QuestionQueue.Remove(queueRecord);
                noteContext.SaveChanges();
                Question result = (from s in noteContext.Question where s.Version == queueRecord.QuestionVersion select s).FirstOrDefault();

                if (queueRecord.DynamicContent != null)
                {
                    result.Content = queueRecord.DynamicContent;
                }
                return(result as T);
            }
Exemplo n.º 4
0
            public IntelligenceQueue(Guid queueGuid, Guid currentUser, NoteContext db) : base(queueGuid, currentUser, db)
            {
#warning 此处不应该硬编码,未来修改时拆分至其他项目
                Guid          questionnaireGuid = Guid.Parse("b546b709-2b2b-4f6e-9f1f-64f281de8d5b");
                Questionnaire qn = (from questionnaire in db.Questionnaire
                                    where questionnaire.Version != Guid.Empty
                                    where questionnaire.QuestionnaireGuid == questionnaireGuid
                                    orderby questionnaire.Ctime
                                    select questionnaire).First();

                UserInformationRecord user         = db.UserInformation.First(x => x.UserGuid == currentUser);
                List <Guid>           questionList = JsonConvert.DeserializeObject <List <Guid> >(qn.Question);
                if (user.UserGender == UserInformationRecord.Gender.Man)
                {
                    //如果为男性,移除白带异常问题
                    questionList.Remove(Guid.Parse("23E317C9-D691-402E-8249-C0E4D3ED78D0"));
                }
                else
                {
                    //如果为女性,移除阴囊潮湿问题
                    questionList.Remove(Guid.Parse("A6C1DBC2-233D-4FA8-927B-8BAED0F709B3"));
                }

                DateTime today = DateTime.Now;//兼容多次测试
                //查找出用户已经答过的问题
                IQueryable <Guid> answeredQuestions = from answer in db.Answer
                                                      where answer.Userid == currentUser
                                                      where answer.Ctime.Date == today.Date//兼容多次测试
                                                      where answer.Mtime != DateTime.MinValue
                                                      where questionList.Contains(answer.QuestionGuid)
                                                      select answer.QuestionGuid;
                if (answeredQuestions.Any())
                {
                    //移除
                    foreach (Guid answeredQuestion in answeredQuestions)
                    {
                        questionList.Remove(answeredQuestion);
                        //Console.WriteLine("移除了一个记录:" + answeredQuestion);
                    }
                }
                //Console.WriteLine($"该用户还有{questionList.Count}道题没有完成");
                IOrderedQueryable <Question> questionRecords = from s in db.Question
                                                               where s.Version != Guid.Empty
                                                               orderby s.Ctime descending
                                                               select s;
                foreach (Guid a in questionList)
                {
                    QuestionQueue queues = new QuestionQueue
                    {
                        QueueGuid       = guid,
                        QuestionVersion = questionRecords.First(x => x.QuestionGuid == a).Version,
                        QueueUser       = base.user,
                        Ctime           = DateTime.Now
                    };
                    db.QuestionQueue.Add(queues);
                }

                db.QuestionQueue.Add(new QuestionQueue
                {
                    QueueGuid       = guid,
                    QuestionVersion = Guid.Parse("CB849EFF-6C6F-433B-BB46-535570D6158B"),
                    Ctime           = DateTime.Now,
                    QueueUser       = base.user,
                    DynamicContent  = JsonConvert.SerializeObject(new Conclusion
                    {
                        Link    = $"Result/{base.user.ToString()}",
                        Title   = "您的体质似乎是这样的……",
                        Options = new Dictionary <string, BooleanOption.Option>
                        {
                            { "Left", new BooleanOption.Option {
                                  Text = "哦?"
                              } },
                            { "Right", new BooleanOption.Option {
                                  Text = "我想知道"
                              } },
                        }
                    })
                });

                db.SaveChanges();
            }