コード例 #1
0
ファイル: StatsService.cs プロジェクト: ilona1290/Web-Quiz
        public OtherStatsVm GetOtherStats()
        {
            int           counter = 1;
            int           numberOfUsersWhoAnswerToAllQuestion = 0;
            List <string> usersWhoAnswerToAllQuestion         = new List <string>();
            var           numberOfCategories = _statsRepo.GetAmountOfCategories();
            var           usersAndCategories = _statsRepo.GetUsersWhichAnsweredOnEveryQuestion().
                                               OrderBy(u => u.Username).ToList();

            for (int i = 1; i < usersAndCategories.Count(); i++)
            {
                if (usersAndCategories[i].Username == usersAndCategories[i - 1].Username)
                {
                    counter++;
                }
                else
                {
                    if (counter == numberOfCategories)
                    {
                        numberOfUsersWhoAnswerToAllQuestion++;
                        usersWhoAnswerToAllQuestion.Add(usersAndCategories[i - 1].Username);
                    }
                    counter = 1;
                }
            }
            if (counter == numberOfCategories)
            {
                numberOfUsersWhoAnswerToAllQuestion++;
                usersWhoAnswerToAllQuestion.Add(usersAndCategories[usersAndCategories.Count() - 1].Username);
            }

            var    data        = _statsRepo.GetDataFromQuestionsWithCorrectlyRespondsTable().OrderBy(u => u.QuestionId).ToList();
            int    counter2    = 1;
            int    maxCounter2 = 1;
            int    minCounter2 = int.MaxValue;
            int    questionIdOnWhichTheMostUsersAnsweredGood  = 0;
            string questionOnWhichTheMostUsersAnsweredGood    = "";
            int    questionIdOnWhichTheLeastUsersAnsweredGood = 0;
            string questionOnWhichTheLeastUsersAnsweredGood   = "";

            for (int i = 1; i < data.Count(); i++)
            {
                if (data[i].QuestionId == data[i - 1].QuestionId)
                {
                    counter2++;
                }
                else
                {
                    counter2 = 1;
                }
                if (maxCounter2 < counter2)
                {
                    maxCounter2 = counter2;
                    questionIdOnWhichTheMostUsersAnsweredGood = data[i].QuestionId;
                }
                if (minCounter2 > counter2)
                {
                    minCounter2 = counter;
                    questionIdOnWhichTheLeastUsersAnsweredGood = data[i].QuestionId;
                }
            }
            questionOnWhichTheMostUsersAnsweredGood = _catQueAnsRepo.ReturnDetailsOfQuestion(questionIdOnWhichTheMostUsersAnsweredGood)
                                                      .QuestionText;
            questionOnWhichTheLeastUsersAnsweredGood = _catQueAnsRepo.ReturnDetailsOfQuestion(questionIdOnWhichTheLeastUsersAnsweredGood)
                                                       .QuestionText;
            OtherStatsVm otherStatsVm = new OtherStatsVm()
            {
                NumberOfUsersWhoAnsweredToAllQuestions   = numberOfUsersWhoAnswerToAllQuestion,
                UsersWhoAnsweredToAllQuestions           = usersWhoAnswerToAllQuestion,
                QuestionOnWhichTheMostUsersAnsweredGood  = questionOnWhichTheMostUsersAnsweredGood,
                QuestionOnWhichTheLeastUsersAnsweredGood = questionOnWhichTheLeastUsersAnsweredGood
            };

            return(otherStatsVm);
        }