public async Task <GameOutcomeGroup> GetOutcomeGroup()
        {
            GameOutcomeGroup group     = null;
            string           groupName = null;

            if (this.RankGroupGrid.Visibility != Visibility.Visible)
            {
                UserRole role = EnumHelper.GetEnumValueFromString <UserRole>((string)this.PreDefinedGroupNameTextBlock.Text);
                groupName = EnumHelper.GetEnumName(role);
                group     = new GameOutcomeGroup(role);
            }
            else if (this.RankTypeComboBox.SelectedIndex >= 0 && this.RankMinimumComboBox.SelectedIndex >= 0)
            {
                UserCurrencyRequirementViewModel rankRequirement = new UserCurrencyRequirementViewModel((UserCurrencyViewModel)this.RankTypeComboBox.SelectedItem, (UserRankViewModel)this.RankMinimumComboBox.SelectedItem);
                groupName = rankRequirement.GetCurrency().Name + " - " + rankRequirement.RankName;
                group     = new GameOutcomeGroup(rankRequirement);
            }
            else
            {
                await MessageBoxHelper.ShowMessageDialog("A group is missing the Rank Type & Rank Name");

                return(null);
            }

            if (group != null && !string.IsNullOrEmpty(groupName))
            {
                foreach (GameOutcomeProbabilityControl probabilityControl in this.outcomeProbabilityControls)
                {
                    group.Probabilities.Add(probabilityControl.GetOutcomeProbability());
                }

                if (group.Probabilities.Sum(p => p.Probability) > 100)
                {
                    await MessageBoxHelper.ShowMessageDialog("The group " + groupName + " can not have a combined probability of more than 100%");

                    return(null);
                }
            }

            return(group);
        }