@wenn/onb
Version:
onb-core
124 lines (120 loc) • 3.49 kB
JavaScript
import { commonSend, commonEnd } from './common';
export const getPageSchema = (page, fields) => {
let baseSendSchema = {
type: 'object',
required: ['data'],
properties: {
data: {
type: 'object',
required: ['variables'],
properties: {
variables: {
properties: {},
type: 'object',
required: []
}
}
}
}
};
return addSendCommons(baseSendSchema, page, fields);
};
export const getCodeSchema = (code, fields) => {
let baseEndSchema = {
required: [],
properties: {}
};
return addEndCommons(baseEndSchema, code, fields);
};
// should check template variables length against bservices length? so you know if there's any new data sent(or received)
const addSendCommons = (sendSchema, page, fields) => {
if (page && fields && fields[page]) {
let fieldsArr = fields[page];
fieldsArr.map(key => {
if (key !== 'department' && key !== 'floor' && key !== 'alternativePhone') {
sendSchema.properties.data.properties.variables.required.push(key);
}
let template = '';
switch (key) {
case 'email':
template = key;
break;
case 'sms_not_received':
template = 'empty';
break;
default:
template = 'default';
}
//let template = key === 'email' ? key : 'default'; // Uses default except for email
sendSchema.properties.data.properties.variables.properties[key] = commonSend[template];
});
}
return sendSchema;
};
const addEndCommons = (endSchema, code, fields) => {
if (code && fields && fields[code]) {
let fieldsArr = fields[code];
switch (code) {
case 'offer_validate':
endSchema.type = 'boolean';
break;
case 'requestedamount':
endSchema.type = 'string';
break;
case 'identity_validation':
endSchema.type = 'array';
endSchema.items = {
type: 'object',
required: [],
properties: {}
};
fieldsArr.map(key => {
endSchema.items.required.push(key);
endSchema.items.properties[key] = commonEnd[key];
});
break;
case 'offer_retrieval':
endSchema.type = 'array';
endSchema.items = {
type: 'object',
required: [],
properties: {}
};
fieldsArr.map(key => {
endSchema.items.required.push(key);
endSchema.items.properties[key] = commonEnd[key];
});
break;
case 'dataLanding':
case 'dataStepTwo':
case 'validation_questions_retrieval':
case 'questions':
case 'dataPersonalInfo':
endSchema.type = 'object';
fieldsArr.map(key => {
endSchema.required.push(key);
endSchema.properties[key] = commonEnd[code][key];
});
break;
case 'taskid':
case 'sms_send':
case 'basic_data_retrieval_salesforce':
case 'dataAfip':
case 'dataProducts':
case 'dataStepOne':
case 'scoring':
case 'validate_cbu':
case 'validation_questions_process':
endSchema.type = 'object';
fieldsArr.map(key => {
endSchema.required.push(key);
endSchema.properties[key] = commonEnd[key];
});
break;
default:
sendlog('error', { error_type: 'unknownBpmCode', code });
break;
}
}
return endSchema;
};