/// <summary>
        ///     Rückgabe der Abstimmungsergebnisse
        /// </summary>
        /// <param name="frameNumber"></param>
        /// <returns></returns>
        public List <VotingResult> GetResult(int frameNumber)
        {
            List <VotingResult>  results      = new List <VotingResult>();
            IEnumerable <Voting> frameVotings = Votings.Where(v => v.FrameNumber == frameNumber);

            // Resultat zusammenzählen
            for (int i = 0; i < PlayerCount; i++)
            {
                VotingResult result = new VotingResult
                {
                    PlayerId = i
                };

                result.GameAction = new GameAction
                {
                    Direction = frameVotings.Where(v => v.PlayerId == i).GroupBy(v => v.GameAction?.Direction)
                                .OrderByDescending(gp => gp.Count()).Select(v => v.Key).FirstOrDefault() ?? Direction.Undefined,
                    Action = frameVotings.Where(v => v.PlayerId == i).GroupBy(v => v.GameAction?.Action)
                             .OrderByDescending(gp => gp.Count()).Select(v => v.Key).FirstOrDefault() ?? Action.Undefined
                };

                results.Add(result);
            }

            return(results);
        }
        public CongressVotingsPartialViewModel(int countryID, IQueryable <CongressVoting> votingsQuery, PagingParam pagingParam)
        {
            PagingParam = pagingParam;

            PagingParam.RecordsPerPage = Config.CongressVotingsPerPage;

            var votings = votingsQuery
                          .OrderByDescending(cv => cv.ID)
                          .Apply(pagingParam).ToList();

            foreach (var voting in votings)
            {
                Votings.Add(new CongressVotingsItemViewModel(voting));
            }
        }
        /// <summary>
        ///     Voting hinzufügen
        /// </summary>
        /// <param name="voting"></param>
        public void AddVoting(Voting voting)
        {
            Voting userVoting = Votings.Where(v => (v.UserId == voting.UserId) && (v.FrameNumber == voting.FrameNumber)).FirstOrDefault();

            if (userVoting != null)
            {
                // Bestehdendes Voting aktualisieren
                if (Votings.TryTake(out _))
                {
                    Votings.Add(voting);
                }
            }
            else
            {
                Votings.Add(voting);
            }
        }
        private void LoadTestData()
        {
            House house = new House(Guid.NewGuid(), "г. Оренбург, ул. Чкалова, д. 32", "*****@*****.**", "admin");

            Person person = new Person(Guid.NewGuid(), "Данил", "Кушмухаметов", "*****@*****.**", "user", house);

            CreatePersonRequest request1 = new CreatePersonRequest(Guid.NewGuid(), "Пользователь", "1", "*****@*****.**", "user", house);
            CreatePersonRequest request2 = new CreatePersonRequest(Guid.NewGuid(), "Пользователь", "2", "*****@*****.**", "user", house);

            NewsPost newsPost1 = new NewsPost(Guid.NewGuid(), "В Оренбурге завершены поиски без вести пропавшего пенсионера",
                                              "О том, что Андрей Боженков найден, сообщили в ПСО «ОренСпас» со ссылкой на родственников.\n" +
                                              "Накануне, 12 июня, мужчина сам вернулся домой. С ним все в порядке. Жизни и здоровью пенсионера ничто не угрожает." +
                                              " В причинах его ухода из дома разбираются сотрудники полиции. Проводится проверка.",
                                              null, DateTime.UtcNow, house);
            NewsPost newsPost2 = new NewsPost(Guid.NewGuid(), "В Оренбурге завершены поиски без вести пропавшего пенсионера",
                                              "О том, что Андрей Боженков найден, сообщили в ПСО «ОренСпас» со ссылкой на родственников.\n" +
                                              "Накануне, 12 июня, мужчина сам вернулся домой. С ним все в порядке. Жизни и здоровью пенсионера ничто не угрожает." +
                                              " В причинах его ухода из дома разбираются сотрудники полиции. Проводится проверка.",
                                              null, DateTime.UtcNow, house);
            NewsPost newsPost3 = new NewsPost(Guid.NewGuid(), "В Оренбурге завершены поиски без вести пропавшего пенсионера",
                                              "О том, что Андрей Боженков найден, сообщили в ПСО «ОренСпас» со ссылкой на родственников.\n" +
                                              "Накануне, 12 июня, мужчина сам вернулся домой. С ним все в порядке. Жизни и здоровью пенсионера ничто не угрожает." +
                                              " В причинах его ухода из дома разбираются сотрудники полиции. Проводится проверка.",
                                              null, DateTime.UtcNow, house);

            Meeting meeting = new Meeting(Guid.NewGuid(), "Уборка прилегающей территории", DateTime.UtcNow.AddHours(5), "Описание мероприятия", null, house);

            Voting  voting   = new Voting(Guid.NewGuid(), "Голосование 1", house);
            Variant variant1 = new Variant(Guid.NewGuid(), "Первый вариант", voting);
            Variant variant2 = new Variant(Guid.NewGuid(), "Второй вариант", voting);
            Variant variant3 = new Variant(Guid.NewGuid(), "Третий вариант", voting);

            Houses.Add(house);
            People.Add(person);
            CreatePersonRequests.AddRange(new CreatePersonRequest[] { request1, request2 });
            News.AddRange(new NewsPost[] { newsPost1, newsPost2, newsPost3 });
            Meetings.Add(meeting);
            Votings.Add(voting);
            Variants.AddRange(new Variant[] { variant1, variant2, variant3 });

            SaveChanges();
        }
 public void Reset()
 {
     Votings.Clear();
 }