private void LoadUserPermission(ref OCL.Oyster OSystem, ref OCL.User AccessingUser, ref OCL.User TargetUser)
        {
            lblPageDescription.Text = TargetUser.FirstName + " " + TargetUser.MiddleName + " " +
                                      TargetUser.LastName + "'s System Permissions";
            OCL.Group DG = (OCL.Group)OSystem.GetUnassignedObject(OCL.OysterUnassignedObjects.Group);
            OCL.Permission DefaultUserPermission = null;
            OCL.Permission DefaultScenePermission = null;
            OCL.Permission DefaultSourcePermission = null;
            OCL.Permission DefaultRecordingSessionPermission = null;
            OCL.Permission DefaultGroupPermission = null;
            OCL.Permission DefaultControlPermission = null;

            if(null != TargetUser)
            {
                OCL.User DU = (OCL.User)OSystem.GetUnassignedObject(OCL.OysterUnassignedObjects.User);
                OCL.Scene DS = (OCL.Scene)OSystem.GetUnassignedObject(OCL.OysterUnassignedObjects.Scene);
                OCL.RecordingSession DRS = (OCL.RecordingSession)OSystem.GetUnassignedObject(OCL.OysterUnassignedObjects.RecordingSession);
                OCL.Control DC = (OCL.Control)OSystem.GetUnassignedObject(OCL.OysterUnassignedObjects.Control);
                OCL.Source DSource = (OCL.Source)OSystem.GetUnassignedObject(OCL.OysterUnassignedObjects.Source);

                DefaultUserPermission = DG.GetObjectPermission(AccessingUser,TargetUser,DU);
                DefaultScenePermission = DG.GetObjectPermission(AccessingUser,TargetUser,DS);
                DefaultRecordingSessionPermission = DG.GetObjectPermission(AccessingUser,TargetUser,DRS);
                DefaultGroupPermission = DG.GetObjectPermission(AccessingUser,TargetUser,DG);
                DefaultControlPermission = DG.GetObjectPermission(AccessingUser,TargetUser,DC);
                DefaultSourcePermission = DG.GetObjectPermission(AccessingUser,TargetUser,DSource);
            }
            else
            {
                DefaultUserPermission = DG.GetDefaultUserPermission(AccessingUser);
                DefaultScenePermission = DG.GetDefaultScenePermission(AccessingUser);
                DefaultRecordingSessionPermission = DG.GetDefaultRecordingSessionPermission(AccessingUser);
                DefaultGroupPermission = DG.GetDefaultGroupAccessPermission(AccessingUser);
                DefaultControlPermission = DG.GetDefaultControlPermission(AccessingUser);
                DefaultSourcePermission = DG.GetDefaultSourcePermission(AccessingUser);
            }

            //User Permissions
            chkSeeUsers.Checked = DefaultUserPermission.IsVisible;
            chkEditUsers.Checked =  DefaultUserPermission.CanEdit;
            chkAddUsers.Checked =  DefaultUserPermission.CanAdd;
            chkRemoveUsers.Checked =  DefaultUserPermission.CanDelete;
            chkEditPermissionsUsers.Checked = DefaultUserPermission.IsWatchable;

            //Scene Permissions
            chkSeeScenes.Checked = DefaultScenePermission.IsVisible;
            chkEditScenes.Checked =  DefaultScenePermission.CanEdit;
            chkAddScenes.Checked =  DefaultScenePermission.CanAdd;
            chkRemoveScenes.Checked =  DefaultScenePermission.CanDelete;
            chkWatchScenes.Checked = DefaultScenePermission.IsWatchable;

            //RecordingSession Permissions
            chkSeeRecordings.Checked = DefaultRecordingSessionPermission.IsVisible;
            chkEditRecordings.Checked =  DefaultRecordingSessionPermission.CanEdit;
            chkAddRecordings.Checked =  DefaultRecordingSessionPermission.CanAdd;
            chkRemoveRecordings.Checked =  DefaultRecordingSessionPermission.CanDelete;
            chkWatchRecordings.Checked = DefaultRecordingSessionPermission.IsWatchable;

            //Group Permissions
            chkSeeGroups.Checked = DefaultGroupPermission.IsVisible;
            chkEditGroups.Checked =  DefaultGroupPermission.CanEdit;
            chkAddGroup.Checked =  DefaultGroupPermission.CanAdd;
            chkRemoveGroup.Checked =  DefaultGroupPermission.CanDelete;

            //Control Permissions
            chkSeeControl.Checked = DefaultControlPermission.IsVisible;
            chkEditControl.Checked =  DefaultControlPermission.CanEdit;
            chkAddControls.Checked =  DefaultControlPermission.CanAdd;
            chkRemoveControls.Checked =  DefaultControlPermission.CanDelete;
            chkUseControls.Checked = DefaultControlPermission.IsWatchable;

            //Source Permissions
            chkSeeSource.Checked = DefaultSourcePermission.IsVisible;
            chkEditSources.Checked =  DefaultSourcePermission.CanEdit;
            chkAddSources.Checked =  DefaultSourcePermission.CanAdd;
            chkRemoveSources.Checked =  DefaultSourcePermission.CanDelete;
            chkWatchSources.Checked = DefaultSourcePermission.IsWatchable;
        }
        private void CheckUserCredentials(ref OCL.Oyster OSystem, ref OCL.User AccessingUser, ref OCL.User TargetUser)
        {
            OCL.Group DefaultGroup = (OCL.Group)OSystem.GetUnassignedObject(OCL.OysterUnassignedObjects.Group);
            bool IsEnabled = false;
            if(AccessingUser.CanEditAllUsers)
            {
                btnUpdatePermissions.Enabled = true;
                IsEnabled = true;
            }
            else
            {
                OCL.Permission P = DefaultGroup.GetObjectPermission(AccessingUser,AccessingUser,TargetUser);
                if(P != null)
                {
                    btnUpdatePermissions.Enabled = P.CanEdit;
                    IsEnabled = P.CanEdit;
                }
                else
                {
                    btnUpdatePermissions.Enabled = false;
                    IsEnabled = false;
                }
            }
            //User Permissions
            chkSeeUsers.Enabled = IsEnabled;
            chkEditUsers.Enabled =  IsEnabled;
            chkAddUsers.Enabled =  IsEnabled;
            chkRemoveUsers.Enabled =  IsEnabled;
            chkEditPermissionsUsers.Enabled = IsEnabled;

            //Scene Permissions
            chkSeeScenes.Enabled = IsEnabled;
            chkEditScenes.Enabled =  IsEnabled;
            chkAddScenes.Enabled =  IsEnabled;
            chkRemoveScenes.Enabled =  IsEnabled;
            chkWatchScenes.Enabled = IsEnabled;

            //RecordingSession Permissions
            chkSeeRecordings.Enabled = IsEnabled;
            chkEditRecordings.Enabled =  IsEnabled;
            chkAddRecordings.Enabled =  IsEnabled;
            chkRemoveRecordings.Enabled =  IsEnabled;
            chkWatchRecordings.Enabled = IsEnabled;
            //Group Permissions
            chkSeeGroups.Enabled = IsEnabled;
            chkEditGroups.Enabled =  IsEnabled;
            chkAddGroup.Enabled =  IsEnabled;
            chkRemoveGroup.Enabled =  IsEnabled;

            //Control Permissions
            chkSeeControl.Enabled = IsEnabled;
            chkEditControl.Enabled =  IsEnabled;
            chkAddControls.Enabled =  IsEnabled;
            chkRemoveControls.Enabled =  IsEnabled;
            chkUseControls.Enabled = IsEnabled;
            //Source Permissions
            chkSeeSource.Enabled = IsEnabled;
            chkEditSources.Enabled =  IsEnabled;
            chkAddSources.Enabled =  IsEnabled;
            chkRemoveSources.Enabled =  IsEnabled;
            chkWatchSources.Enabled = IsEnabled;
        }