Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const { workflowMax, knack, appenate } = require("./api/Api Service")
- const moment = require('moment-timezone');
- async function createKnackRecords() {
- //Staff Records
- const getKnackStaffRecords = await knack.getAllRecords(2)
- const getWorkflowStaff = await workflowMax.getStaff()
- //Job Records
- const getKnackJobRecords = await knack.getAllRecords(1)
- const getWorkflowJobs = await workflowMax.getCurrentJobs()
- var staffArray = []
- for(let i = 0; i < getKnackStaffRecords.length; i++) {
- var found = false;
- for(let j = 0; j < getWorkflowStaff.length; j++) {
- //Break loop if id is found in knack records
- if(getKnackStaffRecords[i].field_189 == getWorkflowStaff[j].ID) {
- found = true
- break;
- }
- // data to send to knack
- const data = {
- field_189: getWorkflowStaff[j].ID,
- field_50: getWorkflowStaff[j].Mobile,
- field_3: getWorkflowStaff[j].Email,
- field_116: getWorkflowStaff[j].Address,
- field_2: getWorkflowStaff[j].Name
- }
- //If id is found, crerate record with data
- if(found == false) {
- staffArray.push(knack.createRecord(2, data));
- await knack.sleep(200);
- }
- // if(getKnackStaffRecords[i].field_189 === getWorkflowStaff[j].ID) {
- // staffArray.push(knack.updateRecord(2, data, getKnackStaffRecords[i].id));
- // await knack.sleep(200);
- // }
- }
- }
- var jobsArray = []
- for(let x = 0; x < getKnackJobRecords.length; x++) {
- var found = false;
- for(let y = 0; y < getWorkflowJobs.length; y++) {
- //Break loop if id is found in knack records
- if(getKnackJobRecords[x].field_173 == getWorkflowJobs[y].ID) {
- found = true
- break;
- }
- //Address is in name field, so need to split to specific special char
- const [beforeAddress, afterAddress] = getWorkflowJobs[y].Description.split("-")
- //FORMAT DATE START/END DATES FOR KNACK
- let startDateFormat = moment(getWorkflowJobs[y].StartDate).format('DD/MM/YYYY')
- let dueDateFormat = moment(getWorkflowJobs[y].DueDate).format('DD/MM/YYYY')
- const jobData = {
- //JOB
- field_173: getWorkflowJobs[y].ID,
- field_171:getWorkflowJobs[y].Description,
- field_172:getWorkflowJobs[y].WorkActivity,
- field_169: startDateFormat,
- field_170: dueDateFormat,
- field_180: String(beforeAddress),
- field_190: getWorkflowJobs[y].State,
- field_191: getWorkflowJobs[y].otherAssStaffIds,
- field_190: getWorkflowJobs[y].Type,
- //CLIENT DETAILS
- field_174: getWorkflowJobs[y].ClientOrderNumber,
- field_175: getWorkflowJobs[y].ClientName,
- //ASSIGNED STAFF
- field_178: getWorkflowJobs[y].assignedStaffIds,
- field_176: getWorkflowJobs[y].assignedStaffNames,
- //field_22: getWorkflowJobs[y].otherAssStaffIds,
- field_177: getWorkflowJobs[y].otherAssStaffNames,
- }
- //If id is not found, update record with data
- if(found == false) {
- jobsArray.push(knack.createRecord(1, jobData))
- await knack.sleep(200);
- }
- }
- }
- // console.log(jobsArray)
- /*
- INITAL GET REQUESTS TO SEND DATA TO APPENATE
- */
- // var jobsArray = []
- // for(let i = 0; i < getKnackJobRecords.length; i++) {
- // jobsArray.push(getKnackJobRecords[i])
- // await knack.sleep(200)
- // }
- // var staffArray = []
- // for(let i = 0; i < getKnackStaffRecords.length; i++) {
- // staffArray.push(getKnackStaffRecords[i])
- // await knack.sleep(200)
- // }
- const createdStaffResults = await Promise.all(staffArray)
- const createdJobResults = await Promise.all(jobsArray)
- var appenateStaffRows = []
- var appenateJobRows = []
- for(let a = 0; a < createdStaffResults.length; a++) {
- let email = ''
- let phone = ''
- //Throws an error if any if one of these fields are blank &
- // the '_raw' fields dont exist if the field is blank
- //Check each field first, otherwise set to empty string
- if(createdStaffResults[a].field_50 !== '') {
- phone = createdStaffResults[a].field_50_raw.formatted
- }
- if(createdStaffResults[a].field_3 !== '') {
- email = createdStaffResults[a].field_3_raw.email
- }
- appenateStaffRows.push(new Array(
- createdStaffResults[a].id, //ID
- createdStaffResults[a].field_2, //Name
- email, //Email
- phone, //Phone
- createdStaffResults[a].field_21, //Pin
- createdStaffResults[a].account_status, //Status
- createdStaffResults[a].field_189 //Workflowmax ID
- ))
- }
- for(let b = 0; b < createdJobResults.length; b++) {
- let phone = ''
- let email = ''
- let foreman = ''
- let foremanEmail = ''
- if(createdJobResults[b].field_22 !== '') {
- phone = createdJobResults[b].field_22_raw.formatted
- }
- if(createdJobResults[b].field_23 !== '') {
- email = createdJobResults[b].field_23_raw.email
- }
- if(createdJobResults[b].field_25 !== '') {
- foreman = createdJobResults[b].field_25_raw.identifer
- }
- if(createdJobResults[b].field_93 !== '') {
- foremanEmail = createdJobResults[b].field_93_raw
- }
- appenateJobRows.push(new Array(
- createdJobResults[b].id, //ID
- createdJobResults[b].field_171, //Name
- createdJobResults[b].field_26, //Number
- phone, //Phone
- email, //Email
- createdJobResults[b].field_180, //Address
- foreman, //Foreman
- foremanEmail, //Foreman Email
- createdJobResults[b].field_37, //Status
- createdJobResults[b].field_173 //Workflowmax ID
- ))
- }
- await appenate.createOrUpdateRecords('df19a35a-0b1a-4d1f-9c9d-aad70170aebe', appenateStaffRows)
- await appenate.createOrUpdateRecords('30c29b36-c5a4-4e97-835a-aad701629d39', appenateJobRows)
- return 'Knack web portal & Appenate data source Job & Staff records updated';
- }
- // module.exports = createKnackRecords;
- createKnackRecords()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement