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;
}
}