Пример #1
0
        public static Event ParseEvent(HtmlNode node, int quarter)
        {
            HtmlNodeCollection nodes = node.SelectNodes("td");

            if (nodes.Count < 2)
            {
                return(null);
            }

            float     eventTime = EventTime(nodes[0].InnerText);
            EventTeam team      = GetEventTeam(nodes);

            HtmlNode detailsNode = team == EventTeam.Home ? nodes[5] : nodes[1];

            HtmlNodeCollection urlNodes;
            string             text = GetTextAndRemoveUrlNodes(node, out urlNodes);

            EventType type = GetEventType(text);


            Event matchEvent = GetEvent(text, urlNodes, type);

            matchEvent.SetEventDetails(team, type, quarter, eventTime);
            return(matchEvent);
        }
Пример #2
0
        /// <summary>
        /// Возвращает одежду игрока для эвента
        /// </summary>
        internal static List <ClothesModel> GetEventClothes(EventTeam team, bool isMale)
        {
            var head = new ClothesModel {
                Slot = 0, Variation = isMale ? 20 : 22, Texture = isMale ? 5 : 3, IsClothes = false
            };
            var top = new ClothesModel {
                Slot = 11, Undershirt = isMale ? 57 : 3, IsClothes = true
            };

            if (team == EventTeam.Red)
            {
                top.Variation = isMale ? 14 : 169;
                top.Texture   = isMale ? 9 : 2;
                top.Torso     = isMale ? 0 : 15;
            }
            else
            {
                top.Variation = isMale ? 14 : 195;
                top.Texture   = isMale ? 0 : 8;
                top.Torso     = isMale ? 0 : 4;
            }
            var legs = new ClothesModel {
                Slot = 4, Variation = isMale ? 43 : 4, IsClothes = true
            };
            var feets = new ClothesModel {
                Slot = 6, Variation = isMale ? 12 : 4, IsClothes = true
            };

            return(new List <ClothesModel> {
                head, top, legs, feets
            });
        }
Пример #3
0
 public void SetEventDetails(EventTeam team, EventType type, int quarter, float timeRemaining)
 {
     Team          = team;
     Type          = type;
     Quarter       = quarter;
     TimeRemaining = timeRemaining;
 }
Пример #4
0
        public string Execute(string[] inputArgs)
        {
            string eventName = inputArgs[0];
            string teamName  = inputArgs[1];

            if (String.IsNullOrWhiteSpace(teamName) ||
                String.IsNullOrWhiteSpace(eventName))
            {
                throw new InvalidOperationException("Invalid data.");
            }

            AuthenticationManager.Authorize();

            using (var db = new TeamBuilderContext())
            {
                var currEvent = db.Events
                                .Include(x => x.Creator)
                                .FirstOrDefault(x => x.Name == eventName);

                var team = db.Teams
                           .FirstOrDefault(x => x.Name == teamName);

                var loggedUser = AuthenticationManager.GetCurrentUser();

                if (currEvent == null)
                {
                    throw new ArgumentException($"Event {eventName} not found!");
                }

                if (team == null)
                {
                    throw new ArgumentException($"Team {teamName} not found!");
                }

                if (loggedUser.UserId != currEvent.CreatorId)
                {
                    throw new InvalidOperationException("Not allowed!");
                }

                bool alreadyAdded = db.EventTeams
                                    .Any(x => x.EventId == currEvent.EventId &&
                                         x.TeamId == team.TeamId);

                if (alreadyAdded)
                {
                    throw new ArgumentException($"Cannot add same team twice!");
                }

                var eventTeam = new EventTeam()
                {
                    EventId = currEvent.EventId,
                    TeamId  = team.TeamId
                };

                currEvent.ParticipatingEventTeams.Add(eventTeam);
                db.SaveChanges();
            }
            return($"Team {teamName} added for {eventName}!");
        }
        public UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath, EventTeam item)
        {
            var cell = tableView.DequeueReusableCell("EventTeamsCell", indexPath) as EventTeamsCell;

            cell.SetData(item);
            cell.SelectionStyle = UITableViewCellSelectionStyle.None;
            return(cell);
        }
Пример #6
0
        public string Execute(string[] inputArgs)
        {
            Check.CheckLength(2, inputArgs);

            AuthenticationManager.Authorize();

            string eventName = inputArgs[0];

            if (!CommandHelper.IsEventExisting(eventName))
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.EventNotFound, eventName));
            }

            string teamName = inputArgs[1];

            if (!CommandHelper.IsTeamExisting(teamName))
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.TeamNotFound, teamName));
            }

            User currentUser = AuthenticationManager.GetCurrentUser();

            if (!CommandHelper.IsUserCreatorOfEvent(eventName, currentUser))
            {
                throw new InvalidOperationException(Constants.ErrorMessages.NotAllowed);
            }

            using (var context = new TeamBuilderContext())
            {
                Event @event = context.Events
                               .Where(e => e.Name == eventName)
                               .OrderByDescending(et => et.StartDate)
                               .First();

                Team team = context.Teams
                            .Single(t => t.Name == teamName);

                bool eventTeamExist = context.EventTeams
                                      .Any(et => et.EventId == @event.Id && et.TeamId == team.Id);

                if (eventTeamExist)
                {
                    throw new InvalidOperationException(Constants.ErrorMessages.CannotAddSameTeamTwice);
                }

                var eventTeam = new EventTeam
                {
                    Event = @event,
                    Team  = team
                };

                context.EventTeams.Add(eventTeam);

                context.SaveChanges();
            }

            return($"Team {teamName} added for {eventName}!");
        }
Пример #7
0
 /// <summary>
 /// Перемещает игроков на эвент
 /// </summary>
 private void MovePlayersToEvent(IReadOnlyList <Client> teamMembers, EventTeam team)
 {
     for (var i = 0; i < teamMembers.Count; i++)
     {
         var member = teamMembers[i];
         API.removeAllPlayerWeapons(member);
         SetEventData(member, team, i);
     }
 }
Пример #8
0
        /// <summary>
        /// Устанавливает параметры игрока перед эвентом
        /// </summary>
        protected override void SetEventData(Client player, EventTeam team, int index)
        {
            var isPrisoner = team == EventTeam.Red;
            var position   = isPrisoner ? PrisonRiotData.PrisonersPositions[index] : PrisonRiotData.OfficersPositions[index];

            API.setEntityPosition(player, position);
            API.setEntityDimension(player, EVENT_DIMENSION);
            API.setPlayerSkin(player, PrisonRiotData.GetSkin(isPrisoner));
            API.givePlayerWeapon(player, PrisonRiotData.GetWeapon(isPrisoner), 0, true);
        }
Пример #9
0
 public Task <int> SaveEventTeamAsync(EventTeam item)
 {
     // note: the caller must let this resolve before item.Id is first
     // available, using either "await" or "int x = ...().Result;"
     if (item.Uuid == null)
     {
         item.Uuid = Guid.NewGuid().ToString();
     }
     return(_database.InsertOrReplaceAsync(item));
 }
Пример #10
0
        public HttpResponseMessage PostEventTeam(EventTeam item)
        {
            item.Id = null; // clear for autoincrement
            item    = repository.Add(item);
            var    response = Request.CreateResponse(HttpStatusCode.Created, item);
            string uri      = Url.Link("DefaultApi", new { uuid = item.Uuid });

            response.Headers.Location = new Uri(uri);
            return(response);
        }
Пример #11
0
 /// <summary>
 /// Очистить ресурсы
 /// </summary>
 private static void Dispose()
 {
     _members.Clear();
     _redTeam.Clear();
     _blueTeam.Clear();
     ClientEventHandler.Remove(ClientEvent.EVENT_PARTICIPATION);
     ClientEventHandler.Remove(ClientEvent.START_EVENT);
     Winners = EventTeam.None;
     API.shared.deleteColShape(_eventZone);
 }
Пример #12
0
        public EventTeam GetEventTeam(string uuid)
        {
            EventTeam item = repository.GetByUuid(uuid);

            if (item == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            return(item);
        }
Пример #13
0
        /// <summary>
        /// Устанавливает параметры игрока перед эвентом
        /// </summary>
        protected override void SetEventData(Client player, EventTeam team, int index)
        {
            var position = team == EventTeam.Red ? CountryBreakdownData.RedTeamPositions[index] : CountryBreakdownData.BlueTeamPositions[index];

            API.setEntityPosition(player, position);
            API.setEntityDimension(player, EVENT_DIMENSION);
            API.givePlayerWeapon(player, CountryBreakdownData.GetWeapon(), 300, true);
            var clothes = CountryBreakdownData.GetEventClothes(team, PlayerInfoManager.IsMale(player));

            GtaCharacter.SetClothes(player, clothes);
        }
Пример #14
0
        /// <summary>
        /// Устанавливает параметры игрока перед эвентом
        /// </summary>
        protected override void SetEventData(Client player, EventTeam team, int index)
        {
            var position = team == EventTeam.Red ? SniperBattleData.RedTeamPositions[index] : SniperBattleData.BlueTeamPositions[index];

            API.setEntityPosition(player, position);
            API.setEntityDimension(player, EVENT_DIMENSION);
            API.givePlayerWeapon(player, WeaponHash.HeavySniper, 50, true);
            var clothes = SniperBattleData.GetEventClothes(team, PlayerInfoManager.IsMale(player));

            GtaCharacter.SetClothes(player, clothes);
        }
Пример #15
0
        /// <summary>
        /// Обработчик смерти игрока
        /// </summary>
        protected void OnPlayerDeath(Client player, NetHandle enityKiller)
        {
            player.setData(PlayerData.WAS_KILLED, true);
            var killer = GetKiller(player, enityKiller);

            SendKillMessage(player, killer);
            if ((Winners = GetWinnerTeam()) != EventTeam.None)
            {
                Task.Run(() => Finish());
            }
        }
        public string Execute(string[] args)
        {
            Check.CheckLength(2, args);
            AuthenticationManager.Authorize();

            string eventName = args[0];
            string teamName  = args[1];

            if (!CommandHelper.IsEventExisting(eventName))
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.EventNotFound, eventName));
            }
            else if (!CommandHelper.IsTeamExisting(teamName))
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.TeamNotFound, teamName));
            }

            User currentUser = AuthenticationManager.GetCurrentUser();

            if (!CommandHelper.IsUserCreatorOfEvent(eventName, currentUser))
            {
                throw new InvalidOperationException(Constants.ErrorMessages.NotAllowed);
            }
            else if (CommandHelper.TeamIsMemberOfEvent(eventName, teamName))
            {
                throw new InvalidOperationException(Constants.ErrorMessages.CannotAddSameTeamTwice);
            }

            using (var context = new TeamBuilderContext())
            {
                Team team = context.Teams
                            .Include(t => t.UserTeams)
                            .FirstOrDefault(t => t.Name == teamName);
                Event ev = context.Events
                           .Include(e => e.ParticipatingEventTeams)
                           .FirstOrDefault(e => e.Name == eventName);

                var eventTeam = new EventTeam
                {
                    Team    = team,
                    TeamId  = team.Id,
                    Event   = ev,
                    EventId = ev.Id
                };

                team.Events.Add(eventTeam);
                ev.ParticipatingEventTeams.Add(eventTeam);

                context.Entry(eventTeam).State = EntityState.Added;
                context.SaveChanges();
            }

            return($"Team {teamName} added for {eventName}!");
        }
Пример #17
0
        public void SetData(EventTeam item)
        {
            lblSchool.Text = item.SchoolName;
            lblSport.Text  = item.SportName;
            lblScore.Text  = item.Score;

            imageTask?.Cancel(item.ProfileUrl);
            if (!string.IsNullOrEmpty(item.ProfileUrl))
            {
                imageTask = new ImageLoaderHelper(item.ProfileUrl, imgProfile, "DefaultProfile");
            }
        }
        public string Excecute(string[] inputArgs)
        {
            string eventName = inputArgs[0];
            string teamName  = inputArgs[1];


            using (var db = new TeamBuilderContext())
            {
                var eve = db.Events.Include(e => e.Creator)
                          .SingleOrDefault(e => e.Name == eventName);
                var team = db.Teams.SingleOrDefault(t => t.Name == teamName);

                if (eve == null)
                {
                    throw new ArgumentException($"Event {eventName} not found!");
                }

                if (team == null)
                {
                    throw new ArgumentException($"Team {teamName} not found!");
                }

                User currentUser = Session.User;

                if (eve.Creator.Username != currentUser.Username)
                {
                    throw new InvalidOperationException($"Not allowed!");
                }

                if (db.EventTeams.Any(et => et.Event == eve && et.Team == team))
                {
                    throw new InvalidOperationException($"Cannot add same team twice!");
                }

                if (Session.User == null)
                {
                    throw new InvalidOperationException($"You should login first!");
                }


                EventTeam eventTeam = new EventTeam()
                {
                    Team  = team,
                    Event = eve
                };

                db.EventTeams.Add(eventTeam);
                db.SaveChanges();

                return($"Team {teamName} added for {eventName}!");
            }
        }
Пример #19
0
        public void AddTeamTo(string eventName, Team newTeam)
        {
            Event ev = this.ByName(eventName);

            EventTeam newEventTeam = new EventTeam
            {
                EventId = ev.Id,
                TeamId  = newTeam.Id,
            };

            this.context.EventTeams.Add(newEventTeam);
            this.context.SaveChanges();
        }
Пример #20
0
        public void PutEventTeam(string uuid, EventTeam item)
        {
            EventTeam oldItem = repository.GetByUuid(uuid);

            // only update if new .Changed is greater
            if (oldItem != null && oldItem.Changed < item.Changed)
            {
                item.Uuid = uuid;
                if (!repository.Update(item))
                {
                    throw new HttpResponseException(HttpStatusCode.NotFound);
                }
            }
        }
        //•	AddTeamTo <eventName> <teamName>
        public string Execute(string[] inputArgs)
        {
            Check.CheckLength(2, inputArgs);

            var eventName = inputArgs[0];
            var teamName  = inputArgs[1];

            if (!CommandHelper.IsTeamExisting(teamName))
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.TeamNotFound, teamName));
            }

            if (!CommandHelper.IsEventExisting(eventName))
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.EventNotFound, eventName));
            }

            var user = AuthenticationManager.GetCurrentUser();

            using (var context = new TeamBuilderContext())
            {
                var team     = context.Teams.FirstOrDefault(e => e.Name == teamName);
                var eventObj = context.Events.FirstOrDefault(e => e.Name == eventName);

                if (user.Id != eventObj.CreatorId)
                {
                    throw new InvalidOperationException(Constants.ErrorMessages.NotAllowed);
                }

                if (context.EventTeams.Any(x => x.EventId == eventObj.Id && x.TeamId == team.Id))
                {
                    throw new InvalidOperationException(Constants.ErrorMessages.CannotAddSameTeamTwice);
                }

                var teamEvent = new EventTeam()
                {
                    TeamId  = team.Id,
                    EventId = eventObj.Id
                };

                context.EventTeams.Add(teamEvent);
                context.SaveChanges();
            }
            return($"Team {teamName} added for {eventName}!");
        }
Пример #22
0
        public static IDictionary <Skill, double> GetTotalsPerSkill(this EventTeam team)
        {
            var result = new Dictionary <Skill, double>();
            var skills = team.Users.SelectMany(u => u.UserSkills.Select(s => s.Skill)).Distinct();

            foreach (var skill in skills)
            {
                double total = 0;

                foreach (var user in team.Users)
                {
                    total += user.UserSkills.Where(s => s.Skill == skill).FirstOrDefault().Ratings.Average(r => r.Mark);
                }

                result.Add(skill, total);
            }

            return(result);
        }
Пример #23
0
        /// <summary>
        /// Возвращает одежду игрока для эвента
        /// </summary>
        internal static List <ClothesModel> GetEventClothes(EventTeam team, bool isMale)
        {
            var top = new ClothesModel {
                Slot = 11, Undershirt = isMale ? 57 : 3, Torso = 0, IsClothes = true
            };

            if (team == EventTeam.Red)
            {
                top.Variation = isMale ? 1 : 0;
                top.Texture   = isMale ? 4 : 5;
            }
            else
            {
                top.Variation = isMale ? 47 : 0;
                top.Texture   = isMale ? 0 : 6;
            }
            return(new List <ClothesModel> {
                top
            });
        }
        public static void AddTeamToEvent(string teamName, string eventName)
        {
            using (TeamBuilderContext context = new TeamBuilderContext())
            {
                Event @event = GetEventByName(eventName);
                Team  team   = GetTeamByTeamName(teamName);

                EventTeam eventTeam = new EventTeam()
                {
                    EventId = @event.Id,
                    TeamId  = team.Id,
                };

                @event.ParticipatingEventTeams.Add(eventTeam);
                team.EventTeams.Add(eventTeam);

                context.EventsTeams.Add(eventTeam);

                context.SaveChanges();
            }
        }
        private static void AddTeamTo(string eventName, string teamName)
        {
            using (var db = new TeamBuilderContext())
            {
                var events = db
                             .Events
                             .Where(e => e.Name == eventName)
                             .ToList();

                var eventId = default(int);

                if (events.Count > 1)
                {
                    DateTime?latestDate = events
                                          .Max(e => e.StartDate);

                    eventId = events
                              .Single(e => e.StartDate == latestDate)
                              .Id;
                }
                if (events.Count == 1)
                {
                    eventId = events.First().Id;
                }

                var teamId = db
                             .Teams
                             .First(t => t.Name == teamName)
                             .Id;

                var currentTeamEvent = new EventTeam()
                {
                    EventId = eventId,
                    TeamId  = teamId
                };

                db.EventTeams.Add(currentTeamEvent);
                db.SaveChanges();
            }
        }
Пример #26
0
        public void AddTeamToEvent(string eventName, string teamName, User currentUser)
        {
            Event @event = this.dbContext
                           .Events
                           .OrderByDescending(e => e.StartDate)
                           .FirstOrDefault(e => e.Name == eventName);

            if (@event == null)
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.EventNotFound, eventName));
            }

            Team team = this.dbContext
                        .Teams
                        .FirstOrDefault(t => t.Name == teamName);

            if (team == null)
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.TeamNotFound, teamName));
            }

            if (CommandHelper.IsUserCreatorOfTeam(this.dbContext, teamName, currentUser))
            {
                throw new InvalidOperationException(Constants.ErrorMessages.NotAllowed);
            }

            EventTeam eventTeam = this.dbContext
                                  .EventTeams
                                  .FirstOrDefault(et => et.TeamId == team.Id && et.EventId == @event.Id);

            if (eventTeam != null)
            {
                throw new InvalidOperationException(Constants.ErrorMessages.CannotAddSameTeamTwice);
            }

            EventTeam newEventTeam = new EventTeam(@event.Id, team.Id);

            this.dbContext.EventTeams.Add(newEventTeam);
            this.dbContext.SaveChanges();
        }
Пример #27
0
        public void GetTotalsPerSkill_Flow_IDictionarySkillDouble()
        {
            var skill = new Skill {
                Id = 1
            };
            var mark = 7.0;
            var dict = new Dictionary <Skill, double>
            {
                { skill, mark }
            };

            var eventTeam = new EventTeam
            {
                Users = new List <User>
                {
                    new User
                    {
                        Id         = 1,
                        UserSkills = new List <UserSkill>
                        {
                            new UserSkill
                            {
                                Skill   = skill,
                                Ratings = new List <Rating>
                                {
                                    new Rating {
                                        Mark = mark
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var result = EventTeamExtension.GetTotalsPerSkill(eventTeam);

            Assert.AreEqual(dict.First(), result.First());
        }
        View GetView(EventTeam item, int position, View convertView, ViewGroup parent)
        {
            View view = convertView;

            if (view == null)
            {
                view = LayoutInflater.Inflate(Resource.Layout.EventTeamItem, null);
            }
            view.FindViewById <TextView>(Resource.Id.lblSchool).Text = item.SchoolName;
            view.FindViewById <TextView>(Resource.Id.lblSport).Text  = item.SportName;
            view.FindViewById <TextView>(Resource.Id.lblScore).Text  = item.Score;

            var profileImageView = view.FindViewById <ImageViewAsync>(Resource.Id.imgProfile);

            profileImageView.Tag?.CancelPendingTask(item.ProfileUrl);
            var task = ImageService.Instance.LoadUrl(item.ProfileUrl)
                       .Retry(3, 300)
                       .LoadingPlaceholder(Resource.Drawable.DefProfPic.ToString(), ImageSource.CompiledResource)
                       .Into(profileImageView);

            profileImageView.Tag = new ImageLoaderHelper(task);

            return(view);
        }
Пример #29
0
        //AddTeamTo <eventName> <teamName>
        internal static string Execute(string[] data)
        {
            Check.CheckLength(2, data);

            var currentUser = AuthenticationManager.GetCurrentUser();

            var eventName = data[0];
            var teamName  = data[1];

            bool isUserCreatorOfEvent = CommandHelper.IsUserCreatorOfEvent(eventName, currentUser);

            bool teamExists  = CommandHelper.IsTeamExisting(teamName);
            bool eventExists = CommandHelper.IsEventExisting(eventName);

            if (!eventExists)
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.EventNotFound, eventName));
            }

            if (!teamExists)
            {
                throw new ArgumentException(string.Format(Constants.ErrorMessages.TeamNotFound, teamName));
            }

            if (!isUserCreatorOfEvent)
            {
                throw new InvalidOperationException(Constants.ErrorMessages.NotAllowed);
            }

            using (var context = new TeamBuilderContext())
            {
                var @event = context.Events
                             .Where(e => e.Name == eventName)
                             .OrderByDescending(e => e.StartDate)
                             .First();

                var team = context.Teams.Single(t => t.Name == teamName);

                var eventTeam = new EventTeam
                {
                    Event = @event,
                    Team  = team
                };

                bool isTeamAddedToEvent = context.Events.Any(e => e.ParticipatingEventTeams.Any(et => et.Team == team));

                if (isTeamAddedToEvent)
                {
                    throw new InvalidOperationException(Constants.ErrorMessages.CannotAddSameTeamTwice);
                }

                context.Events
                .Where(e => e.Name == eventName)
                .OrderByDescending(e => e.StartDate)
                .First()
                .ParticipatingEventTeams.Add(eventTeam);

                context.SaveChanges();

                return($"Team {teamName} added for {eventName}!");
            }
        }
Пример #30
0
        public void RateUser_Flow_ViewResult()
        {
            //Arange
            var mainUser = new User
            {
                Id        = 1,
                FirstName = "Unit",
                LastName  = "Test",
                UserName  = "******",
            };

            var users = new List <User>()
            {
                mainUser
            }.AsQueryable();

            var mainSkill = new Skill
            {
                Description = "Unit test skill description",
                Id          = 1,
                Name        = "Unit test skill"
            };

            var skills = new List <Skill>()
            {
                mainSkill
            }.AsQueryable();

            var mainGroup = new Group
            {
                Id           = 1,
                Category     = "Unit Category",
                CreatedOn    = DateTime.Now,
                GroupName    = "Unit Group",
                GroupCreator = mainUser.Id,
                Users        = users.ToList(),
                Skills       = skills.ToList()
            };

            var groups = new List <Group>()
            {
                mainGroup
            }.AsQueryable();

            var mainEvent = new Event
            {
                Id           = 1,
                CreatedOn    = DateTime.Now,
                EventName    = "Unit Event",
                EventCreator = mainUser,
                Skills       = skills.ToList(),
                Group        = mainGroup,
            };

            var mainTeam = new EventTeam
            {
                Event = mainEvent
            };

            var teams = new List <EventTeam>()
            {
                mainTeam
            }.AsQueryable();

            mainEvent.Teams = teams.ToList();

            var events = new List <Event>()
            {
                mainEvent
            }.AsQueryable();

            var mockContext = new Mock <Context>();

            var mockGroups = MockHelper.MockDbSet(groups);

            mockContext.SetupGet(c => c.Groups).Returns(mockGroups.Object);
            var mockUsers = MockHelper.MockDbSet(users);

            mockContext.SetupGet(c => c.Users).Returns(mockUsers.Object);
            var mockEvents = MockHelper.MockDbSet(events);

            mockContext.SetupGet(c => c.Events).Returns(mockEvents.Object);
            var mockSkills = MockHelper.MockDbSet(skills);

            mockContext.SetupGet(c => c.Skills).Returns(mockSkills.Object);
            var mockTeams = MockHelper.MockDbSet(teams);

            mockContext.SetupGet(c => c.EventTeams).Returns(mockTeams.Object);

            var controller = new GroupController(mockContext.Object);

            // Act
            ViewResult resultGroup = controller.RateUser(mainGroup.Id) as ViewResult;
            ViewResult resultUser  = controller.RateUser(0, mainUser.Id) as ViewResult;
            ViewResult resultTeam  = controller.RateUser(0, 0, mainTeam.Id) as ViewResult;

            // Assert
            Assert.IsNotNull(resultGroup);
            Assert.IsNotNull(resultUser);
            Assert.IsNotNull(resultTeam);
        }