public void AddVote(VotingAction action) { var vote = from v in votes where v.Key.Action == action.Action select v; if (vote.Count() > 0) { var actVote = vote.First(); action.Count = (actVote.Key.Count + action.Count) / 2; actVote.Value.AddVote(action); DisplaySortedVotes(); } else { Votes aVote = new Votes(votes.Count(), action); votes.Add(action, aVote); aVote.AddToPanel(votingPanel); } }
/// <summary> /// Gets the vote count for a pair of URIs /// </summary> /// <param name="raaPerson">a Person object from Riksantikvarieämbetet</param> /// <param name="librisPerson">a Person object from Libris</param> /// <returns>the nr of votes in a VOTE object</returns> public Votes GetVotes(Person raaPerson, Person librisPerson) { Votes vote = new Votes(); const string sql = "select PositiveVotes, NegativeVotes from votecount where RAAId = @raaId and LibrisId = @librisId "; MySqlCommand command = new MySqlCommand { Connection = mySqlConnection, CommandText = sql }; command.Parameters.AddWithValue("@raaId", raaPerson.URI); command.Parameters.AddWithValue("@librisId", librisPerson.URI); try { mySqlConnection.Open(); MySqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { vote = new Votes(reader.GetInt32(0), reader.GetInt32(1)); } reader.Close(); } catch (MySqlException) { vote = new Votes(); } finally { mySqlConnection.Close(); } return vote; }
public async Task <object[]> GetBallots( AccountParameter sender, Int32Parameter level, DateTimeParameter timestamp, Int32Parameter epoch, Int32Parameter period, ProtocolParameter proposal, SortParameter sort, OffsetParameter offset, int limit, string field, Symbols quote) { var columns = new HashSet <string>(4); var joins = new HashSet <string>(3); switch (field) { case "id": columns.Add(@"o.""Id"""); break; case "level": columns.Add(@"o.""Level"""); break; case "timestamp": columns.Add(@"o.""Timestamp"""); break; case "hash": columns.Add(@"o.""OpHash"""); break; case "delegate": columns.Add(@"o.""SenderId"""); break; case "rolls": columns.Add(@"o.""Rolls"""); break; case "vote": columns.Add(@"o.""Vote"""); break; case "proposal": columns.Add(@"proposal.""Hash"" as ""ProposalHash"""); columns.Add(@"proposal.""Metadata""->> 'alias' as ""ProposalAlias"""); joins.Add(@"INNER JOIN ""Proposals"" as proposal ON proposal.""Id"" = o.""ProposalId"""); break; case "period": columns.Add(@"o.""Epoch"""); columns.Add(@"o.""Period"""); columns.Add(@"period.""Kind"""); columns.Add(@"period.""FirstLevel"""); columns.Add(@"period.""LastLevel"""); joins.Add(@"INNER JOIN ""VotingPeriods"" as period ON period.""Index"" = o.""Period"""); break; case "block": columns.Add(@"b.""Hash"""); joins.Add(@"INNER JOIN ""Blocks"" as b ON b.""Level"" = o.""Level"""); break; case "quote": columns.Add(@"o.""Level"""); break; } if (period != null) { joins.Add(@"INNER JOIN ""VotingPeriods"" as period ON period.""Index"" = o.""Period"""); } if (proposal != null) { joins.Add(@"INNER JOIN ""Proposals"" as proposal ON proposal.""Id"" = o.""ProposalId"""); } if (columns.Count == 0) { return(Array.Empty <object>()); } var sql = new SqlBuilder($@"SELECT {string.Join(',', columns)} FROM ""BallotOps"" as o {string.Join(' ', joins)}") .Filter("SenderId", sender) .FilterA(@"o.""Level""", level) .FilterA(@"o.""Timestamp""", timestamp) .FilterA(@"o.""Epoch""", epoch) .FilterA(@"o.""Period""", period) .FilterA(@"proposal.""Hash""", proposal) .Take(sort, offset, limit, x => x == "level" ? ("Id", "Level") : ("Id", "Id"), "o"); using var db = GetConnection(); var rows = await db.QueryAsync(sql.Query, sql.Params); //TODO: optimize memory allocation var result = new object[rows.Count()]; var j = 0; switch (field) { case "id": foreach (var row in rows) { result[j++] = row.Id; } break; case "level": foreach (var row in rows) { result[j++] = row.Level; } break; case "block": foreach (var row in rows) { result[j++] = row.Hash; } break; case "timestamp": foreach (var row in rows) { result[j++] = row.Timestamp; } break; case "hash": foreach (var row in rows) { result[j++] = row.OpHash; } break; case "period": foreach (var row in rows) { result[j++] = new PeriodInfo { Index = row.Period, Epoch = row.Epoch, Kind = PeriodKinds.ToString(row.Kind), FirstLevel = row.FirstLevel, LastLevel = row.LastLevel } } ; break; case "proposal": foreach (var row in rows) { result[j++] = new ProposalAlias { Hash = row.ProposalHash, Alias = row.ProposalAlias } } ; break; case "delegate": foreach (var row in rows) { result[j++] = await Accounts.GetAliasAsync(row.SenderId); } break; case "rolls": foreach (var row in rows) { result[j++] = row.Rolls; } break; case "vote": foreach (var row in rows) { result[j++] = Votes.ToString(row.Vote); } break; case "quote": foreach (var row in rows) { result[j++] = Quotes.Get(quote, row.Level); } break; } return(result); }
public override string ToString() { var remaining = Finished - DateTime.Now; return($@"Vote to wipe wild dinos due to ""{Reason}""{Environment.NewLine}{Votes.Count} votes ({Votes.Count(x => x.VotedFor)} voted for, {Votes.Count(x => !x.VotedFor)} voted against)" + (remaining > TimeSpan.Zero ? ", remaining time " + remaining.ToStringCustom(true) : "")); }
private void OnStateChange(KMGameInfo.State state) { CurrentState = state; if (!transform.gameObject.activeInHierarchy) { return; } Votes.OnStateChange(); CheckSupport.Cleanup(); if (state != KMGameInfo.State.PostGame && _leaderboardDisplay != null) { DestroyObject(_leaderboardDisplay); _leaderboardDisplay = null; } twitchGame?.gameObject.SetActive(state == KMGameInfo.State.Gameplay); OtherModes.RefreshModes(state); // Automatically check for updates after a round is finished or when entering the setup state but never more than once per hour. bool hourPassed = DateTime.Now.Subtract(Updater.LastCheck).TotalHours >= 1; if ((state == KMGameInfo.State.PostGame || state == KMGameInfo.State.Setup) && hourPassed && !Updater.UpdateAvailable) { _coroutinesToStart.Enqueue(AutomaticUpdateCheck()); } switch (state) { case KMGameInfo.State.Gameplay: DefaultCamera(); LeaderboardController.DisableLeaderboards(); break; case KMGameInfo.State.Setup: DefaultCamera(); _coroutinesToStart.Enqueue(VanillaRuleModifier.Refresh()); _coroutinesToStart.Enqueue(MultipleBombs.Refresh()); _coroutinesToStart.Enqueue(FactoryRoomAPI.Refresh()); if (!initialLoad) { initialLoad = true; _coroutinesToStart.Enqueue(ComponentSolverFactory.LoadDefaultInformation(true)); _coroutinesToStart.Enqueue(Repository.LoadData()); if (TwitchPlaySettings.data.TestModuleCompatibility && !TwitchPlaySettings.data.TwitchPlaysDebugEnabled) { _coroutinesToStart.Enqueue(CheckSupport.FindSupportedModules()); } } // Clear out the retry reward if we return to the setup room since the retry button doesn't return to setup. // A post game run command would set the retry bonus and then return to the setup room to start the mission, so we don't want to clear that. if (TwitchPlaySettings.GetRewardBonus() == 0) { TwitchPlaySettings.ClearRetryReward(); } break; case KMGameInfo.State.PostGame: DefaultCamera(); if (_leaderboardDisplay == null) { _leaderboardDisplay = Instantiate(TwitchLeaderboardPrefab); } Leaderboard.Instance.SaveDataToFile(); break; case KMGameInfo.State.Transitioning: ModuleData.LoadDataFromFile(); TwitchPlaySettings.LoadDataFromFile(); var pageManager = SceneManager.Instance?.SetupState?.Room.GetComponent <SetupRoom>().BombBinder.MissionTableOfContentsPageManager; if (pageManager != null) { var tableOfContentsList = pageManager.GetValue <List <Assets.Scripts.BombBinder.MissionTableOfContents> >("tableOfContentsList"); if (tableOfContentsList[SetupState.LastBombBinderTOCIndex].ToCID == "toc_tp_search") { SetupState.LastBombBinderTOCIndex = 0; SetupState.LastBombBinderTOCPage = 0; } } break; } StopEveryCoroutine(); }
public override string ToString() { return(Name + "________" + Represenitive + "______" + Votes.ToString()); }
public Dictionary <Restaurant, int> GetResults() { return(Votes.GroupBy(x => x.Restaurant).ToDictionary(x => x.Key, x => x.Count())); }
public virtual ArtistTagVote FindVote(User user) { return(Votes.FirstOrDefault(v => v.User.Equals(user))); }
public void RemoveVotesFrom(ulong userId) => Votes.RemoveAll(x => x.UserId == userId);