[友達を紹介] ウィジェットテンプレートの Apex クラス
デフォルトでは使用できないウィジェット、コンポーネント、データに追加して、[友達を紹介] ウィジェットテンプレートをカスタマイズします。たとえば、メンバーの 5 件の最近の紹介が表示される状態を追加します。
必要なエディション
| 使用可能なインターフェース: ロイヤルティ管理を備える Enterprise Edition、Performance Edition、Unlimited Edition および Developer Edition の Lightning Experience |
global class WidgetReferMember implements System.Callable {
global Object call(String action, Map<String, Object> arguments) {
Map<String, Object> input = (Map<String, Object>)arguments.get('input');
Map<String, Object> output = (Map<String, Object>)arguments.get('output');
Map<String, Object> options = (Map<String, Object>)arguments.get('options');
if (action == 'getMemberReferralCode') {
return getMemberReferralCode(input, output, options);
}
return null;
}
class MemberReferralCode {
String referralCode;
Boolean success;
String programName;
boolean isVisible;
String url;
String urlTruncated;
}
private Map<String, Object> getMemberReferralCode(Map<String, Object> input, Map<String, Object> output, Map<String, Object> options) {
Long startTimeInMillis = System.currentTimeMillis();
String visibilityType = (String)input.get('visibilityType');
String visibilityMap = (String)input.get('visibilityMap');
List<LoyaltyProgramMember> programMembers = [SELECT ReferralCode, Program.Name From LoyaltyProgramMember WHERE MembershipNumber =: (String)input.get('membershipNumber') AND Program.Name =: (String)input.get('programName')];
MemberReferralCode referralCodeDetails = new MemberReferralCode();
if(visibilityType != null && visibilityMap != null && visibilityType != '{Session.VisibilityType}' && visibilityMap != '{Session.VisibilityMap}' && !String.isEmpty(visibilityType) && !String.isEmpty(visibilityMap)) {
String programName = (String)input.get('programName');
String membershipNumber = (String)input.get('membershipNumber');
String decodedMap = EncodingUtil.base64Decode(visibilityMap).toString();
Map<String, Object> attributes = (Map<String, Object>) JSON.deserializeUntyped(decodedMap);
attributes.put('programName', programName);
attributes.put('membershipNumber', membershipNumber);
}
else
referralCodeDetails.isVisible = true;
if (!programMembers.isEmpty()) {
LoyaltyProgramMember member = programMembers.get(0);
referralCodeDetails.success = true;
referralCodeDetails.referralCode = member.ReferralCode;
referralCodeDetails.programName = (String)input.get('programName');
String url = (String)input.get('url');
if (url != null && !String.isEmpty(url) && url != '{Session.Url}') {
String urlTruncated = url;
referralCodeDetails.url = url;
Integer maxSize = 25;
if(url.length() > maxSize ){
urlTruncated = url.substring(0, maxSize) + '...';
}
referralCodeDetails.urlTruncated = urlTruncated;
}
} else {
referralCodeDetails.success = false;
}
output.put('referralCodeDetails', referralCodeDetails);
String iconOneLink = (String)input.get('iconOneLink');
if(iconOneLink != null && iconOneLink != '{iconOneLink}' && iconOneLink != '{Session.iconOneLink}' && !String.isEmpty(iconOneLink)) {
output.put('iconOneLink', iconOneLink);
}
String iconTwoLink = (String)input.get('iconTwoLink');
if(iconTwoLink != null && iconTwoLink != '{iconTwoLink}' && iconTwoLink != '{Session.iconTwoLink}' && !String.isEmpty(iconTwoLink)) {
output.put('iconTwoLink', iconTwoLink);
}
String iconThreeLink = (String)input.get('iconThreeLink');
if(iconThreeLink != null && iconThreeLink != '{iconThreeLink}' && iconThreeLink != '{Session.iconThreeLink}' && !String.isEmpty(iconThreeLink)) {
output.put('iconThreeLink', iconThreeLink);
}
String iconFourLink = (String)input.get('iconFourLink');
if(iconFourLink != null && iconFourLink != '{iconFourLink}' && iconFourLink != '{Session.iconFourLink}' && !String.isEmpty(iconFourLink)) {
output.put('iconFourLink', iconFourLink);
}
String iconFiveLink = (String)input.get('iconFiveLink');
if(iconFiveLink != null && iconFiveLink != '{iconFiveLink}' && iconFiveLink != '{Session.iconFiveLink}' && !String.isEmpty(iconFiveLink)) {
output.put('iconFiveLink', iconFiveLink);
}
return output;
}
}関連項目:
この記事で問題は解決されましたか?
ご意見をお待ちしております。
