Friday, 17 November 2017

vlocity - Launch omniscript from visualforce page

vf page:
=====

<apex:page standardStylesheets="false" showHeader="false" sidebar="false" docType="html-5.0" standardController="vlocity_ins__Household__c"
           extensions="Vlocity_RelationshipGroup" action="{!returnScriptPage}">
    <apex:pageMessages />
</apex:page>
           

controller
=======

public without sharing class Vlocity_RelationshipGroup {
   
    @TestVisible private final string recId{get;set;} 
    public String accessLevel;
   
    public Vlocity_RelationshipGroup(ApexPages.StandardController stdController) {
        //get current record Id       
        recId = stdController.getId();
    }
    public Set<id> retrieveAllAgentIds(String profileName){
        Set<Id> agentId = new Set<id>();
        List<CASE_GroupMembership__c> groupList = [SELECT SFDC_GroupID__c FROM CASE_GroupMembership__c WHERE CASE_Group_Member__c =: UserInfo.getUserId()];
        Set<String> groupMembSet = new Set<String>();
        for(CASE_GroupMembership__c csGrupMem : groupList){
            groupMembSet.add(csGrupMem.SFDC_GroupID__c);
        }
       
        if(!groupList.isEmpty()){ 
            List<CASE_GroupMembership__c> groupOwner = [SELECT SFDC_GroupID__c, CASE_Group_Member__c, CASE_IsGroupOwner__c FROM CASE_GroupMembership__c WHERE SFDC_GroupID__c IN :groupMembSet AND CASE_IsGroupOwner__c = true];
            for(CASE_GroupMembership__c csGrupRec : groupOwner){
                agentId.add(csGrupRec.CASE_Group_Member__c);
            }
        }
        system.debug('agentId'+agentId);
        return agentId;
    }
   
    public pagereference returnScriptPage() {
        PageReference pageRef;
        String profileName = [Select Id,Name from Profile where Id=:userinfo.getProfileId()].Name;
       
        if(profileName == 'Agent' || profileName == 'District Agent'){
            List<CASE_Household_Sharing__c> hhShare = [SELECT CASE_Access_Level__c,CASE_Record_ID__c,CASE_User_ID__c,Id FROM CASE_Household_Sharing__c WHERE CASE_Record_ID__c =: recId AND CASE_User_ID__c =: Userinfo.getUserId()];
            if(!hhShare.isEmpty()){
                accessLevel = hhShare[0].CASE_Access_Level__c;
            }
        }
        else if(profileName == 'Agent Staff' || profileName == 'District Agent Staff'){
            Set<id> agentIdSet = retrieveAllAgentIds(profileName);
            List<CASE_Household_Sharing__c> hhShare = [SELECT CASE_Access_Level__c,CASE_Record_ID__c,CASE_User_ID__c,Id FROM CASE_Household_Sharing__c WHERE CASE_Record_ID__c =: recId AND CASE_User_ID__c IN :agentIdSet];
            for(CASE_Household_Sharing__c hhShareRecord: hhShare){
                if(accessLevel == null || accessLevel == 'Read Only'){
                    accessLevel = hhShareRecord.CASE_Access_Level__c;
                }
            }           
        }
        if(accessLevel == 'Read/Write'){
            pageRef = new PageReference('/apex/vlocity_ins__OmniScriptUniversalPage?id='+recId+'&OmniScriptType=OmniScripts&OmniScriptSubType=Edit%20RelationshipGroup&OmniScriptLang=English&PrefillDataRaptorBundle=&scriptMode=vertical&layout=lightning&ContextId='+recId+'#/');
            pageRef.setRedirect(true);
            return pageRef;
        }
        else{
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Insufficient Privileges to Edit this Group'));
            return null;
        }
    }
    public pagereference returnScriptPage1() {
       
        PageReference pageRef = new PageReference('/apex/vlocity_ins__OmniScriptUniversalPage?id='+recId+'&OmniScriptType=OmniScripts&OmniScriptSubType=Create%20RelationshipGroup&OmniScriptLang=English&PrefillDataRaptorBundle=&scriptMode=vertical&layout=lightning&ContextId='+recId+'#/');
        pageRef.setRedirect(true);
       
        return pageRef;
    }
   
}

No comments:

Post a Comment