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)); }
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."); }