From 13b42ee658fe45cd917ceca0211459ed7fb51265 Mon Sep 17 00:00:00 2001 From: Dhaarani <55541808+DhaaraniCIT@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:45:35 +0530 Subject: [PATCH] business central oauth url setting (#384) business central oauth url setting --- .../business-central-connector.model.ts | 6 ++++-- .../business-central-connector.service.ts | 2 +- ...siness-central-onboarding-connector.component.ts | 13 ++++--------- ...siness-central-onboarding-landing.component.html | 1 - ...business-central-onboarding-landing.component.ts | 7 +++---- 5 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/app/core/models/business-central/business-central-configuration/business-central-connector.model.ts b/src/app/core/models/business-central/business-central-configuration/business-central-connector.model.ts index 24b82773f..772316668 100644 --- a/src/app/core/models/business-central/business-central-configuration/business-central-connector.model.ts +++ b/src/app/core/models/business-central/business-central-configuration/business-central-connector.model.ts @@ -3,15 +3,17 @@ import { environment } from "src/environments/environment"; export type BusinessCentralConnector = { code: string; callback_url: string; + workspace: number } export interface BusinessCentralConnectorPost extends BusinessCentralConnector {} export class BusinessCentralConnectorModel { - static constructPayload(code: string): BusinessCentralConnectorPost { + static constructPayload(code: string, workspaceId: number): BusinessCentralConnectorPost { return { code, - callback_url: `${environment.business_central_oauth_redirect_uri}` + callback_url: `${environment.business_central_oauth_redirect_uri}`, + workspace: workspaceId }; } } \ No newline at end of file diff --git a/src/app/core/services/business-central/business-central-configuration/business-central-connector.service.ts b/src/app/core/services/business-central/business-central-configuration/business-central-connector.service.ts index 3b7b36ff7..f8d1508d4 100644 --- a/src/app/core/services/business-central/business-central-configuration/business-central-connector.service.ts +++ b/src/app/core/services/business-central/business-central-configuration/business-central-connector.service.ts @@ -32,7 +32,7 @@ export class BusinessCentralConnectorService { cacheBusterObserver: businessCentralCredentialsCache$ }) getBusinessCentralCredentials(): Observable { - return this.apiService.get(`/workspaces/${this.workspaceId}/credentials/business_central/`, {}); + return this.apiService.get(`/workspaces/${this.workspaceService.getWorkspaceId()}/credentials/business_central/`, {}); } @Cacheable({ diff --git a/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-connector/business-central-onboarding-connector.component.ts b/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-connector/business-central-onboarding-connector.component.ts index 5718033c5..7f79586ef 100644 --- a/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-connector/business-central-onboarding-connector.component.ts +++ b/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-connector/business-central-onboarding-connector.component.ts @@ -86,24 +86,19 @@ export class BusinessCentralOnboardingConnectorComponent implements OnInit, OnDe connectBusinessCentral(): void { this.businessCentralConnectionInProgress = true; - const url = `${environment.business_central_authorize_uri}client_id=${environment.business_central_oauth_client_id}&scope=com.intuit.quickbooks.accounting&response_type=code&redirect_uri=${environment.business_central_oauth_redirect_uri}&state=business_central_local_redirect`; + const url = `${environment.business_central_authorize_uri}client_id=${environment.business_central_oauth_client_id}&redirect_uri=${environment.business_central_oauth_redirect_uri}&state=business_central_local_redirect&response_type=code`; this.oauthCallbackSubscription = this.helperService.oauthCallbackUrl.subscribe((callbackURL: string) => { const code = callbackURL.split('code=')[1].split('&')[0]; this.postBusinessCentralCredentials(code); }); - this.helperService.oauthHandler(url); } - save(): void { - // TODO - } - acceptWarning(data: ConfigurationWarningOut): void { this.isIncorrectBusinessCentralConnectedDialogVisible = false; if (data.hasAccepted) { - this.router.navigate([`/integrations/business_central/onboarding/landing`]); + this.router.navigate([`/integrations/business_central/onboarding/connector`]); } } @@ -124,7 +119,7 @@ export class BusinessCentralOnboardingConnectorComponent implements OnInit, OnDe } private postBusinessCentralCredentials(code: string): void { - const payload: BusinessCentralConnectorPost = BusinessCentralConnectorModel.constructPayload(code); + const payload: BusinessCentralConnectorPost = BusinessCentralConnectorModel.constructPayload(code, +this.workspaceService.getWorkspaceId()); this.businessCentralConnectorService.connectBusinessCentral(payload).subscribe((businessCentralCredential: BusinessCentralCredential) => { this.businessCentralConnectorService.getBusinessCentralCompany().subscribe((businessCentralCompanyDetails: BusinessCentralCompanyDetails) => { @@ -138,7 +133,7 @@ export class BusinessCentralOnboardingConnectorComponent implements OnInit, OnDe }); }); }, (error) => { - const errorMessage = 'message' in error.error ? error.error.message : 'Failed to connect to Dynamic 360 Business Central. Please try again'; + const errorMessage = 'message' in error ? error.message : 'Failed to connect to Dynamic 360 Business Central. Please try again'; if (errorMessage === 'Please choose the correct Dynamic 360 Business Central account') { this.isIncorrectBusinessCentralConnectedDialogVisible = true; } else { diff --git a/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-landing/business-central-onboarding-landing.component.html b/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-landing/business-central-onboarding-landing.component.html index 6c82f8073..1a8e26b61 100644 --- a/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-landing/business-central-onboarding-landing.component.html +++ b/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-landing/business-central-onboarding-landing.component.html @@ -1,5 +1,4 @@
-

Connect QBO Button will be added somewhere in this page

diff --git a/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-landing/business-central-onboarding-landing.component.ts b/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-landing/business-central-onboarding-landing.component.ts index 9bef6d31e..bc58cbf53 100644 --- a/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-landing/business-central-onboarding-landing.component.ts +++ b/src/app/integrations/business-central/business-central-onboarding/business-central-onboarding-landing/business-central-onboarding-landing.component.ts @@ -51,18 +51,17 @@ export class BusinessCentralOnboardingLandingComponent implements OnInit, OnDest connectBusinessCentral(): void { this.businessCentralConnectionInProgress = true; - const url = `${environment.business_central_authorize_uri}?client_id=${environment.business_central_oauth_client_id}&scope=com.intuit.quickbooks.accounting&response_type=code&redirect_uri=${environment.business_central_oauth_redirect_uri}&state=business_central_local_redirect`; + const url = `${environment.business_central_authorize_uri}client_id=${environment.business_central_oauth_client_id}&redirect_uri=${environment.business_central_oauth_redirect_uri}&state=business_central_local_redirect&response_type=code`; this.oauthCallbackSubscription = this.helperService.oauthCallbackUrl.subscribe((callbackURL: string) => { const code = callbackURL.split('code=')[1].split('&')[0]; - this.checkProgressAndRedirect(code); + this.postBusinessCentralCredentials(code); }); - this.helperService.oauthHandler(url); } private postBusinessCentralCredentials(code: string): void { - const payload: BusinessCentralConnectorPost = BusinessCentralConnectorModel.constructPayload(code); + const payload: BusinessCentralConnectorPost = BusinessCentralConnectorModel.constructPayload(code, +this.workspaceService.getWorkspaceId()); this.businessCentralConnectorService.connectBusinessCentral(payload).subscribe(() => { this.businessCentralConnectionInProgress = false;