Skip to content

Instantly share code, notes, and snippets.

@tracker1
Forked from joetemp/newW2.js
Last active June 8, 2016 06:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tracker1/65a0e62c4aedc742685b6d42390a12d7 to your computer and use it in GitHub Desktop.
Save tracker1/65a0e62c4aedc742685b6d42390a12d7 to your computer and use it in GitHub Desktop.
const request = require('request-promise');
const moment = require('moment');
const getId = url => request(url).then(b => JSON.parse(b).data);
function getSoonItems(deal, type) {
return deals.filter(deal => (
deal.stage_id === app && deal[type.key] === type.refi ||
deal.stage_id === app && deal[type.key] === type.purchase && deal[pbl.key] === pbl.no
)).reduce((obj, deal) => { ...obj, [deal.id]:deal });
}
function getLaterItems(deal, type, pbl, address, soon) {
deals.filter(deal => (
!soon[deal.id] && (
deal.stage_id === app && deal[type.key] === type.purchase && deal[pbl.key] === pbl.yes && deal[address.key] === '' ||
deal.stage_id === app && deal[type.key] === type.purchase && deal[pbl.key] === pbl.yes && deal[address.key] === null
)
)).reduce((obj, deal) => { ...obj, [deal.id]:deal });
}
function getHaveItems(activities) {
return activities.filter(a => a.subject === 'W-2')
.reduce((obj, a) => { ...obj, [`${a.deal_id}${deal.person_id}`]: a });
}
export default async function(API_KEY, deals, activities, app, type, pbl, address, test) {
try {
let soon = getSoonItems();
let later = getLaterItems(deal, type, pbl, address, soon)
let have = getHavItems(activities);
console.log('Here are the people who already have a W-2 activity:');
console.log(Object.keys(have));
let soonArr = Object.keys(soon).map(d => +d);
console.log('Here are the deals that could potentially need a W-2 soon:');
console.log(soonArr);
const results = await Promise.all(soonArr.map(d =>
getId(`https://api.pipedrive.com/v1/deals/${d}/participants?start=0&api_token=${API_KEY}`)
));
const soonPart = results.reduce((obj, part) => { ...obj, [`${part.related_item_id}${part.person.id}`]:part }, {});
console.log('Here are the people associated with those deals that are EMPLOYED:');
console.log(Object.keys(soonPart));
let soonQueue = Object.keys(soonPart).filter(part => Object.keys(have).indexOf(part) === -1);
console.log('Here is the soon queue:');
console.log(soonQueue);
await Promise.all(soonQueue.map(cat => request.post(
`https://api.pipedrive.com/v1/activities?api_token=${API_KEY}`,
{
form: {
subject : 'W-2',
deal_id : soonPart[cat].related_item_id,
person_id: soonPart[cat].person.id,
type : 'task',
note : `Sign and scan 1003 for ${soonPart[cat].person_id.name}.`,
due_date : moment().add(3, 'days').format('YYYY-MM-DD')}
}
)));
console.log("Do moar shit heeeeaaaaare!!!");
} catch(err) {
console.error('ERROR', err);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment