Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { workflowMax, knack, appenate } = require("./api/Api Service")
  2. const moment = require('moment-timezone');
  3.  
  4. async function createKnackRecords() {
  5.     //Staff Records
  6.     const getKnackStaffRecords = await knack.getAllRecords(2)
  7.     const getWorkflowStaff = await workflowMax.getStaff()
  8.  
  9.     //Job Records
  10.     const getKnackJobRecords = await knack.getAllRecords(1)
  11.     const getWorkflowJobs = await workflowMax.getCurrentJobs()
  12.  
  13.     var staffArray = []
  14.     for(let i = 0; i < getKnackStaffRecords.length; i++) {
  15.         var found = false;
  16.         for(let j = 0; j < getWorkflowStaff.length; j++) {
  17.  
  18.             //Break loop if id is found in knack records
  19.             if(getKnackStaffRecords[i].field_189 == getWorkflowStaff[j].ID) {
  20.                 found = true
  21.                 break;
  22.             }
  23.  
  24.            // data to send to knack
  25.             const data = {
  26.                 field_189: getWorkflowStaff[j].ID,
  27.                 field_50: getWorkflowStaff[j].Mobile,
  28.                 field_3: getWorkflowStaff[j].Email,
  29.                 field_116: getWorkflowStaff[j].Address,
  30.                 field_2: getWorkflowStaff[j].Name
  31.             }
  32.  
  33.             //If id is found, crerate record with data
  34.             if(found == false) {
  35.                 staffArray.push(knack.createRecord(2, data));
  36.                 await knack.sleep(200);
  37.             }
  38.  
  39.             // if(getKnackStaffRecords[i].field_189 === getWorkflowStaff[j].ID) {
  40.             //     staffArray.push(knack.updateRecord(2, data, getKnackStaffRecords[i].id));
  41.             //     await knack.sleep(200);
  42.             // }
  43.         }
  44.     }
  45.    
  46.    
  47.  
  48.     var jobsArray = []
  49.     for(let x = 0; x < getKnackJobRecords.length; x++) {
  50.         var found = false;
  51.         for(let y = 0; y < getWorkflowJobs.length; y++) {
  52.             //Break loop if id is found in knack records
  53.             if(getKnackJobRecords[x].field_173 == getWorkflowJobs[y].ID) {
  54.                 found = true
  55.                 break;
  56.             }
  57.  
  58.             //Address is in name field, so need to split to specific special char
  59.             const [beforeAddress, afterAddress] = getWorkflowJobs[y].Description.split("-")
  60.  
  61.             //FORMAT DATE START/END DATES FOR KNACK
  62.             let startDateFormat = moment(getWorkflowJobs[y].StartDate).format('DD/MM/YYYY')
  63.             let dueDateFormat = moment(getWorkflowJobs[y].DueDate).format('DD/MM/YYYY')
  64.  
  65.             const jobData = {
  66.                 //JOB
  67.                 field_173: getWorkflowJobs[y].ID,
  68.                 field_171:getWorkflowJobs[y].Description,
  69.                 field_172:getWorkflowJobs[y].WorkActivity,
  70.                 field_169: startDateFormat,
  71.                 field_170: dueDateFormat,
  72.                 field_180: String(beforeAddress),
  73.                 field_190: getWorkflowJobs[y].State,
  74.                 field_191: getWorkflowJobs[y].otherAssStaffIds,
  75.                 field_190: getWorkflowJobs[y].Type,
  76.  
  77.                 //CLIENT DETAILS
  78.                 field_174: getWorkflowJobs[y].ClientOrderNumber,
  79.                 field_175: getWorkflowJobs[y].ClientName,
  80.  
  81.                 //ASSIGNED STAFF
  82.                 field_178: getWorkflowJobs[y].assignedStaffIds,
  83.                 field_176: getWorkflowJobs[y].assignedStaffNames,
  84.                 //field_22: getWorkflowJobs[y].otherAssStaffIds,
  85.                 field_177: getWorkflowJobs[y].otherAssStaffNames,
  86.             }
  87.  
  88.             //If id is not found, update record with data
  89.             if(found == false) {
  90.                 jobsArray.push(knack.createRecord(1, jobData))
  91.                 await knack.sleep(200);
  92.            }
  93.  
  94.         }
  95.     }
  96.  
  97.     // console.log(jobsArray)
  98.  
  99.     /*
  100.         INITAL GET REQUESTS TO SEND DATA TO APPENATE
  101.     */
  102.  
  103.     // var jobsArray = []
  104.     // for(let i = 0; i < getKnackJobRecords.length; i++) {
  105.     //     jobsArray.push(getKnackJobRecords[i])
  106.     //     await knack.sleep(200)
  107.     // }
  108.  
  109.     // var staffArray = []
  110.     // for(let i = 0; i < getKnackStaffRecords.length; i++) {
  111.     //     staffArray.push(getKnackStaffRecords[i])
  112.     //     await knack.sleep(200)
  113.     // }
  114.  
  115.  
  116.     const createdStaffResults = await Promise.all(staffArray)
  117.     const createdJobResults = await Promise.all(jobsArray)
  118.  
  119.     var appenateStaffRows = []
  120.     var appenateJobRows = []
  121.  
  122.     for(let a = 0; a < createdStaffResults.length; a++) {
  123.         let email = ''
  124.         let phone = ''
  125.  
  126.         //Throws an error if any if one of these fields are blank &
  127.         // the '_raw' fields dont exist if the field is blank
  128.         //Check each field first, otherwise set to empty string
  129.         if(createdStaffResults[a].field_50 !== '') {
  130.             phone = createdStaffResults[a].field_50_raw.formatted
  131.         }
  132.         if(createdStaffResults[a].field_3 !== '') {
  133.             email = createdStaffResults[a].field_3_raw.email
  134.         }
  135.  
  136.         appenateStaffRows.push(new Array(
  137.             createdStaffResults[a].id, //ID
  138.             createdStaffResults[a].field_2, //Name
  139.             email, //Email
  140.             phone, //Phone
  141.             createdStaffResults[a].field_21, //Pin
  142.             createdStaffResults[a].account_status, //Status
  143.             createdStaffResults[a].field_189 //Workflowmax ID
  144.         ))
  145.     }
  146.  
  147.  
  148.     for(let b = 0; b < createdJobResults.length; b++) {
  149.  
  150.         let phone = ''
  151.         let email = ''
  152.         let foreman = ''
  153.         let foremanEmail = ''
  154.  
  155.         if(createdJobResults[b].field_22 !== '') {
  156.             phone = createdJobResults[b].field_22_raw.formatted
  157.         }
  158.         if(createdJobResults[b].field_23 !== '') {
  159.             email = createdJobResults[b].field_23_raw.email
  160.         }
  161.         if(createdJobResults[b].field_25 !== '') {
  162.             foreman = createdJobResults[b].field_25_raw.identifer
  163.         }
  164.         if(createdJobResults[b].field_93 !== '') {
  165.             foremanEmail = createdJobResults[b].field_93_raw
  166.         }
  167.        
  168.         appenateJobRows.push(new Array(
  169.             createdJobResults[b].id, //ID
  170.             createdJobResults[b].field_171, //Name
  171.             createdJobResults[b].field_26, //Number
  172.             phone, //Phone
  173.             email, //Email
  174.             createdJobResults[b].field_180, //Address
  175.             foreman, //Foreman
  176.             foremanEmail, //Foreman Email
  177.             createdJobResults[b].field_37, //Status
  178.             createdJobResults[b].field_173 //Workflowmax ID
  179.         ))
  180.     }
  181.     await appenate.createOrUpdateRecords('df19a35a-0b1a-4d1f-9c9d-aad70170aebe', appenateStaffRows)
  182.     await appenate.createOrUpdateRecords('30c29b36-c5a4-4e97-835a-aad701629d39', appenateJobRows)
  183.  
  184.     return 'Knack web portal & Appenate data source Job & Staff records updated';
  185.  }
  186.  
  187. // module.exports = createKnackRecords;
  188.  
  189. createKnackRecords()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement