UNPKG

@causalfoundry/js-sdk

Version:

Causal Foundry WEB SDK (JS/TS)

201 lines (194 loc) 5.56 kB
import CfExceptionHandler from "../../../core/CfExceptionHandler"; import { hasRepeatedIds } from "../../../utils"; import { LevelProperties, LoyaltyTypes, MilestoneProperties, PromoProperties, RedeemType, RewardAction, RewardCatalog, RewardProperties, SurveyCatalog, SurveyProperties, } from "../typings"; export const validatePromoEvent = (properties: PromoProperties): boolean => { if (properties.promo_id == "") { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Promo, "empty promo id" ); return false; } else if (properties.title == "") { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Promo, "empty promo title" ); return false; } else if (properties.action == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Promo, "invalid promo action" ); return false; } else if (properties.items_list.length == 0) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Promo, "empty promo items list" ); return false; } else if (hasRepeatedIds(properties.items_list)) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Promo, "promo items list repeated ids" ); return false; } return true; }; export const validateLevelEvent = (properties: LevelProperties): boolean => { if (properties.module_id == "") { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Level, "empty level module id" ); return false; } else if (properties.prev_level < 0) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Level, "negative level previous_level" ); return false; } else if (properties.new_level < 0) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Level, "negative level new_level" ); return false; } return true; }; export const validateMilestoneEvent = ( properties: MilestoneProperties ): boolean => { if (properties.milestone_id == "") { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Milestone, "empty milestone id" ); return false; } else if (properties.action == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Milestone, "invalid milestone action" ); return false; } return true; }; export const validateSurveyEvent = (properties: SurveyProperties): boolean => { if (properties.action == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Survey, "invalid survey action" ); return false; } else if (properties.type == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Survey, "invalid survey type" ); return false; } else if (properties.is_completed == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Survey, "invalid survey is_completed" ); return false; } else if (properties.response_list.length == 0) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Survey, "empty survey response list" ); return false; } return true; }; export const validateRewardEvent = (properties: RewardProperties): boolean => { if (properties.reward_id == "") { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "empty reward id" ); return false; } else if (properties.action == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "invalid reward action" ); return false; } else if ( properties.action == RewardAction.Add && properties.acc_points == undefined ) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "reward acc_points are required for add action" ); return false; } else if (properties.total_points == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "invalid reward total points" ); return false; } else if ( properties.action == RewardAction.Redeem && properties.acc_points == undefined ) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "reward redeem object required for redeem action" ); return false; } else if ( properties.action == RewardAction.Redeem && properties.redeem_type != undefined ) { if (properties.redeem_type == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "invalid reward redeem type" ); return false; } else if (properties.redeem_is_successful == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "invalid reward redeem is successful" ); return false; } else if (properties.redeem_points_withdrawn == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "invalid reward redeem points withdrawn" ); return false; } else if (properties.redeem_converted_value == undefined) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "invalid reward redeem converted value" ); return false; } else if ( properties.redeem_type == RedeemType.Cash && properties.redeem_currency == undefined ) { new CfExceptionHandler().throwAndLogError( LoyaltyTypes.Reward, "invalid reward currency" ); return false; } } return true; };