示例#1
0
        private void RecalculateAchievements()
        {
            var sosDb       = new SosDb();
            var allSettings = sosDb
                              .ReadAll(_settings.GetAllActiveBuildDefinitions())
                              .OrderBy(i => i.StartedTime)
                              .ToList();

            foreach (var person in _settings.People)
            {
                person.TotalBuilds  = 0;
                person.FailedBuilds = 0;
                person.Achievements.Clear();
                person.CumulativeBuildTime = 0;
            }
            _status.Visible = true;
            var allActiveBuildDefinitionsOrderedChronoligically = new List <BuildStatus>();
            var buildCount = allSettings.Count;

            progressBar1.Maximum = buildCount;
            foreach (var buildStatus in allSettings)
            {
                _status.Text = string.Format("Processing {0:d}", buildStatus.StartedTime);
                progressBar1.Value++;
                var person = _settings.People.FirstOrDefault(i => i.RawName == buildStatus.RequestedBy);
                if (person == null)
                {
                    _log.Error("Could not find " + buildStatus.RequestedBy);
                    continue;
                }
                person.TotalBuilds++;
                if (buildStatus.BuildStatusEnum == BuildStatusEnum.Broken)
                {
                    person.FailedBuilds++;
                }
                allActiveBuildDefinitionsOrderedChronoligically.Add(buildStatus);
                var newAchievements = person
                                      .CalculateNewAchievements(_settings, buildStatus, allActiveBuildDefinitionsOrderedChronoligically)
                                      .ToList();

                if (!newAchievements.Any())
                {
                    continue;
                }

                person.AddAchievements(newAchievements);
                foreach (var achievementLookup in newAchievements)
                {
                    NewAchievement.ShowForm(_settings, achievementLookup, person, this, modal: true);
                }
            }
            _settings.Save();
        }
        public ActionResult CreateAchievement(NewAchievement NA)
        {
            var user = System.Web.HttpContext.Current.User;
            var game = AC.Games.FirstOrDefault(x => x.GameID == NA.NewAchievementID);
            //var currentuser = Membership.GetUser(User.Identity.Name);
            var achievement = new UserAchievement()
            {
                ThiefLives = NA.ThiefLives,
                ThiefTries = NA.ThiefTries,
                UserID     = user.Identity.Name,
                Game       = game
            };

            AC.Achievements.Add(achievement);
            AC.SaveChanges();
            return(new HttpStatusCodeResult(HttpStatusCode.OK));
        }
示例#3
0
 public NewAchievement AddProposedAchievement(ProposedAchievementRequest proposedAchievementRequest)
 {
     using (SqlConnection connection = new SqlConnection(_connectionString))
     {
         var newAchievement = new NewAchievement()
         {
             GameId        = proposedAchievementRequest.GameId,
             Name          = proposedAchievementRequest.Name,
             Description   = proposedAchievementRequest.Description,
             Image         = proposedAchievementRequest.Image,
             DateSubmitted = DateTime.Now,
             Difficulty    = proposedAchievementRequest.Difficulty
         };
         var queryString = @"Insert into Achievement(GameId, Name, Description, Image, DateSubmitted, IsPending, IsApproved, VotingIsActive, Difficulty)
                                 Output inserted.*
                                 Values(@GameId, @Name, @Description, @Image, @DateSubmitted, 1, 0, 1, @Difficulty)";
         var achievement = connection.QueryFirstOrDefault <NewAchievement>(queryString, newAchievement);
         return(achievement);
     }
     throw new Exception("Could not post new achievement.");
 }