public Group Create(string name, bool usePermissions)
        {
            if (this.Exists(name, null))
            {
                var ex = new StrixMembershipException(string.Format("A group with name {0} already exists", name));
                Logger.Log(ex.Message, ex, LogLevel.Fatal);
                throw ex;
            }

            var currentUserId = StrixPlatform.User.Id;

            if (currentUserId == null)
            {
                throw new StrixMembershipException("No active user");
            }

            var group = new Group(Guid.NewGuid(), name);
            group.UsePermissions = usePermissions;
            group = this._dataSource.Save(group);

            if (group == null)
            {
                Logger.Log(string.Format("An error occurred while creating group {0}", group.Name), LogLevel.Error);
            }
            else
            {
                var args = new Dictionary<string, object>();
                args.Add("Id", group.Id);
                args.Add("GroupName", group.Name);
                StrixPlatform.RaiseEvent<GeneralEvent>(new GeneralEvent("GroupCreateEvent", args));
            }

            return group;
        }
        public void InitMainGroup()
        {
            if (_mainGroup == null)
            {
                _mainGroup = this._dataSource.Query<Group>("Roles.Role").Where(g => g.Name.ToLower() == Resources.DefaultValues.MainGroupName).FirstOrDefault();

                if (_mainGroup == null)
                {
                    var mainGroup = new Group(Guid.NewGuid(), Resources.DefaultValues.MainGroupName);
                    this._dataSource.Save(mainGroup);
                    var adminRole = new Role(Guid.NewGuid(), mainGroup.Id, PlatformConstants.ADMINROLE);
                    this._dataSource.Save(adminRole);
                    var groupRole = new GroupInRole(mainGroup.Id, adminRole.Id, DateTime.Now, null);
                    groupRole.CurrentNumberOfUsers = 1;
                    this._adminRole = groupRole;
                    mainGroup.Roles = new List<GroupInRole>() { groupRole };
                    _mainGroup = mainGroup;
                    this._dataSource.SaveChanges();
                }
                else
                {
                    this._adminRole = _mainGroup.Roles.First(r => r.Role.Name.ToLower() == PlatformConstants.ADMINROLE.ToLower());
                }
            }
        }