diff --git a/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts b/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts index 0c304dec..a56538b1 100644 --- a/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts +++ b/src/app/modules/hebis/daia-availability/daia-availability.component.spec.ts @@ -29,6 +29,7 @@ import {DaiaAvailabilityComponent} from './daia-availability.component'; import {Observable, of} from 'rxjs'; import {StorageProvider} from '../../storage/storage.provider'; import {DaiaDataProvider} from '../daia-data.provider'; +import {LoggerConfig, LoggerModule, NGXLogger} from 'ngx-logger'; const translations: any = {data: {detail: {TITLE: 'Foo'}}}; @@ -79,6 +80,7 @@ describe('DaiaAvailabilityComponent', () => { TranslateModule.forRoot({ loader: {provide: TranslateLoader, useClass: TranslateFakeLoader}, }), + LoggerModule, ], providers: [ { @@ -89,6 +91,8 @@ describe('DaiaAvailabilityComponent', () => { provide: StorageProvider, useValue: storageProviderSpy, }, + NGXLogger, + LoggerConfig, ], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); @@ -97,6 +101,8 @@ describe('DaiaAvailabilityComponent', () => { beforeEach(async () => { dataProvider = TestBed.get(DaiaDataProvider); + const workingDAIAurl = 'https://daia.hebis.de/DAIA2/UB_Frankfurt'; + dataProvider.backendUrl = workingDAIAurl; translateService = TestBed.get(TranslateService); refresher = jasmine.createSpyObj('refresher', ['complete']); spyOn(dataProvider, 'get' as any).and.returnValue( diff --git a/src/app/modules/hebis/daia-data.provider.ts b/src/app/modules/hebis/daia-data.provider.ts index cced212c..c6b2d52c 100644 --- a/src/app/modules/hebis/daia-data.provider.ts +++ b/src/app/modules/hebis/daia-data.provider.ts @@ -19,7 +19,10 @@ import {StorageProvider} from '../storage/storage.provider'; import {StAppsWebHttpClient} from '../data/stapps-web-http-client.provider'; import {HttpClient} from '@angular/common/http'; import {DataProvider} from '../data/data.provider'; +import {ConfigProvider} from '../config/config.provider'; +import {SCFeatureConfiguration} from '@openstapps/core'; import {environment} from '../../../environments/environment'; +import {NGXLogger} from 'ngx-logger'; /** * Generated class for the DataProvider provider. @@ -38,7 +41,9 @@ export class DaiaDataProvider extends DataProvider { httpClient: HttpClient; - backendUrl = environment.daia_url; + configProvider: ConfigProvider; + + backendUrl = environment.backend_url; /** * TODO @@ -46,15 +51,19 @@ export class DaiaDataProvider extends DataProvider { * @param stAppsWebHttpClient TODO * @param storageProvider TODO * @param httpClient TODO + * @param ConfigProvider TODO */ constructor( stAppsWebHttpClient: StAppsWebHttpClient, storageProvider: StorageProvider, httpClient: HttpClient, + configProvider: ConfigProvider, + private readonly logger: NGXLogger, ) { super(stAppsWebHttpClient, storageProvider); this.storageProvider = storageProvider; this.httpClient = httpClient; + this.configProvider = configProvider; this.client = new Client( stAppsWebHttpClient, this.backendUrl, @@ -63,59 +72,80 @@ export class DaiaDataProvider extends DataProvider { } async getAvailability(id: string): Promise { + if (this.backendUrl === environment.backend_url) { + try { + const features = (await this.configProvider.getValue( + 'features', + )) as SCFeatureConfiguration; + if (features.extern?.daia?.url) { + this.backendUrl = features.extern?.daia?.url; + } else { + this.logger.error('Daia service url undefined'); + return []; + } + } catch (error) { + this.logger.error(error); + return []; + } + } return new Promise(resolve => this.httpClient .get(this.backendUrl, {params: {id}}) - .subscribe((response: SCDaiaAvailabilityResponse) => { - console.error(response); - const holdings: SCDaiaHoldings[] = []; - if (response && Array.isArray(response.document)) { - response.document.map(document => { - Array.isArray(document.item) && - document.item.map(element => { - try { - const { - department: { - id: departmentId, - content: departmentLabel, - href: departmentLink, - } = {id: 'noDep', content: '', href: ''}, - label, - about, - available, - storage, - } = element; - const holdingIndex = holdings.findIndex( - holding => holding.id === departmentId, - ); - - if (holdingIndex === -1) { - holdings.push({ - id: departmentId, - label: departmentLabel, - href: departmentLink, - signature: label, - available: - (Array.isArray(available) && - (available.find( - item => item.service === 'openaccess', - ) || - available.find( - item => item.service === 'loan', - ))) || - undefined, - storage, + .subscribe( + (response: SCDaiaAvailabilityResponse) => { + const holdings: SCDaiaHoldings[] = []; + if (response && Array.isArray(response.document)) { + response.document.map(document => { + Array.isArray(document.item) && + document.item.map(element => { + try { + const { + department: { + id: departmentId, + content: departmentLabel, + href: departmentLink, + } = {id: 'noDep', content: '', href: ''}, + label, about, - }); + available, + storage, + } = element; + const holdingIndex = holdings.findIndex( + holding => holding.id === departmentId, + ); + + if (holdingIndex === -1) { + holdings.push({ + id: departmentId, + label: departmentLabel, + href: departmentLink, + signature: label, + available: + (Array.isArray(available) && + (available.find( + item => item.service === 'openaccess', + ) || + available.find( + item => item.service === 'loan', + ))) || + undefined, + storage, + about, + }); + } + } catch { + // No element available } - } catch { - // No element available - } - }); - }); - } - resolve(holdings); - }), + }); + }); + } + resolve(holdings); + }, + error => { + this.logger.error(error); + resolve([]); + }, + ), ); } } diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 087795d4..fd95c15f 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -19,7 +19,6 @@ export const environment = { backend_url: 'https://mobile.server.uni-frankfurt.de', - daia_url: 'https://daia.hebis.de/DAIA2/UB_Frankfurt', app_host: 'mobile.app.uni-frankfurt.de', custom_url_scheme: 'de.anyschool.app', backend_version: '2.0.0', diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 044e2c3f..1499e96a 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -19,7 +19,6 @@ export const environment = { backend_url: 'https://mobile.server.uni-frankfurt.de', - daia_url: 'https://daia.hebis.de/DAIA2/UB_Frankfurt', app_host: 'mobile.app.uni-frankfurt.de', custom_url_scheme: 'de.anyschool.app', backend_version: '2.0.0',