${function(){
let content = 'Register as a member and enjoy the benefits immediately.';
const { benefits = [] } = data.memberDetail?.current_tier || {};
let pointBenefits = benefits.filter((benefit) => {
return benefit.trigger_type === 'upgrade' && benefit.benefit_type === 'point';
});
let discountCodeBenefits = benefits.filter((benefit) => {
return benefit.trigger_type === 'upgrade' && benefit.benefit_type === 'discount_code';
});
let discountCodeName = '';
let discountCodeType = '';
if(discountCodeBenefits.length > 0) {
let benefit = discountCodeBenefits[0];
const percentageBenefits = discountCodeBenefits.filter((benefit) => {
return benefit.reward?.discount_code_activity.discount_type === 'percentage';
});
const fixedAmountBenefits = discountCodeBenefits.filter((benefit) => {
return benefit.reward?.discount_code_activity.discount_type === 'fixed_amount';
});
const buyXGetYBenefits = discountCodeBenefits.filter((benefit) => {
return benefit.reward?.discount_code_activity.discount_type === 'buy_x_get_y';
});
const freeShippingBenefits = discountCodeBenefits.filter((benefit) => {
return benefit.reward?.discount_code_activity.discount_type === 'free_shipping';
});
if (percentageBenefits.length > 0) {
benefit = percentageBenefits.reduce((accumulator, current) => {
return +accumulator.reward?.discount_code_activity.discount_value > +current.reward?.discount_code_activity.discount_value ? accumulator : current;
}, percentageBenefits[0]);
discountCodeType = 'percentage';
discountCodeName = `${benefit.reward?.discount_code_activity.discount_value}% OFF`;
} else if (fixedAmountBenefits.length > 0) {
benefit = fixedAmountBenefits.reduce((accumulator, current) => {
return +accumulator.reward?.discount_code_activity.discount_value > +current.reward?.discount_code_activity.discount_value ? accumulator : current;
}, fixedAmountBenefits[0]);
discountCodeType = 'fixed_amount';
discountCodeName = `
`;
} else if (buyXGetYBenefits.length > 0) {
let buyXGetYFreeBenefits = buyXGetYBenefits.filter(benefit => benefit.reward?.discount_code_activity.obtain_product.obtain_type === 'free');
let buyXGetYPercentageBenefits = buyXGetYBenefits.filter(benefit => benefit.reward?.discount_code_activity.obtain_product.obtain_type === 'percentage');
let buyXGetYFixedAmountBenefits = buyXGetYBenefits.filter(benefit => benefit.reward?.discount_code_activity.obtain_product.obtain_type === 'fixed_amount');
if(buyXGetYFreeBenefits.length > 0) {
benefit = buyXGetYFreeBenefits[0];
if(benefit.reward?.discount_code_activity.prerequisite_type === 'subtotal') {
discountCodeName = `Buy
Get ${benefit.reward?.discount_code_activity.obtain_product.product_count} Free`;
}else if (benefit.reward?.discount_code_activity.prerequisite_type === 'quantity') {
discountCodeName = `Buy ${benefit.reward?.discount_code_activity.prerequisite_value} Get ${benefit.reward?.discount_code_activity.obtain_product.product_count} Free`;
}
} else if (buyXGetYPercentageBenefits.length > 0) {
benefit = buyXGetYPercentageBenefits.reduce((accumulator, current) => {
return +accumulator.reward?.discount_code_activity.obtain_product.obtain_value > +current.reward?.discount_code_activity.obtain_product.obtain_value ? accumulator : current;
}, buyXGetYPercentageBenefits[0]);
discountCodeName = `${benefit.reward?.discount_code_activity.obtain_product.obtain_value}% OFF`;
}else if (buyXGetYFixedAmountBenefits.length > 0) {
benefit = buyXGetYFixedAmountBenefits.reduce((accumulator, current) => {
return +accumulator.reward?.discount_code_activity.obtain_product.obtain_value > +current.reward?.discount_code_activity.obtain_product.obtain_value ? accumulator : current;
}, buyXGetYFixedAmountBenefits[0]);
discountCodeName = `
`;
}
discountCodeType = 'buy_x_get_y';
} else if(freeShippingBenefits.length > 0) {
discountCodeName = ``;
discountCodeType = 'free_shipping';
}
}
if (pointBenefits.length === 0 && discountCodeBenefits.length > 0) {
if(discountCodeType !== 'free_shipping') {
content = `Register to become a member and immediately receive ${discountCodeName}.`;
}else{
content = `Register to become a member and enjoy free shipping on orders`;
}
}
let benefitPointSum = 0;
if(pointBenefits.length > 0) {
benefitPointSum = pointBenefits.reduce((accumulator, benefit) => {
return Number(accumulator) + Number(benefit.reward.point_value);
}, 0);
}
if (pointBenefits.length > 0 && discountCodeBenefits.length === 0) {
content = `Register to become a member and immediately receive
`;
}
if (pointBenefits.length > 0 && discountCodeBenefits.length > 0) {
if(discountCodeType !== 'free_shipping') {
content = `Register to become a member and immediately receive ${discountCodeName} and
.`;
} else {
content = `Register to become a member and immediately receive free shipping on orders and
.`;
}
}
if (pointBenefits.length === 0 && discountCodeBenefits.length === 0) {
const { campaigns } = data.pointPlans || {};
const pointSum = campaigns?.filter(({campaign}) => {
return campaign.event_type === 'become_member';
}).reduce((accumulator, {campaign}) => {
return accumulator + campaign.campaign_rule.reward_points;
}, 0);
if (pointSum > 0) {
content = `Register to become a member and immediately receive
`;
}
}
return `
${content}
`;
}()}
Join now
${function(){
const { campaign } = data.pointsDeduction || {};
if(!campaign?.campaign_id) {
return '';
}
let content = '';
if(campaign?.max_deduction && campaign?.deduction_rate?.points) {
const points = Math.ceil(Number(campaign.max_deduction) * Number(campaign.deduction_rate.points));
content = `New members can use up to
to deduct
on each order`;
}else {
const { benefits = [] } = data.memberDetail?.current_tier || {};
let pointBenefits = benefits.filter((benefit) => {
return benefit.trigger_type === 'upgrade' && benefit.benefit_type === 'point';
});
let benefitPointsValue = 0;
if(pointBenefits.length > 0) {
benefitPointsValue = pointBenefits.reduce((accumulator, benefit) => {
return Number(accumulator) + Number(benefit.reward.point_value);
}, 0);
}
const { campaigns } = data.pointPlans || {};
const campaignPointsValue = campaigns?.filter(({campaign}) => {
return campaign.event_type === 'become_member';
}).reduce((accumulator, {campaign}) => {
return accumulator + campaign.campaign_rule.reward_points;
}, 0);
let currentPoints = benefitPointsValue || campaignPointsValue;
if(currentPoints > 0) {
let amount = currentPoints / Number(campaign.deduction_rate.points);
content = `New members can use points to deduct up to
on their first order`;
}else {
content = `
can be offset against
`;
}
}
return `
${content}
`;
}()}