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);
            }
        }
Exemplo n.º 2
0
        /// <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;
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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) : ""));
        }
Exemplo n.º 5
0
    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();
    }
Exemplo n.º 6
0
 public override string ToString()
 {
     return(Name + "________" + Represenitive + "______" + Votes.ToString());
 }
Exemplo n.º 7
0
 public Dictionary <Restaurant, int> GetResults()
 {
     return(Votes.GroupBy(x => x.Restaurant).ToDictionary(x => x.Key, x => x.Count()));
 }
Exemplo n.º 8
0
 public virtual ArtistTagVote FindVote(User user)
 {
     return(Votes.FirstOrDefault(v => v.User.Equals(user)));
 }
Exemplo n.º 9
0
 public void RemoveVotesFrom(ulong userId)
 => Votes.RemoveAll(x => x.UserId == userId);