public static List<MemberDisplayFederation> IterateMembersForDisplay(ICollection<FederationMember> members)
        {
            List<MemberDisplayFederation> membersReturned = new List<MemberDisplayFederation>();
            foreach (var mem in members)
            {
                try
                {
                    MemberDisplayFederation memTemp = new MemberDisplayFederation();
                    memTemp.DerbyName = mem.Member.DerbyName;

                    if (mem.Member.ContactCard.Emails.Count > 0)
                        memTemp.Email = mem.Member.ContactCard.Emails.Where(x => x.IsDefault == true).FirstOrDefault().EmailAddress;
                    memTemp.Firstname = mem.Member.Firstname;
                    GenderEnum gen;
                    if (Enum.TryParse<GenderEnum>(mem.Member.Gender.ToString(), out gen))
                        memTemp.Gender = gen;
                    memTemp.LastName = mem.Member.Lastname;
                    memTemp.MemberId = mem.Member.MemberId;
                    memTemp.MembershipId = mem.FederationIdForMember;
                    memTemp.MadeClassRank = ((MADEClassRankEnum)Enum.ToObject(typeof(MADEClassRankEnum), mem.MADEClassRankForMember)).ToString();
                    memTemp.FederationMemberType = ((MemberTypeFederationEnum)Enum.ToObject(typeof(MemberTypeFederationEnum), mem.MemberType)).ToString();

                    if (mem.Member.ContactCard.Communications.Count > 0)
                        memTemp.PhoneNumber = mem.Member.ContactCard.Communications.Where(x => x.CommunicationTypeEnum == (byte)CommunicationTypeEnum.PhoneNumber).Where(x => x.IsDefault == true).FirstOrDefault().Data;
                    memTemp.PlayerNumber = mem.Member.PlayerNumber;
                    foreach (var league in mem.Member.Leagues)
                    {
                        RDN.Portable.Classes.League.Classes.League l = new Portable.Classes.League.Classes.League();
                        l.LeagueId = league.League.LeagueId;
                        l.Name = league.League.Name;
                        memTemp.Leagues.Add(l);
                    }
                    foreach (var photo in mem.Member.Photos.OrderBy(x => x.Created))
                    {
                        memTemp.Photos.Add(new PhotoItem(photo.ImageUrl, photo.IsPrimaryPhoto, mem.Member.DerbyName));
                    }


                    memTemp.Edit = "<a href='http://league.rdnation.com/Federation/Member/Edit/" + memTemp.MemberId.ToString().Replace("-", "") + "/" + RDN.Utilities.Strings.StringExt.ToSearchEngineFriendly(memTemp.DerbyName) + "'>Edit</a>";

                    memTemp.MemberUrl = "<a href='http://league.rdnation.com/member/" + memTemp.MemberId.ToString().Replace("-", "") + "/" + RDN.Utilities.Strings.StringExt.ToSearchEngineFriendly(memTemp.DerbyName) + "'>" + memTemp.DerbyName + "</a>";

                    membersReturned.Add(memTemp);
                }
                catch (Exception exception)
                {
                    ErrorDatabaseManager.AddException(exception, exception.GetType());
                }
            }
            return membersReturned;
        }
        public static RDN.Portable.Classes.League.Classes.League DisplayLeague(DataModels.League.League league, bool isPublic = false, bool isRemovedFromLeague = false)
        {
            try
            {
                RDN.Portable.Classes.League.Classes.League leagueTemp = new Portable.Classes.League.Classes.League();
                leagueTemp.LeagueId = league.LeagueId;
                leagueTemp.Name = league.Name;
                //leagues don't put the http in their profile.
                if (!String.IsNullOrEmpty(league.WebSite) && !league.WebSite.Contains("http://"))
                    leagueTemp.Website = "http://" + league.WebSite;
                else
                    leagueTemp.Website = league.WebSite;
                if (!String.IsNullOrEmpty(league.Twitter) && !league.Twitter.Contains("http://"))
                    leagueTemp.Twitter = "http://" + league.Twitter;
                else
                    leagueTemp.Twitter = league.Twitter;
                if (!String.IsNullOrEmpty(league.Instagram) && !league.Instagram.Contains("http://"))
                    leagueTemp.Instagram = "http://" + league.Instagram;
                else
                    leagueTemp.Instagram = league.Instagram;
                if (!String.IsNullOrEmpty(league.Facebook) && !league.Facebook.Contains("http://"))
                    leagueTemp.Facebook = "http://" + league.Facebook;
                else
                    leagueTemp.Facebook = league.Facebook;
                leagueTemp.RuleSetsPlayedEnum = (RuleSetsUsedEnum)league.RuleSetsPlayedEnum;
                leagueTemp.ShopUrl = StoreGateway.GetShopUrl(league.LeagueId);

                leagueTemp.SubscriptionPeriodEnds = league.SubscriptionPeriodEnds.GetValueOrDefault();
                leagueTemp.Groups = LeagueGroupFactory.DisplayGroups(league.Groups.Where(x => x.IsGroupRemoved == false).ToList());
                if (league.Founded.HasValue)
                    leagueTemp.Founded = league.Founded.Value;
                //we use the contact card Id as the join code for "making contact with the league" 
                //instead of creating a new id 
                //and when I don't want to release to use the public LeagueId as the join key.
                leagueTemp.JoinCode = league.LeagueJoinCode;

                if (league.ContactCard != null)
                {
                    if (league.ContactCard.Addresses.FirstOrDefault() != null)
                    {
                        leagueTemp.TimeZone = league.ContactCard.Addresses.FirstOrDefault().TimeZone;
                        leagueTemp.Address = league.ContactCard.Addresses.FirstOrDefault().Address1;
                        leagueTemp.City = league.ContactCard.Addresses.FirstOrDefault().CityRaw;
                        leagueTemp.State = league.ContactCard.Addresses.FirstOrDefault().StateRaw;
                        leagueTemp.ZipCode = league.ContactCard.Addresses.FirstOrDefault().Zip;
                        if (league.ContactCard.Addresses.FirstOrDefault().Country != null)
                        {
                            leagueTemp.Country = league.ContactCard.Addresses.FirstOrDefault().Country.Name;
                            leagueTemp.CountryId = league.ContactCard.Addresses.FirstOrDefault().Country.CountryId;
                        }
                    }
                    if (league.ContactCard.Emails.FirstOrDefault() != null)
                        leagueTemp.Email = league.ContactCard.Emails.Where(x => x.IsDefault == true).FirstOrDefault().EmailAddress;
                    //int numberType = Convert.ToInt32(CommunicationTypeEnum.PhoneNumber);
                    var phone = league.ContactCard.Communications.Where(x => x.CommunicationTypeEnum == (byte)CommunicationTypeEnum.PhoneNumber).FirstOrDefault();
                    if (phone != null)
                        leagueTemp.PhoneNumber = phone.Data;

                }
                if (league.Logo != null)
                    leagueTemp.Logo = new PhotoItem(league.Logo.ImageUrl, league.Logo.IsPrimaryPhoto, league.Logo.AlternativeText);

                if (league.InternalWelcomePicture != null)
                    leagueTemp.InternalWelcomeImage = new PhotoItem(league.InternalWelcomePicture.ImageUrl, league.InternalWelcomePicture.IsPrimaryPhoto, league.InternalWelcomePicture.AlternativeText);

                leagueTemp.InternalWelcomeMessage = league.InternalWelcomeMessage;

                //sets culture as united states english
                if (league.CultureLCID == 0)
                    leagueTemp.CultureSelected = 1033;
                else
                    leagueTemp.CultureSelected = league.CultureLCID;

                if (league.LastModified > new DateTime(2013, 11, 23) || league.Created > new DateTime(2013, 11, 23))
                {
                    leagueTemp.InternalWelcomeMessageHtml = leagueTemp.InternalWelcomeMessage;
                }
                else if (league.Created < new DateTime(2013, 11, 23))
                {
                    RDN.Library.Util.MarkdownSharp.Markdown markdown = new RDN.Library.Util.MarkdownSharp.Markdown();
                    markdown.AutoHyperlink = true;
                    markdown.AutoNewLines = true;
                    markdown.LinkEmails = true;
                    if (!String.IsNullOrEmpty(leagueTemp.InternalWelcomeMessage))
                    {
                        leagueTemp.InternalWelcomeMessageHtml = markdown.Transform(HtmlSanitize.FilterHtmlToWhitelist(leagueTemp.InternalWelcomeMessage));
                        leagueTemp.InternalWelcomeMessageHtml = leagueTemp.InternalWelcomeMessageHtml.Replace("</p>", "</p><br/>");
                    }
                }

                List<LeagueMember> members = new List<LeagueMember>();
                if (isPublic)
                    members = league.Members.Where(x => x.HasLeftLeague == isRemovedFromLeague && x.Member.IsProfileRemovedFromPublic == false).ToList();
                else
                    members = league.Members.Where(x => x.HasLeftLeague == isRemovedFromLeague).ToList();

                leagueTemp.LeagueMembers.AddRange(MemberDisplayFactory.IterateMembersForDisplay(members).OrderBy(x => x.DerbyName));

                try
                {
                    foreach (var color in league.Colors)
                    {
                        if (color != null)
                        {
                            var c = Color.FromArgb(color.Color.ColorIdCSharp);
                            var hex = ColorTranslator.ToHtml(c);
                            ColorDisplay d = new ColorDisplay();
                            d.ColorId = color.ColorId;
                            d.CSharpColor = color.Color.ColorIdCSharp;
                            d.HexColor = hex;
                            d.NameOfColor = color.Color.ColorName;
                            leagueTemp.ColorTempSelected += d.HexColor + ";";
                            leagueTemp.ColorsSelected += d.HexColor + ";";
                            leagueTemp.Colors.Add(d);
                        }

                    }
                }
                catch (Exception exception)
                {
                    ErrorDatabaseManager.AddException(exception, exception.GetType());
                }


                foreach (var team in league.Teams)
                {
                    TeamDisplay teamTemp = new TeamDisplay();
                    teamTemp.TeamName = team.Name;
                    teamTemp.TeamId = team.TeamId;
                    teamTemp.Description = team.Description;
                    leagueTemp.Teams.Add(teamTemp);
                }
                foreach (var con in league.Contacts)
                {
                    try
                    {
                        ContactDisplayBasic c = new ContactDisplayBasic();
                        c.ContactId = con.Contact.ContactId;
                        c.FirstName = con.Contact.Firstname;
                        c.LastName = con.Contact.Lastname;
                        c.ContactTypeForOrg = (ContactTypeForOrganizationEnum)con.ContactTypeEnum;
                        c.ContactTypeSelected = c.ContactTypeForOrg.ToString();
                        if (con.Contact.ContactCard.Addresses.FirstOrDefault() != null)
                        {
                            c.ContactCard = new Portable.Classes.ContactCard.ContactCard();
                            Portable.Classes.ContactCard.Address add = new Portable.Classes.ContactCard.Address();

                            add.Address1 = con.Contact.ContactCard.Addresses.FirstOrDefault().Address1;
                            add.Address2 = con.Contact.ContactCard.Addresses.FirstOrDefault().Address2;
                            add.CityRaw = con.Contact.ContactCard.Addresses.FirstOrDefault().CityRaw;
                            add.Zip = con.Contact.ContactCard.Addresses.FirstOrDefault().Zip;
                            add.StateRaw = con.Contact.ContactCard.Addresses.FirstOrDefault().StateRaw;
                            if (con.Contact.ContactCard.Addresses.FirstOrDefault().Country != null)
                                add.Country = con.Contact.ContactCard.Addresses.FirstOrDefault().Country.Name;
                            c.Address1 = con.Contact.ContactCard.Addresses.FirstOrDefault().Address1;
                            c.Address2 = con.Contact.ContactCard.Addresses.FirstOrDefault().Address2;
                            c.CityRaw = con.Contact.ContactCard.Addresses.FirstOrDefault().CityRaw;
                            c.Zip = con.Contact.ContactCard.Addresses.FirstOrDefault().Zip;
                            c.StateRaw = con.Contact.ContactCard.Addresses.FirstOrDefault().StateRaw;
                            if (con.Contact.ContactCard.Addresses.FirstOrDefault().Country != null)
                            {
                                c.CountryId = con.Contact.ContactCard.Addresses.FirstOrDefault().Country.CountryId;
                                c.CountryName = con.Contact.ContactCard.Addresses.FirstOrDefault().Country.Name;
                            }
                            c.ContactCard.Addresses.Add(add);
                        }
                        if (con.Contact.ContactCard.Emails.FirstOrDefault() != null)
                            c.Email = con.Contact.ContactCard.Emails.FirstOrDefault().EmailAddress;

                        var phone = con.Contact.ContactCard.Communications.OrderByDescending(x => x.Created).FirstOrDefault();
                        if (phone != null)
                            c.PhoneNumber = phone.Data;
                        c.CompanyName = con.Contact.CompanyName;
                        c.Notes = con.Notes;
                        c.Link = con.Contact.Link;
                        leagueTemp.Contacts.Add(c);
                    }
                    catch (Exception exception)
                    {
                        ErrorDatabaseManager.AddException(exception, exception.GetType());
                    }
                }


                foreach (var federation in league.Federations)
                {
                    FederationDisplay fed = new FederationDisplay();
                    fed.FederationId = federation.Federation.FederationId;
                    fed.FederationName = federation.Federation.Name;
                    fed.MembershipId = federation.InternalLeagueIdForFederation;

                    leagueTemp.Federations.Add(fed);
                }

                return leagueTemp;
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return null;
        }
        public static MemberDisplay GetMemberDisplayTwoEvils(Guid memberId)
        {
            try
            {
                var dc = new ManagementContext();
                var member = dc.ProfilesForTwoEvils.Where(x => x.ProfileId == memberId).FirstOrDefault();
                if (member == null)
                    return null;

                MemberDisplay mem = new MemberDisplay();

                mem.MemberId = member.ProfileId;
                mem.PlayerNumber = member.Number;
                mem.DerbyName = member.Name;
                mem.MemberId = memberId;

                if (member.LeagueDerbyRoster != null)
                {
                    mem.Team1ScoreTotal = 2;
                    RDN.Portable.Classes.League.Classes.League l = new Portable.Classes.League.Classes.League();
                    l.Name = member.LeagueDerbyRoster.Name;
                    l.LeagueId = member.LeagueDerbyRoster.TeamId;
                    mem.Leagues.Add(l);
                }
                else if (member.League != null)
                {
                    mem.Team1ScoreTotal = 1;
                    RDN.Portable.Classes.League.Classes.League l = new RDN.Portable.Classes.League.Classes.League();
                    l.Name = member.League.Name;
                    l.LeagueId = member.League.TeamId;
                    mem.Leagues.Add(l);
                }
                return mem;
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return null;
        }
        /// <summary>
        /// builds up the member object to display out to the world.
        /// </summary>
        /// <param name="memberId"></param>
        /// <returns></returns>
        public static MemberDisplay GetMemberDisplay(Guid memberId, bool isPublicProfile = false, bool pullGameData = true)
        {
            try
            {
                var dc = new ManagementContext();
                var member = dc.Members.Include("Notifications").Include("Settings").Include("Leagues").Include("Leagues.SkaterClass").Include("InsuranceNumbers").Include("ContactCard").Include("ContactCard.Emails").Include("ContactCard.Communications").Include("Photos").Include("Federations").Include("MedicalInformation").FirstOrDefault(x => x.MemberId.Equals(memberId));
                if (member == null)
                    return null;



                MemberDisplay mem = new MemberDisplay();

                mem.IsProfileRemovedFromPublicView = member.IsProfileRemovedFromPublic;
                if (member.IsProfileRemovedFromPublic && isPublicProfile)
                    return null;

                foreach (var photo in member.Photos.OrderBy(x => x.Created))
                {
                    mem.Photos.Add(new PhotoItem(photo.ImageUrl, photo.IsPrimaryPhoto, member.DerbyName));
                }
                if (member.YearStartedSkating != null && member.YearStartedSkating != new DateTime())
                    mem.StartedSkating = member.YearStartedSkating.Value;
                else
                    mem.StartedSkating = null;
                if (member.YearStoppedSkating != null && member.YearStoppedSkating != new DateTime())
                    mem.StoppedSkating = member.YearStoppedSkating.Value;
                else
                    mem.StoppedSkating = null;

                mem.CurrentLeagueId = member.CurrentLeagueId;
                mem.IsRetired = member.Retired;
                mem.Firstname = member.Firstname;
                mem.DerbyName = member.DerbyName;
                mem.DerbyNameUrl = ServerConfig.WEBSITE_DEFAULT_LOCATION + "/roller-derby-skater/" + RDN.Utilities.Strings.StringExt.ToSearchEngineFriendly(member.DerbyName) + "/" + member.MemberId.ToString().Replace("-", "");
                mem.MemberId = memberId;
                mem.UserId = member.AspNetUserId;
                mem.DayJob = member.DayJob;
                var user = Membership.GetUser((object)member.AspNetUserId);
                if (user != null)
                    mem.UserName = user.UserName;
                mem.IsNotConnectedToDerby = member.IsNotConnectedToDerby;

                mem.Email = ExtractEmailFromContactCard(member);
                if (member.ContactCard.Addresses.Count > 0)
                {
                    foreach (var add in member.ContactCard.Addresses)
                    {
                        var address = new RDN.Portable.Classes.ContactCard.Address();
                        address.AddressId = add.AddressId;
                        address.Address1 = add.Address1;
                        address.Address2 = add.Address2;
                        address.CityRaw = add.CityRaw;
                        if (add.Country != null)
                            address.Country = add.Country.Code;
                        address.StateRaw = add.StateRaw;
                        address.Zip = add.Zip;
                        address.Type = (AddressTypeEnum)add.AddressType;

                        mem.ContactCard.Addresses.Add(address);
                    }
                }
                GenderEnum gen;
                if (Enum.TryParse<GenderEnum>(member.Gender.ToString(), out gen))
                    mem.Gender = gen;
                mem.LastName = member.Lastname;
                mem.Bio = member.Bio;
                mem.DefaultPositionType = (DefaultPositionEnum)Enum.Parse(typeof(DefaultPositionEnum), member.PositionType.ToString());
                mem.BioHtml = member.Bio;

                if (member.DateOfBirth.HasValue)
                    mem.DOB = member.DateOfBirth.Value;

                mem.WeightLbs = member.WeightInLbs;

                if (member.HeightInches != 0)
                {
                    mem.HeightFeet = (int)(member.HeightInches / 12);
                    mem.HeightInches = (int)(member.HeightInches % 12);
                }

                DisplayInsuranceNumbers(member.InsuranceNumbers, mem);
                DisplayMemberNotifications(member.Notifications, mem);

                mem.Settings = MemberSettingsFactory.DisplayMemberSettings(member.Settings);

                foreach (var memberContact in member.MemberContacts)
                {
                    try
                    {
                        RDN.Portable.Classes.Account.Classes.MemberContact contact = new RDN.Portable.Classes.Account.Classes.MemberContact();
                        contact.ContactId = memberContact.ContactId;
                        contact.Firstname = memberContact.Firstname;
                        contact.Lastname = memberContact.Lastname;
                        contact.ContactType = (MemberContactTypeEnum)Enum.Parse(typeof(MemberContactTypeEnum), memberContact.ContactTypeEnum.ToString());
                        if (memberContact.ContactCard != null)
                        {
                            if (memberContact.ContactCard.Emails.Count > 0)
                                contact.Email = memberContact.ContactCard.Emails.Where(x => x.IsDefault == true).FirstOrDefault().EmailAddress;
                            if (memberContact.ContactCard.Communications.Count > 0)
                            {
                                contact.PhoneNumber = memberContact.ContactCard.Communications.FirstOrDefault().Data;
                                contact.SMSVerificationNum = memberContact.ContactCard.Communications.FirstOrDefault().SMSVerificationCode;
                                contact.Carrier = (MobileServiceProvider)memberContact.ContactCard.Communications.FirstOrDefault().CarrierType;
                            }
                            if (memberContact.ContactCard.Addresses.Count > 0)
                            {
                                contact.Addresses = new List<Portable.Classes.ContactCard.Address>();

                                foreach (var add in memberContact.ContactCard.Addresses)
                                {
                                    var address = new RDN.Portable.Classes.ContactCard.Address();
                                    address.Address1 = add.Address1;
                                    address.Address2 = add.Address2;
                                    address.CityRaw = add.CityRaw;
                                    if (add.Country != null)
                                        address.Country = add.Country.Code;
                                    address.StateRaw = add.StateRaw;
                                    address.Zip = add.Zip;
                                    address.Type = (AddressTypeEnum)add.AddressType;
                                    contact.Addresses.Add(address);
                                }
                            }
                        }
                        mem.MemberContacts.Add(contact);
                    }
                    catch (Exception exception)
                    {
                        ErrorDatabaseManager.AddException(exception, exception.GetType());
                    }
                }

                if (member.ContactCard.Communications.Count > 0)
                {
                    var com = member.ContactCard.Communications.Where(x => x.IsDefault == true).Where(x => x.CommunicationTypeEnum == (byte)CommunicationTypeEnum.PhoneNumber).FirstOrDefault();
                    if (com != null)
                    {
                        mem.PhoneNumber = com.Data;
                        mem.SMSVerificationNum = com.SMSVerificationCode;
                        mem.Carrier = (MobileServiceProvider)com.CarrierType;
                        mem.IsCarrierVerified = com.IsCarrierVerified;
                    }
                }
                mem.PlayerNumber = member.PlayerNumber;
                if (member.Leagues.Count > 0)
                {
                    foreach (var league in member.Leagues)
                    {
                        RDN.Portable.Classes.League.Classes.League l = new Portable.Classes.League.Classes.League();
                        l.LeagueId = league.League.LeagueId;
                        l.Name = league.League.Name;
                        l.IsInactiveInLeague = league.IsInactiveForLeague;
                        l.DepartureDate = league.DepartureDate;
                        l.MembershipDate = league.MembershipDate;
                        l.SkillsTestDate = league.SkillsTestDate;
                        l.HasLeftLeague = league.HasLeftLeague;
                        l.NotesAboutMember = league.Notes;
                        l.NameUrl = ServerConfig.WEBSITE_DEFAULT_LOCATION_FOR_LEAGUES + RDN.Utilities.Strings.StringExt.ToSearchEngineFriendly(l.Name) + "/" + l.LeagueId.ToString().Replace("-", "");
                        l.LeagueOwnersEnum = (LeagueOwnersEnum)league.LeagueOwnersEnums;
                        if (l.LeagueId == mem.CurrentLeagueId)
                        {
                            mem.LeagueOwnersEnum = l.LeagueOwnersEnum;
                            mem.DoesReceiveLeagueNotifications = !league.TurnOffEmailNotifications;
                        }
                        if (league.SkaterClass != null)
                            l.SkaterClass = league.SkaterClass.ClassId;
                        else
                            l.SkaterClass = 0;

                        mem.Leagues.Add(l);
                    }
                }

                MedicalInformationFactory.AttachMemberMedicalInformation(member, mem);

                foreach (var fed in member.Federations)
                {
                    FederationDisplay fedDisplay = new FederationDisplay();
                    fedDisplay.FederationId = fed.Federation.FederationId;
                    fedDisplay.FederationName = fed.Federation.Name;
                    fedDisplay.MADEClassRank = ((MADEClassRankEnum)Enum.ToObject(typeof(MADEClassRankEnum), fed.MADEClassRankForMember)).ToString();
                    fedDisplay.MemberType = ((MemberTypeFederationEnum)Enum.ToObject(typeof(MemberTypeFederationEnum), fed.MemberType)).ToString();
                    var ownersOfFed = fed.Federation.Owners.Where(x => x.Member == member).FirstOrDefault();
                    if (ownersOfFed == null)
                        fedDisplay.OwnerType = FederationOwnerEnum.None.ToString();
                    else
                        fedDisplay.OwnerType = ((FederationOwnerEnum)Enum.ToObject(typeof(FederationOwnerEnum), ownersOfFed.OwnerType)).ToString();

                    if (fed.MembershipDate != null && fed.MembershipDate != new DateTime())
                        fedDisplay.MembershipDate = fed.MembershipDate.Value;
                    else
                        fedDisplay.MembershipDate = DateTime.UtcNow;
                    fedDisplay.MembershipId = fed.FederationIdForMember;
                    mem.FederationsApartOf.Add(fedDisplay);
                }
                if (pullGameData)
                    GetGameStats(memberId, dc, mem);
                return mem;
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return null;
        }
        public ActionResult ManagePost(Game game)
        {
            try
            {
                var gameDb = GameManager.GetGameForManagement(game.GameId, game.PrivateKeyForGame, RDN.Library.Classes.Account.User.GetMemberId());
                if (game == null)
                    return Redirect(Url.Content("~/"));

                gameDb.GameName = game.GameName;
                gameDb.GameDate = game.GameDate;

                for (int i = 0; i < gameDb.MembersOfGame.Count; i++)
                {
                    string linkId = HttpContext.Request.Form[gameDb.MembersOfGame[i].MemberId.ToString().Replace("-", "") + "hidden"];
                    if (String.IsNullOrEmpty(linkId))
                        gameDb.MembersOfGame[i].MemberLinkId = new Guid();
                    else
                    {
                        if (new Guid(linkId) != gameDb.MembersOfGame[i].MemberLinkId)
                        {
                            gameDb.MembersOfGame[i].MemberLinkId = new Guid(linkId);
                        }
                    }
                }
                gameDb.SelectedShop = game.SelectedShop;
                gameDb.SelectedTournament = game.SelectedTournament;
                gameDb.PassCodeEnteredForTournament = game.PassCodeEnteredForTournament;

                for (int i = 0; i < gameDb.MemberOwners.Count + 5; i++)
                {
                    if (HttpContext.Request.Form["MemberOwner" + i + "hidden"] != null && !String.IsNullOrEmpty(HttpContext.Request.Form["MemberOwner" + i + "hidden"].ToString()))
                    {
                        MemberDisplayBasic mem = new MemberDisplayBasic();
                        mem.MemberId = new Guid(HttpContext.Request.Form["MemberOwner" + i + "hidden"].ToString());
                        gameDb.MemberOwners.Add(mem);
                    }
                    if (HttpContext.Request.Form["LeagueOwner" + i + "hidden"] != null && !String.IsNullOrEmpty(HttpContext.Request.Form["LeagueOwner" + i + "hidden"].ToString()))
                    {
                        RDN.Portable.Classes.League.Classes.League mem = new Portable.Classes.League.Classes.League();
                        mem.LeagueId = new Guid(HttpContext.Request.Form["LeagueOwner" + i + "hidden"].ToString());
                        gameDb.LeagueOwners.Add(mem);
                    }
                    if (HttpContext.Request.Form["FederationOwner" + i + "hidden"] != null && !String.IsNullOrEmpty(HttpContext.Request.Form["FederationOwner" + i + "hidden"].ToString()))
                    {
                        FederationDisplay mem = new FederationDisplay();
                        mem.FederationId = new Guid(HttpContext.Request.Form["FederationOwner" + i + "hidden"].ToString());
                        gameDb.FederationOwners.Add(mem);
                    }
                }
                if (!String.IsNullOrEmpty(game.EmbededVideoString))
                    gameDb.IsThereVideoOfGame = GameVideoTypeEnum.EmbededVideo;
                else if (!String.IsNullOrEmpty(game.StreamingUrlSilverlight))
                    gameDb.IsThereVideoOfGame = GameVideoTypeEnum.SilverLightLive;

                gameDb.StreamingMobileUrlSilverlight = game.StreamingMobileUrlSilverlight;
                gameDb.StreamingUrlSilverlight = game.StreamingUrlSilverlight;
                gameDb.EmbededVideoString = game.EmbededVideoString;
                gameDb.SelectedPaywall = game.SelectedPaywall;

                GameManager.UpdateGameFromManagement(gameDb);
                try
                {
                    //clears the live game once we complete the update.
                    WebClient client = new WebClient();
                    client.DownloadString(ServerConfig.URL_TO_CLEAR_LIVE_GAME_CACHE + game.GameId.ToString());
                }
                catch { }
                try
                {
                    //clears the live game once we complete the update.
                    WebClient client = new WebClient();
                    client.DownloadString(ServerConfig.WEBSITE_CLEAR_TOURNAMENT_CACHE_API);
                }
                catch { }
                return Redirect(Url.Content("~/game/manage/" + game.PrivateKeyForGame.ToString().Replace("-", "") + "/" + game.GameId.ToString().Replace("-", "") + "?u=" + SiteMessagesEnum.s));
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.na));
        }
        /// <summary>
        /// scans derby roster.com for us for the shadow leagues.
        /// </summary>
        public static void ScanDerbyRosterWebsite()
        {

            //<tr class="(trc1|trc2)"><td>(&nbsp;|[a-zA-Z0-9\s�\-\.\'\%\(\),!"#$*/\?:&\+!_=~@\[\]`]+)</td><td>(&nbsp;|[0-9a-zA-Z\s\.\/\-%#:'�$"\+&/\\!_@\>=\?,\)\(\*\^;\]\[~]+(&cent;)?|&times;)</td><td>([0-9\-]+|&nbsp;)</td><td>(&nbsp;|[a-zA-Z\s\(\)0-9/\.':,\-�!_\*\?]+)</td></tr>

            //name: (&nbsp;|[a-zA-Z0-9\s�\-\.\'\%\(\),!"#$*/\?:&\+!_=~@\[\]`]+)
            //number: (&nbsp;|[0-9a-zA-Z\s\.\/\-%#:'�$"\+&/\\!_@\>=\?,\)\(\*\^;\]\[~]+(&cent;)?|&times;)
            // date: ([0-9\-]+|&nbsp;)
            //league: (&nbsp;|[a-zA-Z\s\(\)0-9/\.':,\-�!_\*\?]+)
            List<ItemInMatches> countries = new List<ItemInMatches>();
            List<ItemInMatches> states = new List<ItemInMatches>();
            List<MemberDisplay> profiles = new List<MemberDisplay>();
            //<a href="http(s)?://[a-zA-Z\.\-/0-9\?\=\_%&]+" target="_blank">[a-zA-Z0-9\s\-\'\.\(\)\!"/]+</a>
            StringBuilder sb = new StringBuilder();
            sb.Append("<a href=\"");
            sb.Append(@"http://[a-zA-Z\.\-/0-9\?\=_%&]+");
            sb.Append("\" target=\"");
            sb.Append("_blank\"");
            sb.Append(@">[a-zA-Z0-9\s\-\'\.\(\)\!");
            sb.Append("\"/]+</a>");
            Regex lineItem = new Regex(sb.ToString(), RegexOptions.IgnoreCase | RegexOptions.Compiled);

            StringBuilder sbState = new StringBuilder();
            sbState.Append("class=\"state\" style=\"padding-left: 20px;\" >[a-zA-Z");
            sbState.Append(@"\s]+</td>");
            Regex stateItem = new Regex(sbState.ToString(), RegexOptions.IgnoreCase | RegexOptions.Compiled);

            StringBuilder sbCountry = new StringBuilder();
            sbCountry.Append("<h7 class=\"expand\">[a-zA-Z");
            sbCountry.Append(@"\s]+</h7>");
            Regex countryItem = new Regex(sbCountry.ToString(), RegexOptions.IgnoreCase | RegexOptions.Compiled);

            StringBuilder sbName = new StringBuilder();
            sbName.Append(@"[a-zA-Z0-9\s\-\'\.\(\)\!");
            sbName.Append("\"/]+");
            Regex name = new Regex(sbName.ToString(), RegexOptions.IgnoreCase | RegexOptions.Compiled);
            Regex state = new Regex(@"[a-zA-Z\s]+", RegexOptions.IgnoreCase | RegexOptions.Compiled);
            Regex country = new Regex(@"[a-zA-Z\s]+", RegexOptions.IgnoreCase | RegexOptions.Compiled);
            Regex webSite = new Regex(@"http://[a-zA-Z\.\-/0-9\?\=_%&]+", RegexOptions.IgnoreCase | RegexOptions.Compiled);

            WebClient webClient = new WebClient();
            const string strUrl = "http://derbyroster.com/";
            byte[] reqHTML;
            reqHTML = webClient.DownloadData(strUrl);
            UTF8Encoding objUTF8 = new UTF8Encoding();
            string html = objUTF8.GetString(reqHTML);
            html = html.Replace("�", "");

            int blah = lineItem.Matches(html).Count;

            foreach (Match stMatch in stateItem.Matches(html))
            {
                ItemInMatches item = new ItemInMatches();
                item.index = stMatch.Index;
                item.name = stMatch.Value;
                item.name = item.name.Remove(0, item.name.IndexOf(">"));
                item.name = country.Match(item.name).Value;
                states.Add(item);
            }

            foreach (Match stMatch in countryItem.Matches(html))
            {
                ItemInMatches item = new ItemInMatches();
                item.index = stMatch.Index;
                item.name = stMatch.Value;
                item.name = item.name.Remove(0, item.name.IndexOf(">"));
                item.name = state.Match(item.name).Value;
                countries.Add(item);
            }

            MatchCollection matches = lineItem.Matches(html);
            foreach (Match pro in matches)
            {
                string match = pro.Value;

                MemberDisplay profile = new MemberDisplay();
                //website
                RDN.Portable.Classes.League.Classes.League l = new Portable.Classes.League.Classes.League();
                l.Website = webSite.Match(match).Value;
                match = match.Remove(0, match.IndexOf(">"));
                //name
                l.Name = name.Match(match).Value;
                profile.Leagues.Add(l);
                //state
                var stat = states.Where(x => x.index < pro.Index).LastOrDefault();
                profile.PhoneNumber = stat.name;
                //country
                var count = countries.Where(x => x.index < pro.Index).LastOrDefault();
                profile.PlayerNumber = count.name;

                profiles.Add(profile);
            }

            foreach (var pr in profiles)
            {
                try
                {
                    var dc = new ManagementContext();
                    if (pr.Leagues.FirstOrDefault() != null)
                    {
                        Console.WriteLine("teamName:" + pr.Leagues.FirstOrDefault().Name);
                        var team = dc.LeaguesForDerbyRoster.Where(x => x.Name.ToLower() == pr.Leagues.FirstOrDefault().Website.ToLower()).FirstOrDefault();
                        if (team == null)
                        {
                            DerbyRosterLeague roster = new DerbyRosterLeague();
                            roster.Name = pr.Leagues.FirstOrDefault().Name;
                            roster.WebSite = pr.Leagues.FirstOrDefault().Website;
                            roster.State = pr.PhoneNumber;
                            roster.Country = pr.PlayerNumber;

                            dc.LeaguesForDerbyRoster.Add(roster);
                            dc.SaveChanges();

                            //http://rdnation.com/roller-derby-league/San-Diego-Roller-Derby/99121fbf301f4c2fb4beb5c13d011088
                            string url = "http://rdnation.com/roller-derby-league/2/" + RDN.Utilities.Strings.StringExt.ToSearchEngineFriendly(pr.Leagues.FirstOrDefault().Name) + "/" + roster.TeamId.ToString().Replace("-", "");
                            Console.WriteLine("sitemap:" + url);
                            SitemapHelper.AddNode(url, false);

                        }
                    }
                }
                catch { }
            }

        }