Пример #1
0
        public void StageNewUser(string UserName)
        {
            List <ShowCharacterStatusRecord> allCharacters = GetAllCharacters().ToList();

            foreach (ShowCharacterStatusRecord character in allCharacters)
            {
                UserCharacterSelection newUserCharacterSelection = new UserCharacterSelection();
                newUserCharacterSelection.AliveStatus         = true;
                newUserCharacterSelection.BecomesAWhiteWalker = false;
                newUserCharacterSelection.CharacterName       = character.CharacterName;
                newUserCharacterSelection.UserName            = UserName;
                newUserCharacterSelection.CreatedDate         = DateTime.Now;

                _context.UserCharacterSelection.Add(newUserCharacterSelection);
            }
            _context.SaveChanges();
            return;
        }
Пример #2
0
        public ActionResult UpdateScores()
        {
            string username = HttpContext.User.Identity.Name;

            //string user = UserManager.GetUserName(User);
            if (!admins.Contains(username))
            {
                return(Unauthorized());
            }
            //todo update and reward for proper whitewalker guesses
            List <CorrectAnswers> Correct = _context.CorrectAnswers.FromSqlRaw(@"select UserName,count(distinct ShowCharacterStatusRecordID) as 'MatchingAnswers' 
                    from UserCharacterSelection as USelection
                    join ShowCharacterStatusRecord as SHOW on SHOW.CharacterName = USelection.CharacterName and SHow.AliveStatus = USelection.AliveStatus
                    group by UserName ").ToList();

            List <wrongWhiteWalkers> wrongWW = _context.wrongWhiteWalkers.FromSqlRaw(@"select UserName,count(distinct ShowCharacterStatusRecordID) as 'WrongWhiteWalkers' 
                    from UserCharacterSelection as USelection
                    join ShowCharacterStatusRecord as SHOW on SHOW.CharacterName =USelection.CharacterName and SHow.WhiteWalkerStatus != USelection.BecomesAWhiteWalker
                    where USelection.BecomesAWhiteWalker = 1
                    group by UserName").ToList();
            List <rightWhiteWalkers> rightWW = _context.rightWhiteWalkers.FromSqlRaw(@"select UserName, count(distinct ShowCharacterStatusRecordID) as 'RightWhiteWalkers'
                    from UserCharacterSelection as USelection
                    join ShowCharacterStatusRecord as SHOW on SHOW.CharacterName = USelection.CharacterName and SHow.WhiteWalkerStatus = USelection.BecomesAWhiteWalker
                    where USelection.BecomesAWhiteWalker = 1
                    group by UserName").ToList();

            List <BonusQuestions> bonus = _context.BonusQuestions.FromSqlRaw(@"select UserName, QuestionNumber 
                    from UserBonusQuestion 
                    where Correct = 1
                    group by UserName, QuestionNumber ").ToList();

            foreach (UserScoreRecord user in _context.UserScoreRecord.ToList())
            {
                user.BonusScore = 0;
                user.BaseScore  = 0;
                user.TotalScore = 0;

                var thisUserBase                    = Correct.Where(m => m.UserName.Equals(user.UserName)).FirstOrDefault();
                var thisUserWrongWhiteWalker        = wrongWW.Where(m => m.UserName.Equals(user.UserName)).FirstOrDefault();
                var thisUserRightWhiteWalker        = rightWW.Where(m => m.UserName.Equals(user.UserName)).FirstOrDefault();
                List <BonusQuestions> thisUserBonus = bonus.Where(m => m.UserName.Equals(user.UserName)).ToList();
                //string msg = "updating: " + user.UserFriendlyName;
                int score = thisUserBase.MatchingAnswers;


                user.BaseScore = (thisUserWrongWhiteWalker == null) ? score : score - thisUserWrongWhiteWalker.WrongWhiteWalkers;
                user.BaseScore = (thisUserRightWhiteWalker == null) ? score : score + thisUserRightWhiteWalker.RightWhiteWalkers;

                if (thisUserBonus != null)
                {
                    foreach (BonusQuestions b in thisUserBonus)
                    {
                        if (b.QuestionNumber == 1)
                        {
                            user.BonusScore += 1;
                        }
                        if (b.QuestionNumber == 2)
                        {
                            user.BonusScore += 2;
                        }
                        if (b.QuestionNumber == 3)
                        {
                            user.BonusScore += 4;
                        }
                    }
                }

                user.TotalScore  = user.BonusScore + score;
                user.CreatedDate = DateTime.Now;
                _context.SaveChanges();
            }

            TempData["Message"] = "Updated scores...";
            return(RedirectToAction("Update"));
        }