IUserFilterProvider2の実装例

IUserFilterProvider2インターフェースを実装したApexクラスの例を説明します。UserFilterProviderインターフェースとはパラメータを指定できる点が異なります。

取引先責任者の選択レコードによって所属する取引先のすべての商談を表示するユースケースの場合、Apexクラスにパラメータとしてわたってきた「取引先責任者」のIDから所属する「取引先」のIDを取得しgcss.UserFilterに設定するApexクラスを作成することができます。

global class ContactOpportunityRelatedAccount implements IUserFilterProvider2 {
     
    global UserFilter getUserFilter(string objectName, Map<String,Object> context){
        if (objectName != 'Opportunity'){
            return null;
        }
        //In this sample's case if context is empty we set behavior same as not filter.
        if(context.isEmpty()){
            return null;
        }
        //Get your customer parameters from context.
        String contactID = context.get('ContactID').toString();
        List<Contact> contactList = [SELECT Id, AccountId FROM Contact WHERE Id = :contactID Limit 1];
        Contact contact = contactList.get(0);
        UserFilter result = new UserFilter();
        //Use your customer parametes in our UserFilter.
    //Block opportunity records which without related to any Account.
        if(String.isEmpty(contact.AccountId)){
            result.whereClause = 'Id = :userArg1';
        }else{
            result.whereClause = 'AccountId = :userArg1';
        }
        result.userArg1 = contact.AccountId; 
        return result;
    }
}

Visualforceページの実装方法も含めたより詳細な具体例は取引先責任者が所属する取引先の商談を表示するを参照してください。

Copyright © 2019 GrapeCity inc. All rights reserved.