public decimal GetResult(int questionIndex, int answerIndex)
 {
     // Logging
     using (var context = new LoggerContext())
     {
         var log = context.UserAnswerLogs.Where(q => q.QuestionNumber == questionIndex).FirstOrDefault();
         if (log == null)
         {
             log = new UserAnswerLog()
             {
                 QuestionNumber = questionIndex, FirstAnswerCount = 0, SecondAnswerCount = 0, ThirdAnswerCount = 0, FourthAnswerCount = 0
             };
             log = context.UserAnswerLogs.Add(log);
             context.SaveChanges();
         }
         if (answerIndex == 0)
         {
             log.FirstAnswerCount++;
         }
         if (answerIndex == 1)
         {
             log.SecondAnswerCount++;
         }
         if (answerIndex == 2)
         {
             log.ThirdAnswerCount++;
         }
         if (answerIndex == 3)
         {
             log.FourthAnswerCount++;
         }
         context.SaveChanges();
     }
     using (var xmlReader = XmlReader.Create(_xmlUrl))
     {
         var questions = new XmlQuestionRepository(xmlReader).GetAll();
         if (questions[questionIndex].CorrectAnswer == questions[questionIndex].Answers.ElementAt(answerIndex))
         {
             if (questionIndex != questions.Count - 1)
             {
                 // Game still on
                 return(-1);
             }
             else
             {
                 // Player wins
                 return(questions[questionIndex].Price);
             }
         }
         else
         {
             // Calculating prize as first guaranteed question
             return(CalculateResult(questionIndex));
         }
     }
 }
Ejemplo n.º 2
0
        public async Task <int> UpdateAsync(UserAnswerLog userAnswerLog)
        {
            int id = 0;

            try
            {
                DataContext dataContext = new DataContext();
                var         entity      = dataContext.UserAnswerLog.Update(userAnswerLog);
                await dataContext.SaveChangesAsync();

                id = entity.Entity.Id;
            }
            catch (Exception e)
            {
                ClassLoger.Error("UserAnswerLogDal.UpdateAsync", e);
            }
            return(id);
        }
Ejemplo n.º 3
0
 public async Task <int> UpdateAsync(UserAnswerLog userAnswerLog)
 {
     return(await UserAnswerLogDal.Ins.UpdateAsync(userAnswerLog));
 }
Ejemplo n.º 4
0
 public async Task <int> AddAsync(UserAnswerLog userAnswerLog)
 {
     return(await UserAnswerLogDal.Ins.AddAsync(userAnswerLog));
 }
Ejemplo n.º 5
0
        /// <summary>
        /// 开始答题
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> StartAnswer()
        {
            QuestionsBll bll   = new QuestionsBll();
            var          list1 = await bll.GetList(QuestionsTypeEnum.ChoiceOne, 90);

            var list2 = await bll.GetList(QuestionsTypeEnum.ChoiceMore, 10);

            var list3 = await bll.GetList(QuestionsTypeEnum.FillInTheBlanks, 5);

            List <Questions> list = new List <Questions>();

            if (list1 != null)
            {
                list.AddRange(list1);
            }

            if (list2 != null)
            {
                list.AddRange(list2);
            }

            list = list.OrderBy(x => x.Id).ToList();
            UserAnswerLog    log    = new UserAnswerLog();
            UserAnswerLogBll logBll = new UserAnswerLogBll();

            log.CreateTime = DateTime.Now;
            log.UserId     = User.ID;
            int logid = await logBll.AddAsync(log);

            int index = 1;
            UserQuestionsBll     uqbll      = new UserQuestionsBll();
            OptionBll            obll       = new OptionBll();
            List <Option>        optionList = new List <Option>();
            List <UserQuestions> uoList     = new List <UserQuestions>();

            foreach (Questions questionse in list)
            {
                UserQuestions userQuestions = new UserQuestions();
                userQuestions.LogId       = logid;
                userQuestions.QIndex      = index;
                userQuestions.QuestionsId = questionse.Id;
                userQuestions.Id          = await uqbll.AddAsync(userQuestions);

                index++;
                var olist = await obll.GetList(questionse.Id);

                if (olist != null)
                {
                    optionList.AddRange(olist);
                }
                uoList.Add(userQuestions);
            }

            if (list3 != null)
            {
                foreach (Questions questionse in list3)
                {
                    UserQuestions userQuestions = new UserQuestions();
                    userQuestions.LogId       = logid;
                    userQuestions.QIndex      = index;
                    userQuestions.QuestionsId = questionse.Id;
                    userQuestions.Id          = await uqbll.AddAsync(userQuestions);

                    index++;
                    uoList.Add(userQuestions);
                }
            }

            ViewBag.optionList = optionList;
            list.AddRange(list3);
            ViewBag.list = list;
            return(View(uoList));
        }