public static bool UpdateGroup(LeagueGroup group)
        {
            try
            {
                var dc = new ManagementContext();
                var g = dc.LeagueGroups.Where(x => x.Id == group.Id).FirstOrDefault();
                if (g != null)
                {
                    g.GroupName = group.GroupName;
                    g.GroupTypeEnum = Convert.ToInt32(group.GroupTypeEnum);
                    g.IsPublicToWorld = group.IsPublicToWorld;
                    g.League = g.League;
                }

                if (g.ContactCard != null && g.ContactCard.Emails.Count > 0 && !String.IsNullOrEmpty(group.EmailAddress))
                {
                    var e = g.ContactCard.Emails.FirstOrDefault();
                    e.EmailAddress = group.EmailAddress;
                }
                else if (!String.IsNullOrEmpty(group.EmailAddress))
                {
                    if (g.ContactCard == null)
                        g.ContactCard = new DataModels.ContactCard.ContactCard();
                    g.ContactCard.Emails.Add(new RDN.Library.DataModels.ContactCard.Email { EmailAddress = group.EmailAddress, IsDefault = true });

                }



                foreach (var mem in group.GroupMembers)
                {
                    var gm11 = g.GroupMembers.Where(x => x.Member.MemberId == mem.MemberId).FirstOrDefault();
                    if (mem.IsApartOfGroup)
                    {
                        if (gm11 == null)
                        {
                            GroupMember gm = new GroupMember();
                            gm.Group = g;
                            gm.Member = dc.Members.Where(x => x.MemberId == mem.MemberId).FirstOrDefault();
                            gm.MemberAccessLevelEnum = Convert.ToInt32(mem.MemberAccessLevelEnum);
                            g.GroupMembers.Add(gm);
                            LeagueGroupFactory.EmailMemberAboutAddedToGroup(group.GroupName, mem.MemberId);
                        }
                        else
                        {
                            gm11.MemberAccessLevelEnum = Convert.ToInt32(mem.MemberAccessLevelEnum);
                            gm11.IsMemRemoved = false;
                            gm11.Member = gm11.Member;
                            gm11.Group = gm11.Group;
                        }
                    }
                    else
                    {
                        if (gm11 != null)
                        {
                            gm11.IsMemRemoved = true;
                            gm11.Member = gm11.Member;
                            gm11.Group = gm11.Group;
                        }
                    }
                }

                int c = dc.SaveChanges();


                foreach (var mem in group.GroupMembers)
                {
                    if (mem.IsApartOfGroup)
                    {
                        MemberCache.Clear(mem.MemberId);
                        MemberCache.ClearApiCache(mem.MemberId);
                    }
                }


                if (c > 0)
                    return true;
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return false;
        }
        public static bool AddGroup(LeagueGroup group)
        {
            try
            {
                var dc = new ManagementContext();
                RDN.Library.DataModels.League.Group.Group g = new DataModels.League.Group.Group();
                g.GroupName = group.GroupName;
                g.GroupTypeEnum = Convert.ToInt32(group.GroupTypeEnum);
                g.IsPublicToWorld = group.IsPublicToWorld;
                g.League = dc.Leagues.Where(x => x.LeagueId == group.League.LeagueId).FirstOrDefault();

                if (!String.IsNullOrEmpty(group.EmailAddress))
                {
                    g.ContactCard = new DataModels.ContactCard.ContactCard();
                    g.ContactCard.Emails.Add(new RDN.Library.DataModels.ContactCard.Email { EmailAddress = group.EmailAddress, IsDefault = true });

                }
                foreach (var mem in group.GroupMembers)
                {
                    GroupMember gm = new GroupMember();
                    gm.Group = g;
                    gm.Member = dc.Members.Where(x => x.MemberId == mem.MemberId).FirstOrDefault();
                    gm.MemberAccessLevelEnum = Convert.ToInt32(mem.MemberAccessLevelEnum);
                    g.GroupMembers.Add(gm);
                }
                dc.LeagueGroups.Add(g);
                int c = dc.SaveChanges();
                var memId = RDN.Library.Classes.Account.User.GetMemberId();
                MemberCache.Clear(memId);
                MemberCache.ClearApiCache(memId);
                if (c > 0)
                    return true;
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return false;
        }
 public static bool AddMemberToGroup(long groupId, Guid leagueId, Guid memId, string memType)
 {
     try
     {
         var dc = new ManagementContext();
         var memDb = dc.LeagueGroupMembers.Where(x => x.Member.MemberId == memId && x.Group.Id == groupId).FirstOrDefault();
         if (memDb == null)
         {
             GroupMember mem = new GroupMember();
             mem.Group = dc.LeagueGroups.Where(x => x.Id == groupId && x.League.LeagueId == leagueId).FirstOrDefault();
             mem.Member = dc.Members.Where(x => x.MemberId == memId).FirstOrDefault();
             mem.MemberAccessLevelEnum = Convert.ToInt32((GroupMemberAccessLevelEnum)Enum.Parse(typeof(GroupMemberAccessLevelEnum), memType));
             dc.LeagueGroupMembers.Add(mem);
             EmailMemberAboutAddedToGroup(mem.Group.GroupName, memId);
         }
         else
         {
             memDb.Group = memDb.Group;
             memDb.Member = memDb.Member;
             memDb.IsMemRemoved = false;
             memDb.MemberAccessLevelEnum = Convert.ToInt32((GroupMemberAccessLevelEnum)Enum.Parse(typeof(GroupMemberAccessLevelEnum), memType));
             EmailMemberAboutAddedToGroup(memDb.Group.GroupName, memId);
         }
         int c = dc.SaveChanges();
         MemberCache.Clear(memId);
         MemberCache.ClearApiCache(memId);
         if (c > 0)
             return true;
     }
     catch (Exception exception)
     {
         ErrorDatabaseManager.AddException(exception, exception.GetType());
     }
     return false;
 }