Friday 12 February 2016

Users attached with role

Exportfile for AOT version 1.0 or later
Formatversion: 1
***Element: FRM
; Microsoft Dynamics AX Forms unloaded
; --------------------------------------------------------------------------------
FRMVERSION 12
FORM #SysUserInfoPage
  PROPERTIES
    Name                #SysUserInfoPage
    Origin              #{ED80CF56-7E83-4BA9-BC98-F4C39DC7FEFA}
  ENDPROPERTIES
 
  METHODS
    SOURCE #classDeclaration
      #class FormRun extends ObjectRun
      #{
      #    #Admin
      #    #Guest
      #    #resAppl
      #
      #    #define.AOSUser('-AOS-')
      #    #define.ENUM_FORMSTYLE_AUTO(0)
      #    #define.WINDOWTYPE_STANDARDWINDOW(0)
      #
      #    str aliasText;
      #    str aliasUserId;
      #    boolean inAliasTextChange;
      #
      #    str domainText;
      #    str domainUserId;
      #    boolean inDomainTextChange;
      #
      #    str nameText;
      #    boolean inNameTextChange;
      #
      #    boolean enabledOnce;
      #
      #    //Profile tab related
      #    boolean     profileTabLoaded;
      #    Map         origPerCompanyProfiles;
      #    List        companyIds;
      #    ProfileId   origAllCompaniesProfile;
      #
      #    #define.ProfileTypeNone(0)
      #    #define.ProfileTypeAll(1)
      #    #define.ProfileTypeSpecific(2)
      #
      #    #define.CompanySpecificProfilesColCompany(1)
      #    #define.CompanySpecificProfilesColProfile(2)
      #
      #    List regForUserSelChange;
      #
      #    Object caller;
      #    boolean isEditMode;
      #}
    ENDSOURCE
    SOURCE #close
      #public void close()
      #{
      #    // Clear out the list to prevent circular form references
      #    regForUserSelChange = new List(Types::Class);
      #
      #    super();
      #    SysSecurity::reload(false);
      #}
    ENDSOURCE
    SOURCE #generateInitialUserId
      #// Generates the 5 character user id from an alias
      #str generateInitialUserId(str _alias)
      #{
      #    UserInfo ui;
      #    boolean found = false;
      #    Name alias2;
      #
      #    if(strLen(_alias) <= 5 && strLen(_alias) > 0)
      #    {
      #        alias2 = _alias;
      #
      #        // If the alias is already used, return empty
      #        while select firstonly RecId from ui where ui.Id == alias2
      #        {
      #            found = true;
      #            break;
      #        }
      #
      #        if(!found)
      #        {
      #            return _alias;
      #        }
      #    }
      #
      #    return '';
      #}
      #
    ENDSOURCE
    SOURCE #generateInitialUserSid
      #// Generates a user SID from the user id and domain name
      #str generateInitialUserSid(str userId, str domainName, UserAccountType accountType)
      #{
      #    xAxaptaUserManager axUsrMgr;
      #    xAxaptaUserDetails axUsrDet;
      #    str userSid;
      #    int len;
      #
      #    if(domainName == '' || userId == '')
      #    {
      #        return '';
      #    }
      #
      #    // Instantiate AxaptaUserManager and get user's details
      #    axUsrMgr = new xAxaptaUserManager();
      #    //axUsrDet = axUsrMgr.getDomainUser(domainName, userId);
      #    try
      #    {
      #        len = infologLine();
      #        axUsrDet = axUsrMgr.getSIDFromName(userId, domainName, accountType);
      #    }
      #    catch(Exception::Error)
      #    {
      #        infolog.clear(len);
      #        throw error(accountType == UserAccountType::ClaimsUser ? "@SYS330368" : "@SYS90055");
      #    }
      #    try
      #    {
      #        if(axUsrDet && axUsrDet.getUserCount() > 0 && axUsrDet.isUserEnabled(0))
      #        {
      #            userSid = axUsrDet.getUserSid(0);
      #        }
      #
      #        return userSid;
      #    }
      #    catch(Exception::Error)
      #    {
      #        len = infologLine();
      #        if(len > 0)
      #        {
      #            infolog.clear(len - 1);
      #        }
      #        return '';
      #    }
      #}
      #
    ENDSOURCE
    SOURCE #getUserId
      #public FieldValue getUserId()
      #{
      #    return userInfo.Id;
      #}
    ENDSOURCE
    SOURCE #init
      #void init()
      #{
      #    isEditMode = false;
      #    regForUserSelChange = new List(Types::Class);
      #    if (!regForUserSelChange) info('regForUserSelChange ' + "@SYS309925");
      #
      #    caller = element.args().caller();
      #    if (caller != null && caller is FormRun && caller.name() == formStr(SysUserInfoPage))
      #    {
      #        element.launchAsStandardPage();
      #        isEditMode = true;
      #    }
      #
      #    super();
      #
      #    inAliasTextChange = false;
      #    inDomainTextChange = false;
      #    inNameTextChange = false;
      #    enabledOnce = false;
      #
      #    companyIds = new List(Types::String);
      #
      #    if (isEditMode)
      #    {
      #        grid.allowEdit(true);
      #        mnuItmBtnEditInGrid.visible(false);
      #    }
      #}
    ENDSOURCE
    SOURCE #launchAsStandardPage
      #private void launchAsStandardPage()
      #{
      #    element.form().design().style(#ENUM_FORMSTYLE_AUTO);
      #    element.form().design().windowType(#WINDOWTYPE_STANDARDWINDOW);
      #}
    ENDSOURCE
    SOURCE #launchDetailsPage
      #public void launchDetailsPage(OpenMode _mode)
      #{
      #    Args args;
      #    MenuFunction menuFunction;
      #
      #    args = new Args();
      #    args.caller(element);
      #    menuFunction = new MenuFunction(menuitemDisplayStr(SysUserInfoDetail), MenuItemType::Display);
      #    menuFunction.openMode(_mode);
      #    menuFunction.run(args);
      #}
    ENDSOURCE
    SOURCE #refresh
      #public void refresh()
      #{
      #    element.lockWindowUpdate(true);
      #    refreshButton.clicked();
      #    element.lockWindowUpdate(false);
      #}
    ENDSOURCE
    SOURCE #refreshUserInfo
      #void refreshUserInfo()
      #{
      #    userInfo_DS.reread();
      #}
      #
    ENDSOURCE
    SOURCE #registerForUserSelChange
      #public boolean registerForUserSelChange(Object _part)
      #{
      #    regForUserSelChange.addEnd(_part);
      #    _part.updateSelection(userInfo.Id);
      #    //info('registering Part ' + _part.toString() + ', ' + regForUserSelChange.toString());
      #    return true;
      #}
    ENDSOURCE
    SOURCE #updateCaller
      #void updateCaller()
      #{
      #    if (caller)
      #    {
      #        caller.updateGrid();
      #    }
      #}
    ENDSOURCE
    SOURCE #updateGrid
      #public void updateGrid()
      #{
      #    userInfo_ds.research(true);
      #}
    ENDSOURCE
    SOURCE #validateAdmin
      #boolean validateAdmin()
      #{
      #    return UserInfoHelp::validateAdmin(userInfo);
      #}
    ENDSOURCE
    SOURCE #validateOnline
      #//AosRunMode::Client
      #boolean validateOnline()
      #{
      #    if (SysUsersOnline::isUserOnline(userInfo.Id))
      #    {
      #        throw error("@SYS26837");
      #    }
      #    return true;
      #}
    ENDSOURCE
  ENDMETHODS
  OBJECTBANK
    PROPERTIES
    ENDPROPERTIES
   
    DATASOURCE
      OBJECTPOOL
        PROPERTIES
          Name                #UserInfo
          Table               #UserInfo
          InsertAtEnd         #No
          InsertIfEmpty       #No
        ENDPROPERTIES
       
        FIELDLIST
          DATAFIELD id
            PROPERTIES
            ENDPROPERTIES
           
            METHODS
              SOURCE #validate
                #public boolean validate()
                #{
                #    return true;
                #}
                #
              ENDSOURCE
            ENDMETHODS
          ENDDATAFIELD
         
          DATAFIELD enable
            PROPERTIES
            ENDPROPERTIES
           
            METHODS
              SOURCE #validate
                #boolean validate()
                #{
                ##define.Tab('\t')
                ##define.Space(' ')
                #
                #    boolean ret;
                #    Sid usersid;
                #    TextBuffer txtBuf;
                #    UserInfo ui2;
                #    Name userId;
                #    ;
                #
                #    if (!userInfo.Enable)
                #    {
                #        ret = element.validateAdmin() && super();
                #        userInfo.ExternalUser = false;
                #        //userInfo.Sid = '';
                #        grid.update();
                #    }
                #    else
                #    {
                #        try
                #        {
                #            userId = userInfo.Id;
                #
                #            if(userId == #GuestUser)
                #            {
                #                return true;
                #            }
                #
                #            if(userId == '')
                #            {
                #                error("@SYS91134");
                #                return false;
                #            }
                #
                #            if(userId == #AOSUser)
                #            {
                #                error("@SYS98151");
                #                return false;
                #            }
                #
                #            select firstonly ui2 where ui2.RecId != userInfo.RecId && ui2.Id == userId;
                #            if(ui2)
                #            {
                #                error(strFmt("@SYS93693", userId));
                #                userInfo.Id = '';
                #                return false;
                #            }
                #
                #            txtBuf = new TextBuffer();
                #            txtBuf.appendText(userId);
                #
                #            // User id can not contain any white space
                #            if(txtBuf.find(#Space) || txtBuf.find(#Tab))
                #            {
                #                error("@SYS91132");
                #                return false;
                #            }
                #
                #            // Generate a user SID from the user id and domain name, display error if SID not generated
                #            usersid = element.generateInitialUserSid(userInfo.NetworkAlias, userInfo.NetworkDomain, userInfo.AccountType);
                #            if(usersid == '')
                #            {
                #                Box::stop(userInfo.AccountType == UserAccountType::ClaimsUser ? "@SYS330368" : "@SYS90055");
                #
                #                return false;
                #            }
                #
                #            // Search for the same SID in the table
                #            select firstonly ui2 where ui2.Sid == usersid && userInfo.Enable && ui2.Id != userId;
                #            if(ui2)
                #            {
                #                // If the SID is already present in the table, display an error
                #                error("@SYS93694");
                #                return false;
                #            }
                #
                #            userInfo.Sid = usersid;
                #
                #            select * from ui2;
                #
                #            aliasText = userInfo_NetworkAlias.text();
                #            domainText = userInfo_NetworkDomain.text();
                #            nameText = userInfo_Name.text();
                #            userInfo.EnabledOnce = true;
                #        }
                #        catch(Exception::Error)
                #        {
                #            return false;
                #        }
                #
                #        ret = super();
                #    }
                #
                #    return ret;
                #}
              ENDSOURCE
            ENDMETHODS
          ENDDATAFIELD
         
          DATAFIELD networkDomain
            PROPERTIES
            ENDPROPERTIES
           
            METHODS
              SOURCE #validate
                #public boolean validate()
                #{
                #    boolean ret;
                #    ;
                #
                #    userinfo.NetworkDomain = strLRTrim(userinfo.NetworkDomain);
                #
                #    ret = super();
                #
                #    return ret;
                #}
                #
              ENDSOURCE
            ENDMETHODS
          ENDDATAFIELD
         
          DATAFIELD networkAlias
            PROPERTIES
            ENDPROPERTIES
           
            METHODS
              SOURCE #validate
                #public boolean validate()
                #{
                #    boolean ret;
                #    ;
                #
                #    userinfo.NetworkAlias = strLRTrim(userinfo.NetworkAlias);
                #
                #    ret = super();
                #
                #    return ret;
                #}
              ENDSOURCE
            ENDMETHODS
          ENDDATAFIELD
         
        ENDFIELDLIST
      ENDOBJECTPOOL
      METHODS
        SOURCE #selectionChanged
          #public void selectionChanged()
          #{
          #    Object partRegistered;
          #    ListEnumerator partEnum;
          #
          #    super();
          #
          #    if (regForUserSelChange)
          #    {
          #        partEnum = regForUserSelChange.getEnumerator();
          #        while (partEnum.moveNext())
          #        {
          #            partRegistered = partEnum.current();
          #            // info(selectedRole.Name);
          #            // info('sc: callback for ' + partRegistered.toString());
          #            partRegistered.updateSelection(userInfo.Id);
          #        }
          #    }
          #}
        ENDSOURCE
        SOURCE #reread
          #//Fired when the record is restored
          #public void reread()
          #{
          #    super();
          #
          #    if (profileTabLoaded && this.forceWrite())
          #    {
          #        this.forceWrite(false);
          #    }
          #}
        ENDSOURCE
        SOURCE #validateWrite
          #public boolean validateWrite()
          #{
          #    str alias;
          #    userId userId;
          #    str domainName;
          #    xAxaptaUserManager mgr;
          #    xAxaptaUserDetails det;
          #    xAxaptaUserDetails det2;
          #    boolean userInDb = false;
          #    UserInfo ui2;
          #    sid userSid;
          #    int len;
          #    UserInfo adminRecord;
          #    ;
          #
          #    userId = userInfo.Id;
          #
          #    if(userId == #AOSUser)
          #    {
          #        error("@SYS98151");
          #        return false;
          #    }
          #
          #    select adminRecord where adminRecord.Id == #AdminUser;
          #    if(adminRecord.RecId)
          #    {
          #        if(userinfo.Language == '')
          #        {
          #            userinfo.Language = adminRecord.Language;
          #        }
          #
          #        if(userinfo.Helplanguage == '')
          #        {
          #            userinfo.Helplanguage = adminRecord.Helplanguage;
          #        }
          #    }
          #    else
          #    {
          #       select adminRecord where adminRecord.Id == curUserId();
          #        if (adminRecord)
          #        {
          #            if(userinfo.Language == '')
          #            {
          #                userinfo.Language = adminRecord.Language;
          #            }
          #
          #            if(userinfo.Helplanguage == '')
          #            {
          #                userinfo.Helplanguage = adminRecord.Helplanguage;
          #            }
          #        }
          #    }
          #
          #    if(!super() || userId == '')
          #    {
          #        return false;
          #    }
          #
          #    mgr = new xAxaptaUserManager();
          #    alias = userInfo.NetworkAlias;
          #    domainName = userInfo.NetworkDomain;
          #
          #    // Get the single user's details from the kernel class
          #    //det = mgr.getDomainUser(domainName, alias);
          #    try
          #    {
          #        len = infologLine();
          #        det = mgr.getSIDFromName(alias, domainName, userInfo.AccountType);
          #    }
          #    catch(Exception::Error)
          #    {
          #        infolog.clear(len);
          #        throw error(userInfo.AccountType == UserAccountType::ClaimsUser ? "@SYS330368" : "@SYS90055");
          #    }
          #
          #    // If Admin alias/domain are getting changed, update SID
          #    if(userInfo.Id == #AdminUser)
          #    {
          #        try
          #        {
          #            if(det && det.getUserCount() > 0 && det.isUserEnabled(0))
          #            {
          #                userSid = det.getUserSid(0);
          #            }
          #
          #            if(userSid == '')
          #            {
          #                return false;
          #            }
          #
          #            select ui2 where ui2.Sid == userSid && ui2.Id != #AdminUser;
          #            if(ui2)
          #            {
          #                error("@SYS93694");
          #                return false;
          #            }
          #        }
          #        catch(Exception::Error)
          #        {
          #            len = infologLine();
          #            if(len > 0)
          #            {
          #                infolog.clear(len - 1);
          #            }
          #            Box::stop(userInfo.AccountType == UserAccountType::ClaimsUser ? "@SYS330368" : "@SYS90055");
          #            return false;
          #        }
          #    }
          #
          #    // Verify duplicate user id
          #    select firstonly ui2 where ui2.Id == userId;
          #    if(ui2)
          #    {
          #        if(ui2.RecId == userInfo.RecId)
          #        {
          #            userInDb = true;
          #        }
          #        else
          #        {
          #            error(strFmt("@SYS93693", userId));
          #            userInfo.Id = '';
          #            return false;
          #        }
          #    }
          #
          #    // Validate for all the users for which Enabled checkbox is checked
          #    if(userInfo.Enable)
          #    {
          #        if(userId != #GuestUser && (alias == '' || domainName == ''))
          #        {
          #            error("@SYS93695");
          #            return false;
          #        }
          #
          #        if(det != null && det.getUserCount() > 0 && det.isUserEnabled(0))
          #        {
          #            userInfo.ExternalUser = det.isUserExternal(0);
          #            userInfo.Sid = det.getUserSid(0);
          #            userInfo.NetworkDomain = det.getUserDomain(0);
          #            userInfo.AccountType = det.getAccountType(0);
          #
          #            if(userInfo.Enable)
          #            {
          #                userInfo.EnabledOnce = true;
          #                if(!userInfo.orig() || !userInfo.orig().EnabledOnce)
          #                {
          #                    // must reread the details structure using the getDomainUser API
          #                    // because the user name returned by getSidFromName is incorrect
          #                    // Note, however, that getDomainUser will not return details for a claims user
          #                    det2 = mgr.getDomainUser(domainName,  alias);
          #                    if(userInfo.Name == '')
          #                    {
          #                        userInfo.Name = (det2) ? det2.getUserName(0) : det.getUserName(0);
          #                    }
          #                    userEmail.text((det2) ? det2.getUserMail(0) : det.getUserMail(0));
          #                }
          #            }
          #        }
          #        else if(userId != #GuestUser)
          #        {
          #            error(userInfo.AccountType == UserAccountType::ClaimsUser ? "@SYS330368" : "@SYS90055");
          #            return false;
          #        }
          #    }
          #    else
          #    {
          #        // Uncheck the External checkbox since user is not enabled
          #        userInfo.ExternalUser = false;
          #
          #        if(!userInDb)
          #        {
          #            warning("@SYS93696");
          #        }
          #    }
          #
          #    return true;
          #}
          #
        ENDSOURCE
        SOURCE #write
          #void write()
          #{
          #    SysUserInfo sysUserInfo2;
          #
          #    userInfo.Id = strLTrim(strRTrim(userInfo.Id));
          #    userInfo.NetworkAlias = strLTrim(strRTrim(userInfo.NetworkAlias));
          #    userInfo.Name = strLTrim(strRTrim(userInfo.Name));
          #
          #    super();
          #
          #    ttsbegin;
          #    select firstonly RecId from sysUserInfo2
          #        where sysUserInfo2.Id == userinfo.Id;
          #
          #    if (!sysUserInfo2)
          #    {
          #        sysUserInfo2.initValue();
          #        sysUserInfo2.Email = userEmail.text();
          #        sysUserInfo2.Id = userinfo.Id;
          #        sysUserInfo2.insert();
          #    }
          #    else
          #    {
          #        sysUserInfo2.Email = userEmail.text();
          #    }
          #
          #    ttscommit;
          #
          #    SecurityKeySet::reloadDomainRestrictions();
          #    element.updateCaller();
          #}
          #
        ENDSOURCE
        SOURCE #create
          #public void create(boolean _append = false)
          #{
          #    element.launchDetailsPage(OpenMode::New);
          #}
        ENDSOURCE
        SOURCE #initValue
          #void initValue()
          #{
          #    Sid newSid = '';
          #
          #    infolog.getUserSetup().setDefaults(userInfo);
          #    userInfo.Enable = false;
          #
          #    newSid = userInfo.Sid;
          #
          #    super();
          #
          #    if(newSid == '' && newSid != userInfo.Sid)
          #    {
          #        userInfo.Sid = '';
          #    }
          #
          #    userInfo.Enable = false;
          #    userInfo.NetworkAlias = '';
          #    userInfo.NotifyTimeZoneMismatch = true;
          #}
        ENDSOURCE
        SOURCE #delete
          #void delete()
          #{
          #    SysUserLog              sysUserLog;
          #    SysUserInfo             sysUserInfo;
          #    DirPersonUser           dirPersonUser;
          #
          #    startLengthyOperation();
          #
          #    if(userInfo.Id == #GuestUser)
          #    {
          #        error(strFmt("@SYS29012", userInfo.Id));
          #        endLengthyOperation();
          #        return;
          #    }
          #
          #    if(element.validateAdmin() && element.validateOnline())
          #    {
          #        ttsbegin;
          #
          #        delete_from sysUserLog
          #            where sysUserLog.UserId == userInfo.Id;
          #
          #        delete_from sysUserInfo
          #            where sysUserInfo.Id == userInfo.Id;
          #
          #        delete_from dirPersonUser
          #            where dirPersonUser.User == userInfo.Id;
          #
          #        infolog.profileMgr().removeUserFromAllProfiles(userInfo.Id);
          #
          #        super();
          #        ttscommit;
          #    }
          #    element.updateCaller();
          #    endLengthyOperation();
          #}
        ENDSOURCE
        SOURCE #active
          #int active()
          #{
          #    int ret;
          #
          #    ret = super();
          #
          #    // Not allowed to create user relations for AD group account types.
          #    mnuItBtnRelations.enabled(userInfo.AccountType != UserAccountType::ADGroup);
          #
          #    profileTabLoaded = false;
          #    return ret;
          #}
        ENDSOURCE
      ENDMETHODS
    ENDDATASOURCE
  ENDOBJECTBANK
 
  REFERENCEDATASOURCES
  ENDREFERENCEDATASOURCES
 
  JOINS
  ENDJOINS
 
  PARTREFERENCES
    PARTREFERENCE #partRolesForUser
      PROPERTIES
        Name                #partRolesForUser
        MenuItemName        #SysSecPartRolesForUser
        DataSource          #UserInfo
        ElementPosition     #536870911
      ENDPROPERTIES
     
    ENDPARTREFERENCE
   
    PARTREFERENCE #SysSecPartUserLog
      PROPERTIES
        Name                #SysSecPartUserLog
        MenuItemName        #SyssecpartuserLog
        DataSource          #UserInfo
        DataSourceRelation  #SysUserLog.UserInfo
        IsLinked            #Yes
        ElementPosition     #1073741822
      ENDPROPERTIES
     
    ENDPARTREFERENCE
   
    PARTREFERENCE #partProfiles
      PROPERTIES
        Name                #partProfiles
        MenuItemName        #SysSecPartProfilesForUser
        DataSource          #UserInfo
        IsLinked            #Yes
        ElementPosition     #1610612733
      ENDPROPERTIES
     
    ENDPARTREFERENCE
   
  ENDPARTREFERENCES
 
  DESIGN
    PROPERTIES
      Caption             #@SYS25412
      UseCaptionFromMenuItem  #Yes
      TitleDatasource     #UserInfo
      WindowType          #ContentPage
      SetCompany          #No
      DataSource          #UserInfo
      Style               #ListPage
    ENDPROPERTIES
   
    CONTAINER
      CONTROL ACTIONPANE
        PROPERTIES
          Name                #ActionPane
          ElementPosition     #715827882
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL ACTIONPANETAB
        PROPERTIES
          Name                #ActionPaneTab
          Width               #Column width
          ElementPosition     #1073741823
          HierarchyParent     #ActionPane
          Caption             #@SYS25412
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL BUTTONGROUP
        PROPERTIES
          Name                #AttachmentsGroup
          ElementPosition     #2080374782
          HierarchyParent     #ActionPaneTab
          Caption             #@SYS316708
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL BUTTONGROUP
        PROPERTIES
          Name                #btnGrpMaintain
          ElementPosition     #1610612734
          HierarchyParent     #ActionPaneTab
          Caption             #@SYS116749
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL BUTTONGROUP
        PROPERTIES
          Name                #btnGrpNew
          ElementPosition     #1342177278
          HierarchyParent     #ActionPaneTab
          Caption             #@SYS300817
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL BUTTONGROUP
        PROPERTIES
          Name                #btnGrpView
          ElementPosition     #1744830462
          HierarchyParent     #ActionPaneTab
          Caption             #@SYS342635
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL BUTTONGROUP
        PROPERTIES
          Name                #List
          ElementPosition     #1979711486
          HierarchyParent     #ActionPaneTab
          Caption             #@SYS6188
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL BUTTONGROUP
        PROPERTIES
          Name                #relatedInformation
          ElementPosition     #1879048190
          HierarchyParent     #ActionPaneTab
          Caption             #@SYS323065
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL GRID
        PROPERTIES
          Name                #Grid
          AutoDeclaration     #Yes
          AllowEdit           #No
          Width               #Column width
          Height              #Column height
          ElementPosition     #1431655764
          DataSource          #UserInfo
          DefaultAction       #LaunchDefaultAction
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL CHECKBOX
        PROPERTIES
          Name                #UserInfo_Enabled
          Width               #50
          ElementPosition     #2130706430
          HierarchyParent     #Grid
          BackgroundColor     #Window background
          Label               #@SYS60755
          LabelWidth          #25
          DataSource          #UserInfo
          DataField           #enable
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL CHECKBOX
        PROPERTIES
          Name                #UserInfo_External
          AllowEdit           #No
          Width               #50
          ElementPosition     #2139095038
          HierarchyParent     #Grid
          BackgroundColor     #Window background
          Label               #@SYS69716
          LabelWidth          #25
          DataSource          #UserInfo
          DataField           #externalUser
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL COMBOBOX
        PROPERTIES
          Name                #UserInfo_accountType
          AutoDeclaration     #Yes
          HelpText            #@SYS329691
          ElementPosition     #984263336
          HierarchyParent     #Grid
          Label               #@SYS27730
          DataSource          #UserInfo
          DataField           #accountType
        ENDPROPERTIES
       
        METHODS
          SOURCE #selectionChange
            #public int selectionChange()
            #{
            #    int ret = false;
            #
            #    if ((userInfo.Id != #GuestUser) && (!userInfo.EnabledOnce || userInfo.Id == #AdminUser))
            #    {
            #        ret = super();
            #    }
            #    else
            #    {
            #        this.text(enum2str(userInfo.AccountType));
            #        this.update();
            #    }
            #
            #    return ret;
            #}
          ENDSOURCE
        ENDMETHODS
      ENDCONTROL
     
      CONTROL COMMANDBUTTON
        PROPERTIES
          Name                #cmdBtnNew
          AutoDeclaration     #Yes
          ElementPosition     #1073741822
          HierarchyParent     #btnGrpNew
          Text                #@SYS16181
          ButtonDisplay       #Text & Image above
          NormalImage         #10565
          ImageLocation       #EmbeddedResource
          Big                 #Yes
          Primary             #Yes
          Command             #260
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL COMMANDBUTTON
        PROPERTIES
          Name                #mnuItBtnRemove
          ElementPosition     #1908874351
          HierarchyParent     #btnGrpMaintain
          Text                #@SYS300820
          ButtonDisplay       #Text & Image above
          NormalImage         #10121
          ImageLocation       #EmbeddedResource
          MultiSelect         #Yes
          Primary             #Yes
          Command             #2832
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL COMMANDBUTTON
        PROPERTIES
          Name                #refreshButton
          AutoDeclaration     #Yes
          HelpText            #@SYS315818
          ElementPosition     #1073741822
          HierarchyParent     #List
          Text                #@SYS29018
          NormalImage         #11437
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Big                 #Yes
          Command             #2875
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL COMMANDBUTTON
        PROPERTIES
          Name                #SendToExcel
          HelpText            #@SYS315819
          ElementPosition     #1610612733
          HierarchyParent     #List
          Text                #@SYS134461
          NormalImage         #10156
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          MultiSelect         #Yes
          Big                 #Yes
          Command             #4436
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #ABH_UserattachedwithRole
          ElementPosition     #1879048189
          HierarchyParent     #List
          Text                #Users attached with role
          NormalImage         #10156
          ImageLocation       #EmbeddedResource
          MultiSelect         #No
          Big                 #Yes
          MenuItemType        #Action
          MenuItemName        #ABH_UserattachedwithRole
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #LaunchDefaultAction
          AutoDeclaration     #Yes
          Visible             #No
          ElementPosition     #2087831322
          HierarchyParent     #btnGrpMaintain
          ButtonDisplay       #Text & Image above
          NormalImage         #10040
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          DataSource          #UserInfo
          MenuItemName        #SysUserInfoDetail
        ENDPROPERTIES
       
        METHODS
          SOURCE #clicked
            #void clicked()
            #{
            #    element.launchDetailsPage(isEditMode ? OpenMode::Edit : OpenMode::View);
            #}
          ENDSOURCE
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #mibDocuView
          AllowEdit           #No
          HelpText            #@SYS128646
          ElementPosition     #1431655764
          HierarchyParent     #AttachmentsGroup
          Text                #@SYS316600
          NormalImage         #10442
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Big                 #Yes
          MenuItemName        #DocuView
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #mnuItBtnDetails
          AutoDeclaration     #Yes
          HelpText            #@SYS107224
          ElementPosition     #1789569704
          HierarchyParent     #btnGrpMaintain
          Text                #@SYS308814
          ButtonDisplay       #Text & Image above
          NormalImage         #10040
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Big                 #Yes
          Primary             #Yes
          DataSource          #UserInfo
          MenuItemName        #SysUserInfoDetail
        ENDPROPERTIES
       
        METHODS
          SOURCE #clicked
            #void clicked()
            #{
            #    element.launchDetailsPage(OpenMode::Edit);
            #}
          ENDSOURCE
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #mnuItBtnImport
          HelpText            #@SYS322381
          ElementPosition     #1610612733
          HierarchyParent     #btnGrpNew
          Text                #@SYS105127
          ButtonDisplay       #Text & Image above
          NormalImage         #11328
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Big                 #Yes
          MenuItemName        #SysSecUserAddRoles
        ENDPROPERTIES
       
        METHODS
          SOURCE #clicked
            #void clicked()
            #{
            #    SysUserADUserImportWizard wizard;
            #    ;
            #
            #    wizard = SysUserADUserImportWizard::construct();
            #
            #    wizard.setDomainsEnumerated(false);
            #    if (wizard.prompt())
            #        wizard.run();
            #
            #    userInfo_ds.executeQuery();
            #    grid.update();
            #    element.updateCaller();
            #}
            #
          ENDSOURCE
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #mnuItBtnLog
          ElementPosition     #1073741822
          HierarchyParent     #relatedInformation
          Text                #@SYS179648
          ButtonDisplay       #Text & Image above
          NormalImage         #10835
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Big                 #Yes
          Primary             #Yes
          MenuItemName        #SysUserLog
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #mnuItBtnOnlineTime
          ElementPosition     #1610612733
          HierarchyParent     #relatedInformation
          Text                #@SYS69324
          ButtonDisplay       #Text & Image above
          NormalImage         #11013
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Big                 #Yes
          Primary             #Yes
          MenuItemType        #Output
          MenuItemName        #SysUsersOnlineReport
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #mnuItBtnOptions
          ElementPosition     #984263336
          HierarchyParent     #btnGrpView
          Text                #@SYS119149
          ButtonDisplay       #Text & Image above
          NormalImage         #1044
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Big                 #Yes
          Primary             #Yes
          DataSource          #UserInfo
          MenuItemName        #SysUserSetup
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #mnuItBtnProfiles
          AutoDeclaration     #Yes
          ElementPosition     #1811939326
          HierarchyParent     #btnGrpView
          Text                #@SYS343149
          ButtonDisplay       #Text & Image above
          NormalImage         #10959
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Big                 #Yes
          Primary             #Yes
          NeedsRecord         #Yes
          DataSource          #UserInfo
          MenuItemName        #Profiles
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #mnuItBtnRelations
          AutoDeclaration     #Yes
          ElementPosition     #1476395006
          HierarchyParent     #btnGrpView
          Text                #@SYS80613
          ButtonDisplay       #Text & Image above
          NormalImage         #10056
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Big                 #Yes
          Primary             #Yes
          DataSource          #UserInfo
          MenuItemName        #SysCompanyUserInfo
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL MENUITEMBUTTON
        PROPERTIES
          Name                #mnuItmBtnEditInGrid
          AutoDeclaration     #Yes
          ElementPosition     #1849222027
          HierarchyParent     #btnGrpMaintain
          Text                #@SYS319303
          ButtonDisplay       #Text & Image above
          NormalImage         #10011
          ImageLocation       #EmbeddedResource
          ShowShortCut        #No
          Primary             #Yes
          DataSource          #UserInfo
          OpenMode            #Edit
          CopyCallerQuery     #Yes
          FormViewOption      #Grid
          MenuItemName        #SysUserInfoPageEdit
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL STRINGEDIT
        PROPERTIES
          Name                #UserEmail
          AutoDeclaration     #Yes
          Visible             #No
          AllowEdit           #No
          ElementPosition     #2143289342
          HierarchyParent     #Grid
          ExtendedDataType   
            ARRAY
              #Email
              #
            ENDARRAY
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL STRINGEDIT
        PROPERTIES
          Name                #UserInfo_Company
          Width               #56
          HelpText            #@SYS81122
          ElementPosition     #2105540606
          HierarchyParent     #Grid
          Label               #@SYS13342
          DataSource          #UserInfo
          DataField           #company
        ENDPROPERTIES
       
        METHODS
          SOURCE #lookup
            #public void lookup()
            #{
            #    Query                query;
            #    QueryBuildDataSource dataAreaDS;
            #    QueryBuildDataSource filterDS;
            #    QueryBuildRange      range;
            #
            #    SysTableLookup sysTableLookup;
            #    SecurityRights rights;
            #
            #    if (!userInfo.RecId)
            #    {
            #        // User doe not exist yet;
            #        // show all companies.
            #        super();
            #    }
            #    else
            #    {
            #        // Populated UserDataAreaFilter
            #        // with list of selectble companies
            #        rights = SecurityRights::newUser(userInfo.Id);
            #        rights.populateSelectableCompanies();
            #
            #        // Initialize table lookup
            #        // and add fields to be shown in the lookup form.
            #        sysTableLookup = SysTableLookup::newParameters(tableNum(DataArea), this);
            #        sysTableLookup.addLookupfield(fieldNum(DataArea, Id));
            #        sysTableLookup.addLookupfield(fieldNum(DataArea, Name));
            #
            #        // Build the query...
            #        // select Id, Name from DataArea A
            #        // exists join UserDataAreaFilter B
            #        // on A.Id = B.DataArea
            #        // where B.User == <UserId>
            #        query = new Query();
            #        dataAreaDS = query.addDataSource(tableNum(DataArea));
            #        range = dataAreaDS.addRange(fieldNum(DataArea, IsVirtual));
            #        range.status(RangeStatus::Hidden);
            #        range.value(SysQuery::value(false));
            #
            #        filterDS = dataAreaDS.addDataSource(tableNum(UserDataAreaFilter));
            #        filterDS.relations(true);
            #        range = filterDS.addRange(fieldNum(UserDataAreaFilter, User));
            #        range.status(RangeStatus::Hidden);
            #        range.value(SysQuery::value(userInfo.Id));
            #
            #        // Set the query and perform the lookup.
            #        sysTableLookup.parmQuery(query);
            #        sysTableLookup.performFormLookup();
            #
            #        // Don't call super()
            #        // super()
            #    }
            #}
          ENDSOURCE
        ENDMETHODS
      ENDCONTROL
     
      CONTROL STRINGEDIT
        PROPERTIES
          Name                #UserInfo_Id
          AutoDeclaration     #Yes
          Width               #50
          ElementPosition     #2013265918
          HierarchyParent     #Grid
          Label               #@SYS4517
          DataSource          #UserInfo
          DataField           #id
        ENDPROPERTIES
       
        METHODS
        ENDMETHODS
      ENDCONTROL
     
      CONTROL STRINGEDIT
        PROPERTIES
          Name                #UserInfo_Name
          AutoDeclaration     #Yes
          ElementPosition     #2080374782
          HierarchyParent     #Grid
          DataSource          #UserInfo
          DataField           #name
        ENDPROPERTIES
       
        METHODS
          SOURCE #gotFocus
            #public void gotFocus()
            #{
            #    super();
            #    nameText = this.text();
            #}
          ENDSOURCE
          SOURCE #textChange
            #public void textChange()
            #{
            #    str usrId;
            #    usrId = userInfo.Id;
            #    if(!inNameTextChange && usrId == #GuestUser)
            #    {
            #        inNameTextChange = true;
            #        this.text('');
            #        inNameTextChange = false;
            #    }
            #}
          ENDSOURCE
        ENDMETHODS
      ENDCONTROL
     
      CONTROL STRINGEDIT
        PROPERTIES
          Name                #UserInfo_NetworkAlias
          AutoDeclaration     #Yes
          HelpText            #@SYS344941
          ElementPosition     #1431655763
          HierarchyParent     #Grid
          Label               #@SYS344940
          DataSource          #UserInfo
          DataField           #networkAlias
        ENDPROPERTIES
       
        METHODS
          SOURCE #gotFocus
            #public void gotFocus()
            #{
            #    super();
            #    aliasText = this.text();
            #    aliasUserId = userInfo.Id;
            #    enabledOnce = userInfo.EnabledOnce;
            #}
          ENDSOURCE
          SOURCE #modified
            #public boolean modified()
            #{
            #    boolean ret;
            #
            #    Name alias;
            #    str initUserId;
            #
            #    ret = super();
            #
            #    alias = this.text();
            #
            #    // If the user id is not entered and alias is entered, generated a 5 character user id and update the grid
            #    if(alias != '' && userInfo.Id == '')
            #    {
            #        initUserId = element.generateInitialUserId(alias);
            #
            #        if(initUserId != '')
            #        {
            #            userInfo.Id = initUserId;
            #        }
            #    }
            #
            #    return ret;
            #}
            #
          ENDSOURCE
          SOURCE #textChange
            #public void textChange()
            #{
            #    str usrId;
            #    usrId = userInfo.Id;
            #
            #    if(!inAliasTextChange && usrId == aliasUserId)
            #    {
            #        if(((aliasText != '' && usrId != #AdminUser)  && enabledOnce) || (usrId == #GuestUser))
            #        {
            #            inAliasTextChange = true;
            #            this.text(aliasText);
            #            inAliasTextChange = false;
            #        }
            #    }
            #}
            #
          ENDSOURCE
        ENDMETHODS
      ENDCONTROL
     
      CONTROL STRINGEDIT
        PROPERTIES
          Name                #UserInfo_NetworkDomain
          AutoDeclaration     #Yes
          ElementPosition     #1879048190
          HierarchyParent     #Grid
          Label               #@SYS89981
          DataSource          #UserInfo
          DataField           #networkDomain
        ENDPROPERTIES
       
        METHODS
          SOURCE #gotFocus
            #public void gotFocus()
            #{
            #    super();
            #    domainText = this.text();
            #    domainUserId = userInfo.Id;
            #    enabledOnce = userInfo.EnabledOnce;
            #}
          ENDSOURCE
          SOURCE #textChange
            #public void textChange()
            #{
            #    str usrId;
            #    usrId = userInfo.Id;
            #
            #    if(!inDomainTextChange && usrId == domainUserId)
            #    {
            #        if(((domainText != '' && usrId != #AdminUser)  && enabledOnce) || (usrId == #GuestUser))
            #        {
            #            inDomainTextChange = true;
            #            this.text(domainText);
            #            inDomainTextChange = false;
            #        }
            #    }
            #}
          ENDSOURCE
        ENDMETHODS
      ENDCONTROL
     
    ENDCONTAINER
   
  ENDDESIGN
 
  PERMISSIONS #Permissions
    PROPERTIES
    ENDPROPERTIES
   
    PERMISSIONSET #Read
      PROPERTIES
      ENDPROPERTIES
     
      FORM #Controls
      ENDFORM
     
    TABLES #Tables
    ENDTABLES
   
  SERVERMETHODS #Server Methods
  ENDSERVERMETHODS
 
ASSOCIATEDFORMS #Associated Forms
  ASSOCIATEDFORM #SysUserInfoDetail
    PROPERTIES
      Form                #SysUserInfoDetail
      AccessLevel         #Read
      SystemManaged       #No
      ManagedBy           #Manual
    ENDPROPERTIES
   
  ENDASSOCIATEDFORM
 
ENDASSOCIATEDFORMS
ENDPERMISSIONSET
PERMISSIONSET #Update
  PROPERTIES
  ENDPROPERTIES
 
  FORM #Controls
  ENDFORM
 
TABLES #Tables
ENDTABLES
SERVERMETHODS #Server Methods
ENDSERVERMETHODS
ASSOCIATEDFORMS #Associated Forms
  ASSOCIATEDFORM #SysUserInfoDetail
    PROPERTIES
      Form                #SysUserInfoDetail
      AccessLevel         #Update
      SystemManaged       #No
      ManagedBy           #Manual
    ENDPROPERTIES
   
  ENDASSOCIATEDFORM
 
ENDASSOCIATEDFORMS
ENDPERMISSIONSET
PERMISSIONSET #Create
  PROPERTIES
  ENDPROPERTIES
 
  FORM #Controls
  ENDFORM
 
TABLES #Tables
ENDTABLES
SERVERMETHODS #Server Methods
ENDSERVERMETHODS
ASSOCIATEDFORMS #Associated Forms
  ASSOCIATEDFORM #SysUserInfoDetail
    PROPERTIES
      Form                #SysUserInfoDetail
      AccessLevel         #Create
      SystemManaged       #No
      ManagedBy           #Manual
    ENDPROPERTIES
   
  ENDASSOCIATEDFORM
 
ENDASSOCIATEDFORMS
ENDPERMISSIONSET
PERMISSIONSET #Delete
  PROPERTIES
  ENDPROPERTIES
 
  FORM #Controls
  ENDFORM
 
TABLES #Tables
ENDTABLES
SERVERMETHODS #Server Methods
ENDSERVERMETHODS
ASSOCIATEDFORMS #Associated Forms
  ASSOCIATEDFORM #SysUserInfoDetail
    PROPERTIES
      Form                #SysUserInfoDetail
      AccessLevel         #Delete
      SystemManaged       #No
      ManagedBy           #Manual
    ENDPROPERTIES
   
  ENDASSOCIATEDFORM
 
ENDASSOCIATEDFORMS
ENDPERMISSIONSET
ENDPERMISSIONS
ENDFORM

***Element: FTM
; Microsoft Dynamics AX MENUITEM : ABH_UserattachedwithRole unloaded
; --------------------------------------------------------------------------------
  VERSION 1
 
  MENUITEM #ABH_UserattachedwithRole
    Type: 3
    PROPERTIES
      Name                #ABH_UserattachedwithRole
      Label               #Users attached with role
      ObjectType          #Class
      Object              #ABH_UserattachedwithRole
      Origin              #{F448E8E4-D3A1-425F-9142-6ADD1D1596E7}
    ENDPROPERTIES
   
  ENDMENUITEM
 
***Element: CLS
; Microsoft Dynamics AX Class: ABH_UserattachedwithRole unloaded
; --------------------------------------------------------------------------------
  CLSVERSION 1
 
  CLASS #ABH_UserattachedwithRole
    PROPERTIES
      Name                #ABH_UserattachedwithRole
      Extends             #RunBase
      Origin              #{65BBF18F-70FD-4A7F-998F-F82399D8BEF4}
    ENDPROPERTIES
   
    METHODS
      SOURCE #organizationId
        #//BP Deviation documented
        #public OMOperatingUnitNumber organizationId(OMUserRoleOrganization _org)
        #{
        #    CompanyInfo company;
        #    OMOperatingUnit operatingUnit;
        #
        #    select firstonly RecId, DataArea from company where company.RecId == _org.omInternalOrganization;
        #    if (company)
        #        return company.DataArea;
        #
        #    select firstonly RecId, omOperatingUnitNumber from operatingUnit where operatingUnit.RecId == _org.omInternalOrganization;
        #    if (operatingUnit)
        #        return operatingUnit.omOperatingUnitNumber;
        #
        #    return '';
        #}
      ENDSOURCE
      SOURCE #classDeclaration
        #class ABH_UserattachedwithRole extends runbase
        #{
        #    SecurityRoleAotName     securityRoleAotName;
        #
        #    DialogRunbase           dialog;
        #    DialogField             dialogsecurityRoleAotName;
        #
        #    UserId                  userId;
        #
        #    //container               grouplist;
        #    Map                     groupUserMapValue;
        #    MapIterator             groupMapIterator;
        #
        #    SysExcelApplication excel;
        #    SysExcelWorkbooks   workbooks;
        #    SysExcelWorkbook    workbook;
        #    SysExcelWorksheets  worksheets;
        #    SysExcelWorksheet   worksheet;
        #    SysExcelCells       cells;
        #    SysExcelCell        cell;
        #    int                 row;
        #}
      ENDSOURCE
      SOURCE #dialog
        #protected Object dialog()
        #{
        #    dialog = super();
        #
        #    dialogsecurityRoleAotName = dialog.addField(identifierStr(SecurityRoleAotName));
        #
        #    return dialog;
        #}
      ENDSOURCE
      SOURCE #getFromDialog
        #public boolean getFromDialog()
        #{
        #    securityRoleAotName = dialogsecurityRoleAotName.value();
        #
        #    return true;
        #}
      ENDSOURCE
      SOURCE #insertheader
        #private void insertheader()
        #{
        #    excel       = SysExcelApplication::construct();
        #    workbooks   = excel.workbooks();
        #    workbook    = workbooks.add();
        #    worksheets  = workbook.worksheets();
        #    worksheet   = worksheets.itemFromNum(1);
        #
        #    cells = worksheet.cells();
        #    cells.range('A:A').numberFormat('@');
        #
        #    cell = cells.item(row+1, 1);
        #    cell.value('User id');
        #
        #    cell = cells.item(row+1, 2);
        #    cell.value('Alias');
        #
        #    cell = cells.item(row+1, 3);
        #    cell.value('User group');
        #
        #    cell = cells.item(row+1, 4);
        #    cell.value('Role assigned - Aot Name');
        #
        #    cell = cells.item(row+1, 5);
        #    cell.value('Role assigned - Name');
        #
        #    cell = cells.item(row+1, 6);
        #    cell.value('Role assigned - Description');
        #
        #    cell = cells.item(row+1, 7);
        #    cell.value('Company assigned to');
        #}
      ENDSOURCE
      SOURCE #pack
        #public container pack()
        #{
        #    return conNull();
        #}
      ENDSOURCE
      SOURCE #parmUserId
        #Public UserId parmUserId(UserId _userId = userId)
        #{
        #    userId = _userId;
        #
        #    return UserId;
        #}
      ENDSOURCE
      SOURCE #readmemberoffromUser
        #void readmemberoffromUser()
        #{
        #    InteropPermission                                   interopPermission;
        #    System.DirectoryServices.DirectorySearcher          directorySearcher, ds;
        #    System.DirectoryServices.DirectoryEntry             entry, obUser;
        #    System.DirectoryServices.SearchResultCollection     searchResultCollection, resCol;
        #    System.DirectoryServices.SearchScope                searchScope;
        #    System.DirectoryServices.SearchResult               searchResult, sr;
        #    System.DirectoryServices.PropertyCollection         propertyCollection, pc;
        #    System.DirectoryServices.PropertyValueCollection    propertyValueCollection, pvc;
        #    str                                                 company, st, mysamaccountname, userIdCon;
        #    str                                                 searchCriteria;
        #    int                                                 searchCount, i, length;
        #
        #    UserInfo userInfo;
        #    Counter counter, j;
        #
        #    boolean check = false;
        #    ;
        #
        #    groupUserMapValue   = new Map(Types::String, Types::String);
        #
        #    interopPermission = new InteropPermission(InteropKind::ClrInterop);
        #    interopPermission.assert();
        #
        #    while select * from userInfo
        #        where UserInfo.id   == userId
        #        && userInfo.accountType == UserAccountType::ADUser
        #    {
        #        try
        #        {
        #            searchScope = System.DirectoryServices.SearchScope::Subtree;
        #
        #            entry = new System.DirectoryServices.DirectoryEntry("LDAP://" + "AX2012R2A"); // Change to yours
        #
        #            directorySearcher = new System.DirectoryServices.DirectorySearcher(entry);
        #            directorySearcher.set_PageSize(65535);
        #            directorySearcher.set_CacheResults(false);
        #            directorySearcher.set_SearchScope(searchScope);
        #
        #            //usergroup
        #            searchCriteria = strFmt("(samaccountname=%1)", userInfo.networkAlias);
        #
        #            directorySearcher.set_Filter(strFmt('(&(objectClass=user)(objectCategory=person)%1(userAccountControl:1.2.840.113556.1.4.803:=512))', searchCriteria));
        #
        #            searchResultCollection = directorySearcher.FindAll();
        #            searchCount = searchResultCollection.get_Count(); // In case more than 1 result is returned.
        #
        #            for (i = 0; i < searchCount; i++)
        #            {
        #                searchResult = searchResultCollection.get_Item(i);
        #                entry = searchResult.GetDirectoryEntry();
        #
        #                if (entry)
        #                {
        #                    propertyCollection = entry.get_Properties();
        #                }
        #
        #                if (!propertyCollection)
        #                {
        #                    entry.Dispose();
        #                    continue;
        #                }
        #
        #                // User properties list
        #                try
        #                {
        #                    // Company
        #                    propertyValueCollection = propertyCollection.get_Item('MemberOf');
        #
        #                    if (PropertyValueCollection)
        #                    {
        #                        if (propertyValueCollection.get_Count())
        #                        {
        #                            counter = propertyValueCollection.get_Count();
        #
        #                            for (j = 0; j < counter ; j++)
        #                            {
        #                                st = PropertyValueCollection.get_Item(j);
        #
        #                                obUser = new System.DirectoryServices.DirectoryEntry("LDAP://" + st);
        #                                ds = new System.DirectoryServices.DirectorySearcher(obUser);
        #                                resCol = ds.FindAll();
        #
        #                                sr = resCol.get_Item(0);
        #                                obUser = sr.GetDirectoryEntry();
        #                                if (obUser)
        #                                {
        #                                    pc = obUser.get_Properties();
        #                                    if (pc)
        #                                    {
        #                                        pvc = pc.get_Item('name');
        #                                        if(pvc)
        #                                        {
        #                                            mysamaccountname= pvc.get_Value();
        #
        #                                            userIdCon = userInfo.id + int2str(j);
        #
        #                                            groupUserMapValue.insert(userIdCon, mysamaccountname);
        #                                        }
        #                                    }
        #                                }
        #                            }
        #                        }
        #                    }
        #                }
        #            catch (Exception::CLRError)
        #            {
        #                SRSProxy::handleClrException(Exception::Warning);
        #                warning(strFmt("@SYS117734"));
        #            }
        #            entry.Dispose();
        #        }
        #        searchResultCollection.Dispose();
        #        check = true;
        #    }
        #    catch (Exception::CLRError)
        #    {
        #        SRSProxy::handleClrException(Exception::Warning);
        #        error("@SYS117735");
        #    }
        #
        #    CodeAccessPermission::revertAssert();
        #    }
        #    if(check == false)
        #    {
        #        throw error('Roles can be found for user only.');
        #    }
        #}
      ENDSOURCE
      SOURCE #rolesattacedonuserInfo
        #private void rolesattacedonuserInfo(UserId  _userGroupId)
        #{
        #    UserInfo                userInfoGroup, userInfo;
        #    SecurityRole            securityRole;
        #    SecurityUserRole        securityUserRole;
        #    OMUserRoleOrganization  userRoleOrganization;
        #
        #    str userIdLoc = userId;
        #    str orgId;
        #    str userGroup = _userGroupId;
        #
        #    boolean checked = false;
        #
        #    select firstOnly ID from userInfoGroup
        #        where userInfoGroup.networkAlias == _userGroupId;
        #
        #    select firstonly ID from userInfo
        #        where userInfo.id == userId;
        #
        #    while select User, SecurityRole from securityUserRole
        #        where securityUserRole.User == userInfoGroup.id
        #    {
        #        select firstOnly Name, AotName, Description, RecId from securityRole
        #            where securityRole.RecId == securityUserRole.SecurityRole;
        #
        #        if(row == 0)
        #        {
        #            this.insertheader();
        #        }
        #
        #        checked = false;
        #        while select userRoleOrganization
        #            where userRoleOrganization.SecurityRole == securityUserRole.SecurityRole
        #                && userRoleOrganization.User        == _userGroupId
        #        {
        #            row++;
        #            cell = cells.item(row+1, 1);
        #            cell.value(userIdLoc);
        #
        #            cell = cells.item(row+1, 2);
        #            cell.value(userInfo.networkAlias);
        #
        #            cell = cells.item(row+1, 3);
        #            cell.value(userGroup);
        #
        #            cell = cells.item(row+1, 4);
        #            cell.value(securityRole.AotName);
        #
        #            cell = cells.item(row+1, 5);
        #            cell.value(securityRole.Name);
        #
        #            cell = cells.item(row+1, 6);
        #            cell.value(securityRole.Description);
        #
        #            orgId = this.organizationId(userRoleOrganization);
        #
        #            cell = cells.item(row+1, 7);
        #            cell.value(orgId);
        #
        #            checked = true;
        #        }
        #
        #        if(checked == false)
        #        {
        #            row++;
        #            cell = cells.item(row+1, 1);
        #            cell.value(userIdLoc);
        #
        #            cell = cells.item(row+1, 2);
        #            cell.value(userInfo.networkAlias);
        #
        #            cell = cells.item(row+1, 3);
        #            cell.value(userGroup);
        #
        #            cell = cells.item(row+1, 4);
        #            cell.value(securityRole.AotName);
        #
        #            cell = cells.item(row+1, 5);
        #            cell.value(securityRole.Name);
        #
        #            cell = cells.item(row+1, 6);
        #            cell.value(securityRole.Description);
        #
        #            orgId = 'Access to all company';
        #
        #            cell = cells.item(row+1, 7);
        #            cell.value(orgId);
        #        }
        #    }
        #}
      ENDSOURCE
      SOURCE #run
        #public void run()
        #{
        #    this.readmemberoffromUser();
        #    this.validateValuefromAD();
        #}
      ENDSOURCE
      SOURCE #unpack
        #public boolean unpack(container packedClass)
        #{
        #    return true;
        #}
      ENDSOURCE
      SOURCE #validateValuefromAD
        #private void validateValuefromAD()
        #{
        #    NetworkAlias    userGroupId;
        #
        #    groupMapIterator = new MapIterator(groupUserMapValue);
        #    //this.insertheader();
        #    while(groupMapIterator.more())
        #    {
        #        userGroupId = groupMapIterator.value();
        #
        #        this.rolesattacedonuserInfo(userGroupId);
        #
        #        groupMapIterator.next();
        #    }
        #    excel.visible(true);
        #    info('Done');
        #}
      ENDSOURCE
      SOURCE #main
        #Public static void main(Args _args)
        #{
        #    UserInfo                    userInfo;
        #    ABH_UserattachedwithRole    userattachedwithRole = new ABH_UserattachedwithRole();
        #
        #    userInfo = _args.record();
        #
        #    userattachedwithRole.parmUserId(userInfo.id);
        #
        #    userattachedwithRole.run();
        #}
      ENDSOURCE
    ENDMETHODS
  ENDCLASS
***Element: PRN
; Microsoft Dynamics AX Project : ABH_UserattachedwithRole unloaded
; --------------------------------------------------------------------------------
  PROJECTVERSION 2
 
  PROJECT #ABH_UserattachedwithRole
  SHARED
  PROPERTIES
    Name                #ABH_UserattachedwithRole
    Origin              #{0E3A0C1C-31EC-4A1E-8940-0CAD6B948F28}
  ENDPROPERTIES
 
    PROJECTCLASS ProjectNode
    BEGINNODE
      FILETYPE 0
      UTILTYPE 11
      UTILOBJECTID 0
      NODETYPE 201
      NAME #SysUserInfoPage
    ENDNODE
    BEGINNODE
      FILETYPE 0
      UTILTYPE 3
      UTILOBJECTID 0
      NODETYPE 296
      NAME #ABH_UserattachedwithRole
    ENDNODE
    BEGINNODE
      FILETYPE 0
      UTILTYPE 45
      UTILOBJECTID 1036542
      NODETYPE 329
      NAME #ABH_UserattachedwithRole
    ENDNODE
  ENDPROJECT
 
***Element: END

No comments:

Post a Comment