@causalfoundry/js-sdk
Version:
Causal Foundry WEB SDK (JS/TS)
201 lines (194 loc) • 5.56 kB
text/typescript
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;
};