UNPKG

@wenn/onb

Version:

onb-core

124 lines (120 loc) 3.49 kB
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; };