From e5936179b870ba9bf68fdef1ba0c11a7e5b5bd2a Mon Sep 17 00:00:00 2001 From: Peter Gillingham Date: Wed, 15 Nov 2023 18:03:26 +0000 Subject: [PATCH 01/25] typescriptify --- src/routes/dno-data-panel/+server.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/routes/dno-data-panel/+server.ts b/src/routes/dno-data-panel/+server.ts index 05f15e83..9165145b 100644 --- a/src/routes/dno-data-panel/+server.ts +++ b/src/routes/dno-data-panel/+server.ts @@ -15,7 +15,12 @@ const MAP_API_TOKEN = const crm = new CRM() const openSolar = new openSolarAPI() -let projectFound = undefined; +interface Project { + projectId: string + uuid: string +} + +let projectFound: Project | undefined = undefined; export async function POST({ request }) { console.log("found:", projectFound) From 7d3b67289024832389080ebbb322fd73279f7b1d Mon Sep 17 00:00:00 2001 From: Peter Gillingham Date: Thu, 16 Nov 2023 10:36:40 +0000 Subject: [PATCH 02/25] added button for contracts only enabled when dno application found on pd --- src/lib/crm/crm-utils.ts | 11 +++- src/routes/dno-data-panel/+page.svelte | 78 ++++++++++++++++++++++++-- src/routes/dno-data-panel/+server.ts | 28 ++++++++- 3 files changed, 108 insertions(+), 9 deletions(-) diff --git a/src/lib/crm/crm-utils.ts b/src/lib/crm/crm-utils.ts index 6becb5a5..d604d122 100644 --- a/src/lib/crm/crm-utils.ts +++ b/src/lib/crm/crm-utils.ts @@ -79,7 +79,6 @@ export class CRM { country: dealData['80ebeccb5c4130caa1da17c6304ab63858b912a1_country'] } return addressObject; - } async getPLNumberFor(dealId: string) { @@ -92,6 +91,16 @@ export class CRM { return readCustomDealField(fieldName, dealData) } + async getFileFor(dealId: string, fileName: string) { + const dealFiles = await this.pdDealsApi.getDealFiles(dealId) + const file = dealFiles.data.find((f) => f.name.includes(fileName)); + if (file === undefined) { + console.log(`Could not find deal file with name '${fileName}'. Is this spelled correctly?`); + return null; + } + return file + } + async setMpanFor(PLNumber: string, value: string) { const updateDealRequest = await this.setCustomField(PLNumber, 'MPAN number', value) return updateDealRequest; diff --git a/src/routes/dno-data-panel/+page.svelte b/src/routes/dno-data-panel/+page.svelte index bdd986fe..b2a53694 100644 --- a/src/routes/dno-data-panel/+page.svelte +++ b/src/routes/dno-data-panel/+page.svelte @@ -3,7 +3,6 @@ import { page } from '$app/stores'; import AppExtensionsSDK from '@pipedrive/app-extensions-sdk'; - const dealId = $page.url.searchParams.get('selectedIds'); let sdk; @@ -11,6 +10,7 @@ let alertMessage = null; let loading = false; let projectExist = false; + let dnoExist = false; onMount(async () => { sdk = await new AppExtensionsSDK().initialize(); await sdk.execute('resize', { height: 300 }); @@ -19,6 +19,7 @@ onMount(() => { if (dealId) { searchProjectDesign(); + searchForDno(); } }); @@ -35,7 +36,7 @@ }); if (response.ok) { const responseData = await response.json(); - console.log(responseData) + console.log(responseData); if (responseData.statusCode === 200) { alertMessage = 'initialized.'; } else { @@ -64,7 +65,7 @@ headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ dealId: dealId, - option: 1, + option: 1 }) }); if (response.ok) { @@ -103,6 +104,66 @@ return error; } } + + async function searchForDno() { + try { + alertMessage = 'initializing'; + loading = true; + const response = await fetch('/dno-data-panel', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + dealId: dealId, + option: 3 + }) + }); + if (response.ok) { + const responseData = await response.json(); + console.log(responseData); + if (responseData.statusCode === 200) { + alertMessage = 'dno found'; + dnoExist = true; + } else { + dnoExist = false; + alertMessage = responseData.message; + } + await new Promise((resolve) => setTimeout(resolve, 1000)); + alertMessage = null; + } + loading = false; + return response; + } catch (error) { + console.log(error); + alertMessage = error; + await new Promise((resolve) => setTimeout(resolve, 2000)); + alertMessage = null; + return error; + } + } + + async function contractBuilder() { + try { + alertMessage = 'Building contract documents'; + const res = await fetch('/dno-data-panel', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + dealId: dealId, + option: 4 + }) + }); + if (res.ok) { + const resData = await res.json(); + alertMessage = resData.message; + await new Promise((resolve) => setTimeout(resolve, 2000)); + alertMessage = ''; + return res; + } + } catch (error) { + console.log(error); + return error; + } + }
@@ -114,8 +175,15 @@

Selected ID: {dealId}

- - + + +