Exemplo n.º 1
0
        /// <summary>
        /// Creates new Scrum Team and initialize Planning Poker game.
        /// </summary>
        /// <param name="teamName">Name of the team.</param>
        /// <param name="scrumMasterName">Name of Scrum Master.</param>
        /// <param name="deck">Selected deck of estimation cards to use in the team.</param>
        /// <returns><c>True</c> if the operation was successful; otherwise <c>false</c>.</returns>
        public async Task <bool> CreateTeam(string teamName, string scrumMasterName, Deck deck)
        {
            if (string.IsNullOrEmpty(teamName) || string.IsNullOrEmpty(scrumMasterName))
            {
                return(false);
            }

            try
            {
                TeamResult teamResult = null;
                using (_busyIndicatorService.Show())
                {
                    teamResult = await _planningPokerService.CreateTeam(teamName, scrumMasterName, deck, CancellationToken.None);
                }

                if (teamResult != null)
                {
                    await _planningPokerInitializer.InitializeTeam(teamResult, scrumMasterName);

                    ControllerHelper.OpenPlanningPokerPage(_navigationManager, teamResult.ScrumTeam, scrumMasterName);
                    return(true);
                }
            }
            catch (PlanningPokerException ex)
            {
                var message = ControllerHelper.GetErrorMessage(ex);
                await _messageBoxService.ShowMessage(message, Resources.MessagePanel_Error);
            }

            return(false);
        }
Exemplo n.º 2
0
        private static TeamResult GetTeamResult(Race race, Team team)
        {
            var retVal = new TeamResult
            {
                TeamNumber     = team.Number,
                TeamName       = team.Name,
                Category       = team.Category,
                NumberOfStages = 0,
                TotalValue     = 0,
                EndTime        = team.FinishTime,
                NumberOfPoints = 0,
                StageResults   = new List <StageResult>()
            };

            foreach (var stage in race.Stages)
            {
                StageResult stageResult = GetStageResult(team, stage);

                var numberOfPointsToCompleteStage = stage.MimimumPointsToCompleteStage ?? race.MinimumPointsToCompleteStage;

                if (stageResult.NumberOfPoints >= numberOfPointsToCompleteStage)
                {
                    retVal.NumberOfStages += 1;
                    retVal.TotalValue     += stageResult.TotalValue;
                    retVal.NumberOfPoints += stageResult.NumberOfPoints;
                }
                retVal.StageResults.Add(stageResult);
            }

            SettleFinishTime(race, team, retVal);

            retVal.StageResults = retVal.StageResults.OrderBy(stage => stage.StageNumber).ToList();

            return(retVal);
        }
Exemplo n.º 3
0
        public static List <string> Generate(string conferenceName, string divisionName, string teamName, League league)
        {
            List <string> ret = new List <string>();

            Team team = league.FindTeam(teamName);

            GameList games = league.AllGames.FilterByTeams(new List <int> {
                team.Id
            });

            TeamResult results = games.Results[team.Id];

            ret.Add("Records:");
            ret.Add($"Overall: {results.OverallRecord}");
            ret.Add($"Conference: {results.ConferenceRecord}");
            ret.Add($"Division: {results.DivisionRecord}");
            ret.Add(string.Empty);

            /*
             *  Cross-Conference win/loss
             *  Division chances
             *  Rankings
             *  PF/PA
             */
            return(ret);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates a CSV file on the user's desktop (overwriting any existing file).
        /// This will simply list each work item if the items are flat, or it will
        /// list all the children of the items along with the title of the parent if
        /// the items are hierarchical.
        /// </summary>
        public static void ExportItems(string queryName, TeamResult result)
        {
            var path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            path = Path.Combine(path, $"{queryName}.csv");

            Console.Write($"Exporting to {path}");

            using (var file = new StreamWriter(path)) {
                if (result.QueryType == QueryType.Tree)
                {
                    // these are hierarchical, so list each child and include the
                    // title of its parent
                    foreach (var parent in result.Items)
                    {
                        foreach (var child in parent.Items)
                        {
                            Console.Write(".");
                            EmitItem(file, parent, child);
                        }
                    }
                }
                else
                {
                    // these are flat, so just list each item
                    foreach (var item in result.Items)
                    {
                        Console.Write(".");
                        EmitItem(file, null, item);
                    }
                }
            }

            Console.WriteLine("done");
        }
Exemplo n.º 5
0
        private static void SettleFinishTime(Race race, Team team, TeamResult retVal)
        {
            if (team.FinishTime.HasValue)
            {
                switch (race.RaceType)
                {
                case RaceType.Classic:
                    retVal.RaceDuration = team.FinishTime.Value - race.StartTime.Value;
                    break;

                case RaceType.TimeLimit:
                    SetRaceRurationForNonClassic(team, retVal);
                    break;

                case RaceType.NoTimeLimit:
                    SetRaceRurationForNonClassic(team, retVal);
                    break;

                default:
                    throw new Exception($"Unknown raceid {race.RaceId}");
                }

                if ((race.RaceType == RaceType.Classic || race.RaceType == RaceType.TimeLimit) && race.MaxDuration.HasValue)
                {
                    var difference = retVal.RaceDuration - race.MaxDuration.Value;
                    if (difference.TotalSeconds > 0)
                    {
                        retVal.TotalValue -= (int)Math.Ceiling(difference.TotalMinutes) * race.PenaltyPerMinuteLate.Value;
                    }
                }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Convert XML string into TeamResult object
        /// </summary>
        /// <param name="response">xml string</param>
        /// <returns></returns>
        public static TeamResult ParseTeamResult(string response)
        {
            TeamResult t = new TeamResult();

            t.Teams = new Dictionary <string, string>();

            try
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(response);

                foreach (XmlNode xmlNode in xmlDoc.ChildNodes[1].ChildNodes)
                {
                    switch (xmlNode.Name)
                    {
                    case "IsSuccesfull": t.IsSuccesfull = bool.Parse(xmlNode.InnerText); break;

                    case "ReturnValue":
                        foreach (XmlNode presetNode in xmlNode.ChildNodes)
                        {
                            t.Teams.Add(presetNode.Attributes["Id"].Value, presetNode.Attributes["Name"].Value);
                        }
                        break;
                    }
                }

                xmlDoc = null;
            }
            catch (Exception ex)
            {
                Common.Logger.Create().Error(ex.ToString());
            }

            return(t);
        }
Exemplo n.º 7
0
        public GameOverDialogTeams(List <SongFinished> results)
        {
            TeamResults = new List <TeamResult>();

            results.ForEach(x =>
            {
                var teamResult = TeamResults.FirstOrDefault(y => y.Team.Id == x.User.Team.Id);

                //If there's no team in the results list for the current player
                if (teamResult == null)
                {
                    teamResult = new TeamResult()
                    {
                        Team    = (x.User as Player).Team,
                        Players = new List <Player>()
                    };
                    TeamResults.Add(teamResult);
                }

                x.User.Score = x.Score;
                teamResult.Players.Add(x.User);
                teamResult.TotalScore += x.Score;
            });

            TeamResults = TeamResults.OrderByDescending(x => x.TotalScore).ToList();

            DataContext = this;

            InitializeComponent();
        }
        /// <summary>
        /// Downloads the work items for the query. This supports both flat
        /// queries and hierarchical. For hierarchical, this will retrieve the
        /// top two levels of the hierarchy of the query, which must be of type
        /// "Tree of work items" with a tree type of "Parent/Child".
        /// </summary>
        public TeamResult RunQuery(string folderName, string queryName)
        {
            Console.WriteLine($"Running {folderName}/{queryName}");

            // create instance of VssConnection using Personal Access Token
            var connection = new VssConnection(new Uri(_collectionUrl), new VssBasicCredential(string.Empty, _personalAccessToken));

            // get the client instance
            var witClient = connection.GetClient <WorkItemTrackingHttpClient>();

            // get 2 levels of the query hierarchy items
            var queryHierarchyItems = witClient.GetQueriesAsync(_projectName, depth: 2).Result;

            // holders for our return value
            TeamResult teamResult = null;

            // find the folder we're looking for
            var queriesFolder = queryHierarchyItems.FirstOrDefault(qhi => qhi.Name.Equals(folderName));

            if (queriesFolder != null)
            {
                // find the query we're looking for
                QueryHierarchyItem query = null;
                if (queriesFolder.Children != null)
                {
                    query = queriesFolder.Children.FirstOrDefault(qhi => qhi.Name.Equals(queryName));
                }

                var result = witClient.QueryByIdAsync(query.Id).Result;

                Console.Write($"Retrieving results ({result.QueryType} query)");

                List <TeamItem> items = null;
                switch (result.QueryType)
                {
                case QueryType.Tree:
                    items = ProcessHierarchyItems(result, witClient);
                    break;

                case QueryType.Flat:
                    items = ProcessFlatItems(result, witClient);
                    break;

                case QueryType.OneHop:
                    throw new NotImplementedException($"{nameof(QueryType.OneHop)} not supported");
                }

                teamResult = new TeamResult
                {
                    Items     = items,
                    QueryType = result.QueryType
                };
            }

            Console.WriteLine("done");

            return(teamResult);
        }
Exemplo n.º 9
0
        private static void SetRaceRurationForNonClassic(Team team, TeamResult retVal)
        {
            var firstVisitedPoint = team.VisitedPoints.OrderBy(t => t.Time).FirstOrDefault();

            if (firstVisitedPoint != null)
            {
                retVal.RaceDuration = team.FinishTime.Value - firstVisitedPoint.Time;
            }
        }
Exemplo n.º 10
0
        private async void EventTeamsListView_ItemSelected(object sender, SelectedItemChangedEventArgs args)
        {
            TeamResult item = (TeamResult)args.SelectedItem;

            if (item == null)
            {
                return;
            }
            App.currTeamNumber = item.TeamNumber;
            App.currTeamName   = item.Name;
            Team itemTeam = viewModel.DataStoreTeam.GetItemByKeyAsync(item.TeamNumber.ToString()).Result;
            await Navigation.PushAsync(new TeamDetailsPage(App.currFRCEventKey, itemTeam));
        }
Exemplo n.º 11
0
        internal static async Task <string> SetToBegain(TeamResult team, int roomIndex)
        {
            var msg = Newtonsoft.Json.JsonConvert.SerializeObject(new CommonClass.TeamBegain()
            {
                c         = "TeamBegain",
                TeamNum   = team.TeamNumber,
                RoomIndex = roomIndex
                            //  TeamNumber = team.TeamNumber
            });
            var result = await Startup.sendInmationToUrlAndGetRes($"{teamUrl}", msg);

            return(result);
        }
Exemplo n.º 12
0
        private static CreateTeamController CreateController(
            IPlanningPokerInitializer planningPokerInitializer = null,
            IPlanningPokerClient planningPokerService          = null,
            IMessageBoxService messageBoxService       = null,
            IBusyIndicatorService busyIndicatorService = null,
            INavigationManager navigationManager       = null,
            TeamResult teamResult = null,
            string errorMessage   = null)
        {
            if (planningPokerInitializer == null)
            {
                var planningPokerInitializerMock = new Mock <IPlanningPokerInitializer>();
                planningPokerInitializer = planningPokerInitializerMock.Object;
            }

            if (planningPokerService == null)
            {
                var planningPokerServiceMock = new Mock <IPlanningPokerClient>();
                var createSetup = planningPokerServiceMock.Setup(o => o.CreateTeam(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Deck>(), It.IsAny <CancellationToken>()));
                if (errorMessage == null)
                {
                    createSetup.ReturnsAsync(teamResult);
                }
                else
                {
                    createSetup.ThrowsAsync(new PlanningPokerException(errorMessage));
                }

                planningPokerService = planningPokerServiceMock.Object;
            }

            if (messageBoxService == null)
            {
                var messageBoxServiceMock = new Mock <IMessageBoxService>();
                messageBoxService = messageBoxServiceMock.Object;
            }

            if (busyIndicatorService == null)
            {
                var busyIndicatorServiceMock = new Mock <IBusyIndicatorService>();
                busyIndicatorService = busyIndicatorServiceMock.Object;
            }

            if (navigationManager == null)
            {
                var navigationManagerMock = new Mock <INavigationManager>();
                navigationManager = navigationManagerMock.Object;
            }

            return(new CreateTeamController(planningPokerService, planningPokerInitializer, messageBoxService, busyIndicatorService, navigationManager));
        }
Exemplo n.º 13
0
        public TeamViewModel(TeamResult model)
        {
            Name     = model.Country;
            FifaCode = model.FifaCode;

            MatchesPlayed = model.GamesPlayed;
            MatchesWon    = model.Wins;
            MatchesLost   = model.Losses;
            MatchesDraw   = model.Draws;

            GoalsScored     = model.GoalsFor;
            GoalsTaken      = model.GoalsAgainst;
            GoalsDifference = model.GoalDifferential;
        }
Exemplo n.º 14
0
    private void AddTeamOutcome(string team, Outcome outcome)
    {
        TeamResult teamResult;

        if (this.teams.TryGetValue(team, out teamResult))
        {
            teamResult.AddOutcome(outcome);
        }
        else
        {
            teamResult = new TeamResult();
            teamResult.AddOutcome(outcome);
            this.teams.Add(team, teamResult);
        }
    }
Exemplo n.º 15
0
        private void SetLabels()
        {
            TeamResult myRep = teamResults.Find(x => x.FifaCode == App.lastTeam.FifaCode);

            lbNaziv.Content          = $"{App.LocalizedString("Naziv")}: {myRep.Country}";
            lbFifaCode.Content       = $"{App.LocalizedString("Fifakod")}: {myRep.FifaCode}";
            lbGamesPlayed.Content    = $"{App.LocalizedString("GamesPlayed")}: {myRep.GamesPlayed}";
            lbGamesWon.Content       = $"{App.LocalizedString("GamesWon")}: {myRep.Wins}";
            lbGamesLost.Content      = $"{App.LocalizedString("GamesLost")}: {myRep.Losses}";
            lbGamesUndecided.Content = $"{App.LocalizedString("GamedTied")}: {myRep.Draws}";
            lbGoalsScored.Content    = $"{App.LocalizedString("GoalsScored")}: {myRep.GoalsFor}";
            lbGoalsTaken.Content     = $"{App.LocalizedString("GoalsTaken")}: {myRep.GoalsAgainst}";
            lbDiff.Content           = $"{App.LocalizedString("GoalsDiff")}: {myRep.GoalDifferential}";
            btSettings.Content       = App.LocalizedString("Settings");
            this.Title = App.LocalizedString("RepOverview");
        }
Exemplo n.º 16
0
        /// <summary>
        /// Joins existing Scrum Team and initialize Planning Poker game.
        /// </summary>
        /// <param name="teamName">Name of the team.</param>
        /// <param name="memberName">Name of the joining member.</param>
        /// <param name="asObserver"><c>True</c> if member is joining as observer only; otherwise <c>false</c>.</param>
        /// <returns><c>True</c> if the operation was successful; otherwise <c>false</c>.</returns>
        public async Task <bool> JoinTeam(string teamName, string memberName, bool asObserver)
        {
            if (string.IsNullOrEmpty(teamName) || string.IsNullOrEmpty(memberName))
            {
                return(false);
            }

            try
            {
                TeamResult teamResult = null;
                using (_busyIndicatorService.Show())
                {
                    teamResult = await _planningPokerService.JoinTeam(teamName, memberName, asObserver, CancellationToken.None);
                }

                if (teamResult != null)
                {
                    await _planningPokerInitializer.InitializeTeam(teamResult, memberName);

                    ControllerHelper.OpenPlanningPokerPage(_navigationManager, teamResult.ScrumTeam, memberName);
                    return(true);
                }
            }
            catch (PlanningPokerException ex)
            {
                var message = ex.Message;
                if (message.IndexOf(MemberExistsError1, StringComparison.OrdinalIgnoreCase) >= 0 &&
                    message.IndexOf(MemberExistsError2, StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    message = ControllerHelper.GetErrorMessage(ex);
                    message = $"{message}{Environment.NewLine}{Resources.JoinTeam_ReconnectMessage}";
                    if (await _messageBoxService.ShowMessage(message, Resources.JoinTeam_ReconnectTitle, Resources.JoinTeam_ReconnectButton))
                    {
                        return(await ReconnectTeam(teamName, memberName, false, CancellationToken.None));
                    }
                }
                else
                {
                    message = ControllerHelper.GetErrorMessage(ex);
                    await _messageBoxService.ShowMessage(message, Resources.MessagePanel_Error);
                }
            }

            return(false);
        }
Exemplo n.º 17
0
        public TeamResult SummariseTeamResult(Championship cmp, FootballTeam team)
        {
            if (cmp == null || team == null)
            {
                return(null);
            }
            var result = new TeamResult()
            {
                Championship = cmp,
                Team         = team
            };

            _context.SimulatorData <Competition>()
            .Where(el => el.FirstTeamId == team.Id && el.ChampionshipId == cmp.Id).ToList()
            .ForEach((el) =>
            {
                if (el.FirstTeamScore.HasValue)
                {
                    result.Scored   += el.FirstTeamScore ?? 0;
                    result.Conceded += el.SecondTeamScore ?? 0;
                    result.Won      += el.FirstTeamScore > el.SecondTeamScore ? 1 : 0;
                    result.Lost     += el.FirstTeamScore < el.SecondTeamScore ? 1 : 0;
                    result.Draw     += el.FirstTeamScore == el.SecondTeamScore ? 1 : 0;
                }
            }
                     );

            _context.SimulatorData <Competition>()
            .Where(el => el.SecondTeamId == team.Id && el.ChampionshipId == cmp.Id).ToList()
            .ForEach((el) =>
            {
                if (el.FirstTeamScore.HasValue)
                {
                    result.Scored   += el.SecondTeamScore ?? 0;
                    result.Conceded += el.FirstTeamScore ?? 0;
                    result.Lost     += el.FirstTeamScore > el.SecondTeamScore ? 1 : 0;
                    result.Won      += el.FirstTeamScore < el.SecondTeamScore ? 1 : 0;
                    result.Draw     += el.FirstTeamScore == el.SecondTeamScore ? 1 : 0;
                }
            }
                     );
            result.Points = 3 * result.Won + result.Draw;

            return(result);
        }
Exemplo n.º 18
0
        public static IList <TeamResult> GetTeamResults(IList <Finisher> finishers)
        {
            // ==== TEAMS ====
            var teamResults    = new List <TeamResult>();
            var allTeamMembers = new List <Finisher>();  // Tracks finishers in a team, so can't count as part of a club team.

            var teams = GetTeamNames(finishers);

            foreach (var team in teams)
            {
                var teamFinishers = GetFinishersInTeam(finishers, team);
                allTeamMembers.AddRange(teamFinishers);
                var teamResult = new TeamResult
                {
                    Name = team,
                    // Get the TEAM_SIZE team members with lowest score.
                    Members = teamFinishers.OrderBy(f => f.Position).Take(TEAM_SIZE).ToList(),
                };
                teamResult.CalcScore();
                teamResults.Add(teamResult);
            }

            // ==== CLUBS ====
            var clubTeamFinishers = finishers.Where(f => !allTeamMembers.Contains(f)).ToList();
            var clubs             = GetClubTeamNames(clubTeamFinishers);

            foreach (var club in clubs)
            {
                var clubFinishers  = GetFinishersInClub(clubTeamFinishers, club);
                var clubTeamResult = new TeamResult
                {
                    Name = club,
                    // Get the TEAM_SIZE team members with lowest score.
                    Members = clubFinishers.OrderBy(f => f.Position).Take(TEAM_SIZE).ToList(),
                };
                clubTeamResult.CalcScore();
                teamResults.Add(clubTeamResult);
            }

            return(teamResults);
        }
Exemplo n.º 19
0
        public void ExecuteLoadEventTeamsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                TeamResults.Clear();
                var teams = DataStoreTeam.GetItemsAsync(true).Result;
                foreach (var team in teams)
                {
                    TeamDetailViewModel matchViewModel = new TeamDetailViewModel(App.currFRCEventKey, team);
                    TeamResult          teamResult     = new TeamResult();
                    teamResult.TeamNumber        = team.TeamNumber;
                    teamResult.Name              = team.Name;
                    teamResult.TotalRP           = matchViewModel.TotalRP;
                    teamResult.TotalScore        = matchViewModel.TotalScore;
                    teamResult.AverageScore      = matchViewModel.AverageScore;
                    teamResult.TotalPowercells   = matchViewModel.TotalPowercells;
                    teamResult.AveragePowercells = matchViewModel.AveragePowercells;
                    teamResult.TotalBroken       = matchViewModel.TotalBroken;


                    TeamResults.Add(teamResult);
                }
            }
            catch (Exception ex)
            {
                Title = ex.Message;
            }
            finally
            {
                IsBusy = false;
            }
        }
Exemplo n.º 20
0
        private TeamResult GetTeamResult(int teamID, int leagueID)
        {
            var dataCache   = new DataCache();
            var team        = TeamsService.GetInstance().GetTeam(teamID, leagueID, dataCache: dataCache);
            var teams       = TeamsService.GetInstance().GetTeams(leagueID: team.LeagueID, showAll: true, dataCache: dataCache);
            var players     = PlayersService.GetInstance().GetPlayers(dataCache: dataCache);
            var playerStats = StatsService.GetInstance().GetAllStats(teamID, team.SportID, leagueID, dataCache: dataCache);
            var statTypes   = GamesService.GetInstance().GetStatTypes(team.SportID).OrderBy(s => s.GridDisplayOrder);

            var teamResult = new TeamResult()
            {
                ID    = team.ID,
                Name  = team.Name,
                Games = team.Games.Select(g => new TeamGameResult()
                {
                    ID            = g.ID,
                    GameDate      = g.GameDate,
                    OtherTeamName = g.Team1ID == team.ID ? teams.First(t => t.ID == g.Team2ID).Name : teams.First(t => t.ID == g.Team1ID).Name,
                    DidWin        = DidWin(g.Team1ID == team.ID, g.Team1Score, g.Team2Score),
                    HighScore     = Math.Max(g.Team1Score, g.Team2Score),
                    LowScore      = Math.Min(g.Team1Score, g.Team2Score),
                }).ToList(),
                Teams = teams.Select(t => new TeamsResult()
                {
                    ID   = t.ID,
                    Name = t.Name
                }).ToList(),
                AvailablePlayers = players.Where(p => !team.Players.Exists(tp => tp.ID == p.ID)).Select(p => new PlayersResult()
                {
                    ID   = p.ID,
                    Name = p.Name,
                }).ToList(),
                TeamPlayerStats = playerStats.Select(s => ConvertObjects.ConvertType(s)).ToList(),
                StatTypes       = statTypes.Select(s => ConvertObjects.ConvertType(s)).ToList(),
            };

            return(teamResult);
        }
Exemplo n.º 21
0
        public void TeamModelToViewModelTest()
        {
            var model = new TeamResult
            {
                EndTime        = DateTime.Now,
                NumberOfPoints = 1,
                NumberOfStages = 2,
                StageResults   = new List <StageResult>(),
                TeamName       = "a",
                TeamNumber     = 3,
                TotalValue     = 4
            };

            var result = _Sut.Map <TeamResultViewModel>(model);

            Assert.AreEqual(model.EndTime, result.EndTime);
            Assert.AreEqual(model.NumberOfPoints, result.NumberOfPoints);
            Assert.AreEqual(model.NumberOfStages, result.NumberOfStages);
            Assert.IsNotNull(result.StageResults);
            Assert.AreEqual(model.TeamName, result.TeamName);
            Assert.AreEqual(model.TeamNumber, result.TeamNumber);
            Assert.AreEqual(model.TotalValue, result.TotalValue);
        }
Exemplo n.º 22
0
        public TeamResult AddTeamResult([FromBody] TeamResultJson data)
        {
            var result = GetResult(data.id);

            var score = data.score;

            if (data.penalty > 0)
            {
                var onePercent = (float)score / (float)100;
                score = (int)(onePercent * (float)data.penalty);
            }

            var teamResult = new TeamResult(data.teamId, score, data.penalty);

            if (result?.TeamResults == null)
            {
                result = new Result(data.id, FplDataProvider.Season);
                result.TeamResults.Add(teamResult);
                _mongoResultProvider.AddResult(result);
            }
            else
            {
                if (result.TeamResults.Count(x => x.TeamId == data.teamId) > 0)
                {
                    result.TeamResults.FirstOrDefault(x => x.TeamId == data.teamId).Score   = score;
                    result.TeamResults.FirstOrDefault(x => x.TeamId == data.teamId).Penalty = data.penalty;
                }
                else
                {
                    result.TeamResults.Add(teamResult);
                }

                _mongoResultProvider.UpdateResult(data.id, result);
            }

            return(teamResult);
        }
        /// <summary>
        /// Initialize <see cref="PlanningPokerController"/> object with Scrum Team data received from server.
        /// </summary>
        /// <param name="teamInfo">Scrum Team data received from server.</param>
        /// <param name="username">Name of user joining the Scrum Team.</param>
        /// <returns>Asynchronous operation.</returns>
        public Task InitializeTeam(TeamResult teamInfo, string username)
        {
            var scrumTeam = teamInfo?.ScrumTeam;

            if (scrumTeam == null)
            {
                throw new ArgumentNullException(nameof(teamInfo));
            }

            if (string.IsNullOrEmpty(username))
            {
                throw new ArgumentNullException(nameof(username));
            }

            if (scrumTeam.Members == null)
            {
                scrumTeam.Members = new List <TeamMember>();
            }

            if (scrumTeam.Observers == null)
            {
                scrumTeam.Observers = new List <TeamMember>();
            }

            ScrumTeam     = scrumTeam;
            User          = FindTeamMember(username);
            IsScrumMaster = User != null && User == ScrumTeam.ScrumMaster;
            LastMessageId = -1;
            SessionId     = teamInfo.SessionId;

            if (scrumTeam.EstimationResult != null)
            {
                _memberEstimations = GetMemberEstimationList(scrumTeam.EstimationResult);
            }
            else if (scrumTeam.EstimationParticipants != null)
            {
                _memberEstimations = scrumTeam.EstimationParticipants
                                     .Where(p => p.Estimated).Select(p => new MemberEstimation(p.MemberName)).ToList();
            }
            else
            {
                _memberEstimations = null;
            }

            IsConnected          = true;
            _hasJoinedEstimation = scrumTeam.EstimationParticipants != null &&
                                   scrumTeam.EstimationParticipants.Any(p => string.Equals(p.MemberName, User?.Name, StringComparison.OrdinalIgnoreCase));
            _selectedEstimation = null;

            if (teamInfo is ReconnectTeamResult reconnectTeamInfo)
            {
                InitializeTeam(reconnectTeamInfo);
            }

            var memberCredentials = new MemberCredentials
            {
                TeamName   = TeamName,
                MemberName = User.Name
            };

            return(_memberCredentialsStore.SetCredentialsAsync(memberCredentials));
        }
 public void AddResult(int raceNumber, TeamResult result)
 {
     if (!_results.ContainsKey(result.Team.Id))
     {
         _results.Add(result.Team.Id, new DetailedTeamChampionshipResult(result.Team, _season));
     }
     var championshipResult = _results[result.Team.Id];
     championshipResult.AddResult(raceNumber, result);
 }
Exemplo n.º 25
0
        public static async Task <State> GetRoomThenStartAfterCreateTeam(State s, System.Net.WebSockets.WebSocket webSocket, TeamResult team, string playerName, string[] carsNames)
        {
            /*
             * 组队,队长状态下,队长点击了开始
             */
            int roomIndex;
            var roomInfo = await Room.getRoomNum(s.WebsocketID, playerName, carsNames);

            roomIndex = roomInfo.RoomIndex;
            s.Key     = roomInfo.Key;
            var sendMsg     = Newtonsoft.Json.JsonConvert.SerializeObject(roomInfo);
            var receivedMsg = await Team.SetToBegain(team, roomIndex);

            // var receivedMsg = await Startup.sendInmationToUrlAndGetRes(Room.roomUrls[roomInfo.RoomIndex], sendMsg);
            if (receivedMsg == "ok")
            {
                receivedMsg = await Startup.sendInmationToUrlAndGetRes(Room.roomUrls[roomInfo.RoomIndex], sendMsg);

                if (receivedMsg == "ok")
                {
                    await WriteSession(roomInfo, webSocket);

                    s.roomIndex = roomIndex;
                    s           = await setOnLine(s, webSocket);
                }
            }
            return(s);
        }
Exemplo n.º 26
0
        /// <summary>
        /// Set upload params
        /// </summary>
        /// <param name="loginResult">Auth user data for uploading</param>
        /// <param name="project">Selected solution project data</param>
        /// <returns></returns>
        internal static Upload SetUploadSettings(LoginResult loginResult, Project project, bool cancelStatus)
        {
            cancelStatus = false;
            PresetResult presetResult = null;
            TeamResult   teamResult   = null;

            BackgroundWorkerHelper bg = new BackgroundWorkerHelper(delegate(object obj)
            {
                _client = InitCxClient(loginResult);
                if (_client == null)
                {
                    return;
                }

                presetResult = GetPresets(loginResult, presetResult);

                CxWSResponseGroupList teamXmlList = _client.ServiceClient.GetAssociatedGroupsList(loginResult.SessionId);

                teamResult = new TeamResult();
                teamResult.IsSuccesfull = teamXmlList.IsSuccesfull;
                teamResult.Teams        = new Dictionary <string, string>();
                if (teamXmlList.GroupList != null && teamXmlList.GroupList.Length > 0)
                {
                    for (int i = 0; i < teamXmlList.GroupList.Length; i++)
                    {
                        teamResult.Teams.Add(teamXmlList.GroupList[i].ID, teamXmlList.GroupList[i].GroupName);
                    }
                }

                if (_client != null)
                {
                    _client.Close();
                }
            }, loginResult.AuthenticationData.ReconnectInterval * 1000, loginResult.AuthenticationData.ReconnectCount);

            //Show wait dialog and perform server request in different thread to safe UI responsibility
            if (!bg.DoWork(PRESETS_LOADING_TEXT))
            {
                cancelStatus = true;
                return(null);
            }

            if (!presetResult.IsSuccesfull)
            {
                return(null);
            }

            var uploadData = new Upload(new EntityId(loginResult), project.ProjectName,
                                        string.Format("{0} Description", project.ProjectName), presetResult.Presets, 0,
                                        teamResult.Teams, Guid.Empty.ToString(), true);

            if (_dispatcher == null)
            {
                _dispatcher = ServiceLocators.ServiceLocator.GetDispatcher();
            }

            if (_dispatcher != null)
            {
                _dispatcher.Dispatch(uploadData);
            }

            return(uploadData);
        }
        private static JoinTeamController CreateController(
            IPlanningPokerInitializer planningPokerInitializer = null,
            IPlanningPokerClient planningPokerService          = null,
            IMessageBoxService messageBoxService           = null,
            IBusyIndicatorService busyIndicatorService     = null,
            INavigationManager navigationManager           = null,
            IMemberCredentialsStore memberCredentialsStore = null,
            bool memberExistsError = false,
            TeamResult teamResult  = null,
            ReconnectTeamResult reconnectTeamResult = null,
            string errorMessage = null,
            MemberCredentials memberCredentials = null)
        {
            if (planningPokerInitializer == null)
            {
                var planningPokerInitializerMock = new Mock <IPlanningPokerInitializer>();
                planningPokerInitializer = planningPokerInitializerMock.Object;
            }

            if (planningPokerService == null)
            {
                var planningPokerServiceMock = new Mock <IPlanningPokerClient>();
                var joinSetup      = planningPokerServiceMock.Setup(o => o.JoinTeam(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <CancellationToken>()));
                var reconnectSetup = planningPokerServiceMock.Setup(o => o.ReconnectTeam(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <CancellationToken>()));
                if (memberExistsError)
                {
                    joinSetup.ThrowsAsync(new PlanningPokerException(ReconnectErrorMessage));
                    if (errorMessage == null)
                    {
                        reconnectSetup.ReturnsAsync(reconnectTeamResult);
                    }
                    else
                    {
                        reconnectSetup.ThrowsAsync(new PlanningPokerException(errorMessage));
                    }
                }
                else
                {
                    if (errorMessage == null)
                    {
                        joinSetup.ReturnsAsync(teamResult);
                    }
                    else
                    {
                        joinSetup.ThrowsAsync(new PlanningPokerException(errorMessage));
                    }
                }

                planningPokerService = planningPokerServiceMock.Object;
            }

            if (messageBoxService == null)
            {
                var messageBoxServiceMock = new Mock <IMessageBoxService>();
                if (memberExistsError)
                {
                    SetupReconnectMessageBox(messageBoxServiceMock, true);
                }

                messageBoxService = messageBoxServiceMock.Object;
            }

            if (busyIndicatorService == null)
            {
                var busyIndicatorServiceMock = new Mock <IBusyIndicatorService>();
                busyIndicatorService = busyIndicatorServiceMock.Object;
            }

            if (navigationManager == null)
            {
                var navigationManagerMock = new Mock <INavigationManager>();
                navigationManager = navigationManagerMock.Object;
            }

            if (memberCredentialsStore == null)
            {
                var memberCredentialsStoreMock = new Mock <IMemberCredentialsStore>();
                memberCredentialsStoreMock.Setup(o => o.GetCredentialsAsync()).ReturnsAsync(memberCredentials);
                memberCredentialsStore = memberCredentialsStoreMock.Object;
            }

            return(new JoinTeamController(planningPokerService, planningPokerInitializer, messageBoxService, busyIndicatorService, navigationManager, memberCredentialsStore));
        }
Exemplo n.º 28
0
        /// <summary>
        /// Creates an HTML file on the user's desktop (overwriting any existing file).
        /// This will simply list each work item if the items are flat, or it will
        /// list all the children of the items along with the title of the parent if
        /// the items are hierarchical.
        /// </summary>
        public static void ExportItems(string queryName, TeamResult result)
        {
            var path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            path = Path.Combine(path, $"{queryName}.html");

            Console.Write($"Exporting to {path}");

            using (var file = new StreamWriter(path)) {
                file.WriteLine(@"<html>
    <head>
    <style>
        body {
            font-family: ""-apple-system"", BlinkMacSystemFont, ""Segoe UI"", Roboto, ""Helvetica Neue"", Helvetica, Ubuntu, Arial, sans-serif, ""Apple Color Emoji"", ""Segoe UI Emoji"", ""Segoe UI Symbol"";
			}


        .idnumber {
            font-weight: 700;
            font-size: 12px;
            color: #000000;
            text-decoration: underline;
        }

        .badge {
            display: inline-block;
            border-radius: 3px;
            padding-bottom: 2px;
            padding-top: 2px;
            padding-left: 5px;
            padding-right: 5px;
            font-size: 8px;
            font-weight: 600
        }

        .tag {
            background: #78909C;
            color: #ffffff;
        }

        .state {
            background: #673AB7;
            color: #ffffff;
        }

        .iteration {
            background: #2196F3;
            color: #ffffff;
        }

.title{
    line-height: 25px;
    font-size: 14px;
}

.parentTitle{
    line-height: 45px;
    font-size: 18px;
}

    </style></head>");

                if (result.QueryType == QueryType.Tree)
                {
                    var previousParentTitle = string.Empty;

                    // these are hierarchical, so list each child and include the
                    // title of its parent
                    foreach (var parent in result.Items)
                    {
                        foreach (var child in parent.Items)
                        {
                            Console.Write(".");

                            if (previousParentTitle != parent.Title)
                            {
                                EmitParentItem(file, parent);
                                previousParentTitle = parent.Title;
                            }

                            EmitItem(file, child);
                        }
                    }
                }
                else
                {
                    // these are flat, so just list each item
                    foreach (var item in result.Items)
                    {
                        Console.Write(".");
                        EmitItem(file, item);
                    }
                }

                file.WriteLine("</body></html>");
            }

            Console.WriteLine("done");
        }
        public static DivisionResult JudgeSync(GameList games, Division division, List <int> teamIds, List <int> winnerIds, List <TeamResult> teamResults)
        {
            DateTime start = DateTime.Now;
            //List<TeamResult> teamResults = TeamResult.FilterByTeams(command.TeamResults, mTeamIds);

            //Have a list of games and a list of winners, determine who won the division
            //Find the teams with the most wins
            List <int> divisionFinalistIds = TeamResult.GetWinningTeamIds(teamResults, RecordType.Conference, teamIds);
            //divisionFinalistIds = mGames.GetWinnersFromTeams(mTeamIds, true, command.WinnerIds);

            int finalWinner = -1;

            //switch (divisionFinalistIds.Count)
            //{
            //    case 1:
            //        finalWinner = divisionFinalistIds[0];
            //        break;
            //    case 2:
            //        {
            //            //See who won the head-to-head matchup
            //            int gameIndex = games.FindMatchupIndex(teamIds[0], teamIds[1]);
            //            if (winnerIds != null && gameIndex < winnerIds.Count)
            //            {
            //                finalWinner = winnerIds[gameIndex];
            //            }
            //            else
            //            {
            //                Game game = games[gameIndex];
            //                if (game.GameAlreadyPlayed)
            //                {
            //                    finalWinner = game.WinnerId;
            //                }
            //            }

            //            break;
            //        }
            //    default:
            //    {
            ITiebreaker tiebreaker = GetTiebreaker(division.ConferenceName);

            finalWinner = tiebreaker.BreakTie(games, winnerIds, teamResults, divisionFinalistIds, division);
            //        break;
            //    }
            //}

            //if(finalWinner == 1)
            //{
            //    TeamResult miamiResult = command.TeamResults.Where(result => result.TeamId == 1).ElementAt(0);

            //    if (miamiResult.ConferenceRecord.Wins != 5)
            //    {
            //        Console.WriteLine("Miami wins");
            //        foreach (TeamResult result in TeamResult.FilterByTeams(command.TeamResults, mTeamIds))
            //        {
            //            Console.WriteLine($"     {result.TeamName}: {result.OverallRecord.Wins}-{result.OverallRecord.Losses} ({result.ConferenceRecord.Wins}-{result.ConferenceRecord.Losses})");
            //        }
            //    }
            //}

            return(new DivisionResult
            {
                WinnerId = finalWinner,
                DivisionFinalistIds = divisionFinalistIds,
                Milliseconds = (DateTime.Now - start).TotalMilliseconds
            });
        }
Exemplo n.º 30
0
 private void AddTeamOutcome(string team, Outcome outcome)
 {
     TeamResult teamResult;
     if (this.teams.TryGetValue(team, out teamResult)) {
         teamResult.AddOutcome(outcome);
     } else {
         teamResult = new TeamResult();
         teamResult.AddOutcome(outcome);
         this.teams.Add(team, teamResult);
     }
 }
 public DetailedTeamChampionshipResult(ICompetitor competitor, Season season)
 {
     Competitor = competitor;
     Races = season.Races.Count();
     Results = new TeamResult[Races];
     for (var i = 0; i < Races; i++)
     {
         Results[i] = new NullTeamResult(competitor, season);
     }
 }
 public void AddResult(int raceNumber, TeamResult result)
 {
     if (result.Team.Id != Competitor.Id) return;
     if (raceNumber > Results.Length) return;
     Results[raceNumber - 1] = result;
 }