public Services.Packages.Log.ApplicationExceptionCollection GetInnerExceptions(ApplicationException _ApplicationException, string SessionToken)
        {
            _ApplicationException.Reload();

            //*
            if (!Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Traverse"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            /*
            if (!Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException.InnerExceptions, SessionToken, "Read"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            return _ApplicationException.InnerExceptions;
        }
        public Services.Packages.Security.ModelUser GetOwner(ApplicationException _ApplicationException, string SessionToken)
        {
            _ApplicationException.Reload();

            //*
            if (!Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Traverse"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            //*
            if (!Services.Packages.Security.Security.ModelUserSecureService.CheckAccessImp(_ApplicationException.Owner, SessionToken, "Read"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            return _ApplicationException.Owner;
        }
        public void CreateObjectFromOwner(ApplicationException _ApplicationException, Services.Packages.Security.ModelUser _Owner, string SessionToken)
        {
            ModelSession session = ApplicationExceptionSecureService.CheckSessionImp(SessionToken);

            //if (!Services.Packages.Security.Security.ModelUserSecureService.CheckAccessImp(_Owner, SessionToken, "Create ApplicationExceptionOwning"))
            //	throw new UnauthorizedAccessException("Access Denied");

            _ApplicationException.Reload();

            if (!_ApplicationException.Exists && !Services.Packages.Security.Security.ModelUserSecureService.CheckAccessImp(_Owner, SessionToken, "Create ApplicationExceptionOwning"))
                throw new UnauthorizedAccessException("Access Denied");
            else if (_ApplicationException.Exists && !ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Update"))
                throw new UnauthorizedAccessException("Access Denied");

            _ApplicationException.Owner = session.User;
            _ApplicationException.Owner = _Owner;
            _ApplicationException.Create();
        }
        public void CreateObjectFromParentException(ApplicationException _ApplicationException, Services.Packages.Log.ApplicationException _ParentException, string SessionToken)
        {
            ModelSession session = ApplicationExceptionSecureService.CheckSessionImp(SessionToken);

            //if (!Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ParentException, SessionToken, "Create InnerExceptions"))
            //	throw new UnauthorizedAccessException("Access Denied");

            _ApplicationException.Reload();

            if (!_ApplicationException.Exists && !Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ParentException, SessionToken, "Create InnerExceptions"))
                throw new UnauthorizedAccessException("Access Denied");
            else if (_ApplicationException.Exists && !ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Update"))
                throw new UnauthorizedAccessException("Access Denied");

            _ApplicationException.Owner = session.User;
            _ApplicationException.ParentException = _ParentException;
            _ApplicationException.Create();
        }
        public void SetParentException(ApplicationException _ApplicationException, Services.Packages.Log.ApplicationException _ParentException, string SessionToken)
        {
            _ApplicationException.Reload();

            //*
            if (!Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Traverse"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            //*
            _ParentException.Reload();
            if (_ParentException.Exists && !Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ParentException, SessionToken, "Update"))
                throw new UnauthorizedAccessException("Access Denied");
            else if (!_ParentException.Exists && !Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Create InnerExceptions"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            _ApplicationException.ParentException = _ParentException;
            _ApplicationException.Update();
        }
        public void SetOwner(ApplicationException _ApplicationException, Services.Packages.Security.ModelUser _Owner, string SessionToken)
        {
            _ApplicationException.Reload();

            //*
            if (!Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Traverse"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            //*
            _Owner.Reload();
            if (_Owner.Exists && !Services.Packages.Security.Security.ModelUserSecureService.CheckAccessImp(_Owner, SessionToken, "Update"))
                throw new UnauthorizedAccessException("Access Denied");
            else if (!_Owner.Exists && !Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Create ApplicationExceptionOwning"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            _ApplicationException.Owner = _Owner;
            _ApplicationException.Update();
        }
        public void SetApiKey(ApplicationException _ApplicationException, Services.Packages.ApiKey _ApiKey, string SessionToken)
        {
            _ApplicationException.Reload();

            //*
            if (!Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Traverse"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            //*
            _ApiKey.Reload();
            if (_ApiKey.Exists && !Services.Packages.Security.ApiKeySecureService.CheckAccessImp(_ApiKey, SessionToken, "Update"))
                throw new UnauthorizedAccessException("Access Denied");
            else if (!_ApiKey.Exists && !Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Create ApplicationExceptionsLogged"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            _ApplicationException.ApiKey = _ApiKey;
            _ApplicationException.Update();
        }
        public void SetACLs(ApplicationException _ApplicationException, Services.Packages.Log.Security.ApplicationExceptionAccessControlListCollection _ACLs, string SessionToken)
        {
            _ApplicationException.Reload();

            //*
            if (!Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Traverse"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            /*
            _ACLs.Reload();
            if (_ACLs.Exists && !Services.Packages.Log.Security.Security.ApplicationExceptionAccessControlListSecureService.CheckAccessImp(_ACLs, SessionToken, "Update"))
                throw new UnauthorizedAccessException("Access Denied");
            else if (!_ACLs.Exists && !Services.Packages.Log.Security.ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Create ACLs"))
                throw new UnauthorizedAccessException("Access Denied");
            //*/

            _ApplicationException.ACLs = _ACLs;
            _ApplicationException.Update();
        }
        public ApplicationException Reload(ApplicationException _ApplicationException, string SessionToken)
        {
            _ApplicationException.Reload();

            if (!ApplicationExceptionSecureService.CheckAccessImp(_ApplicationException, SessionToken, "Read"))
                throw new UnauthorizedAccessException("Access Denied");

            return _ApplicationException;
        }