taxtank-core 0.8.6 → 0.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taxtank-core.umd.js +94 -92
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/db/Models/transaction-base.js +2 -1
- package/esm2015/lib/services/http/address/address.service.js +39 -0
- package/esm2015/lib/services/http/bank/bank-account/bank-account.service.js +118 -0
- package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +52 -0
- package/esm2015/lib/services/http/bank/bank-transaction/bank-transaction.service.js +89 -0
- package/esm2015/lib/services/http/bank/bank.service.js +24 -0
- package/esm2015/lib/services/http/bank/basiq/basiq.service.js +94 -0
- package/esm2015/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.js +38 -0
- package/esm2015/lib/services/http/chart-accounts/chart-accounts.service.js +89 -0
- package/esm2015/lib/services/http/chat/chat.service.js +77 -0
- package/esm2015/lib/services/http/chat/message/message.service.js +65 -0
- package/esm2015/lib/services/http/chat/message-document/message-document.service.js +118 -0
- package/esm2015/lib/services/{depreciation/capital-project.service.js → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.js} +7 -7
- package/esm2015/lib/services/http/depreciation/depreciation.service.js +146 -0
- package/esm2015/lib/services/http/document/document-folder/document-folder.service.js +84 -0
- package/esm2015/lib/services/{client → http/firm/client-invite}/client-invite.service.js +7 -7
- package/esm2015/lib/services/http/firm/client-movement/client-movement.service.js +98 -0
- package/esm2015/lib/services/http/firm/employee/employee.service.js +39 -0
- package/esm2015/lib/services/http/firm/employee-invite/employee-invite.service.js +53 -0
- package/esm2015/lib/services/http/firm/firm.service.js +79 -0
- package/esm2015/lib/services/http/firm/portfolio-report/client-portfolio-report.service.js +37 -0
- package/esm2015/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.js +90 -0
- package/esm2015/lib/services/http/income-source/income-source.service.js +109 -0
- package/esm2015/lib/services/http/income-source/salary-forecast/salary-forecast.service.js +90 -0
- package/esm2015/lib/services/http/income-source/sole-forecast/sole-forecast.service.js +87 -0
- package/esm2015/lib/services/http/loan/borrowing-expense/borrowing-expense.service.js +73 -0
- package/esm2015/lib/services/http/loan/loan.service.js +145 -0
- package/esm2015/lib/services/http/property/property-category/property-category.service.js +23 -0
- package/esm2015/lib/services/http/property/property-category-movement/property-category-movement.service.js +47 -0
- package/esm2015/lib/services/http/property/property-document/property-document.service.js +70 -0
- package/esm2015/lib/services/http/property/property-sale/property-sale.service.js +20 -0
- package/esm2015/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.js +21 -0
- package/esm2015/lib/services/http/property/property-share/property-share.service.js +115 -0
- package/esm2015/lib/services/http/property/property.service.js +126 -0
- package/esm2015/lib/services/http/rest/rest.service.js +190 -0
- package/esm2015/lib/services/http/service-notification/service-notification.service.js +65 -0
- package/esm2015/lib/services/http/subscription/subscription.service.js +157 -0
- package/esm2015/lib/services/http/tax-review/tax-review-history/tax-review-history.service.js +41 -0
- package/esm2015/lib/services/http/tax-review/tax-review.service.js +103 -0
- package/esm2015/lib/services/http/tax-summary/tax-summary.service.js +71 -0
- package/esm2015/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.js +85 -0
- package/esm2015/lib/services/http/transaction/transaction.service.js +319 -0
- package/esm2015/lib/services/http/user/occupation/occupation.service.js +45 -0
- package/esm2015/lib/services/http/user/user-event-setting/user-event-setting.service.js +59 -0
- package/esm2015/lib/services/http/user/user-event-type/user-event-type.service.js +29 -0
- package/esm2015/lib/services/http/user/user.service.js +124 -0
- package/esm2015/lib/services/http/vehicle/vehicle.service.js +237 -0
- package/esm2015/lib/services/property/equity-position-chart/equity-position-chart.service.js +45 -0
- package/esm2015/public-api.js +48 -48
- package/fesm2015/taxtank-core.js +51 -49
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/services/{address → http/address}/address.service.d.ts +1 -1
- package/lib/services/{bank → http/bank/bank-account}/bank-account.service.d.ts +5 -5
- package/lib/services/{bank → http/bank/bank-connection}/bank-connection.service.d.ts +5 -5
- package/lib/services/{bank → http/bank/bank-transaction}/bank-transaction.service.d.ts +5 -5
- package/lib/services/{bank → http/bank}/bank.service.d.ts +4 -4
- package/lib/services/{bank → http/bank/basiq}/basiq.service.d.ts +7 -7
- package/lib/services/{chart-accounts → http/chart-accounts/chart-accounts-depreciations}/chart-accounts-depreciations.service.d.ts +4 -4
- package/lib/services/{chart-accounts → http/chart-accounts}/chart-accounts.service.d.ts +3 -3
- package/lib/services/{chat → http/chat}/chat.service.d.ts +7 -7
- package/lib/services/{chat → http/chat/message}/message.service.d.ts +7 -7
- package/lib/services/{chat → http/chat/message-document}/message-document.service.d.ts +3 -3
- package/lib/services/{depreciation/capital-project.service.d.ts → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.d.ts} +4 -4
- package/lib/services/{depreciation → http/depreciation}/depreciation.service.d.ts +5 -5
- package/lib/services/{document → http/document/document-folder}/document-folder.service.d.ts +6 -6
- package/lib/services/{client → http/firm/client-invite}/client-invite.service.d.ts +4 -4
- package/lib/services/{client → http/firm/client-movement}/client-movement.service.d.ts +7 -7
- package/lib/services/{employee → http/firm/employee}/employee.service.d.ts +4 -4
- package/lib/services/{employee → http/firm/employee-invite}/employee-invite.service.d.ts +4 -4
- package/lib/services/{firm → http/firm}/firm.service.d.ts +2 -2
- package/lib/services/{client → http/firm/portfolio-report}/client-portfolio-report.service.d.ts +1 -1
- package/lib/services/{income-source → http/income-source/income-source-forecast}/income-source-forecast.service.d.ts +5 -5
- package/lib/services/{income-source → http/income-source}/income-source.service.d.ts +8 -8
- package/lib/services/{income-source → http/income-source/salary-forecast}/salary-forecast.service.d.ts +6 -6
- package/lib/services/{income-source → http/income-source/sole-forecast}/sole-forecast.service.d.ts +5 -5
- package/lib/services/{borrowing-expense → http/loan/borrowing-expense}/borrowing-expense.service.d.ts +2 -2
- package/lib/services/{loan → http/loan}/loan.service.d.ts +6 -6
- package/lib/services/{property → http/property}/property-category/property-category.service.d.ts +4 -4
- package/lib/services/{property → http/property/property-category-movement}/property-category-movement.service.d.ts +4 -4
- package/lib/services/{property → http/property}/property-document/property-document.service.d.ts +5 -5
- package/lib/services/http/property/property-sale/property-sale.service.d.ts +10 -0
- package/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.d.ts +11 -0
- package/lib/services/{property → http/property}/property-share/property-share.service.d.ts +5 -5
- package/lib/services/{property → http/property}/property.service.d.ts +5 -5
- package/lib/services/{base-rest.service.d.ts → http/rest/rest.service.d.ts} +4 -4
- package/lib/services/http/service-notification/service-notification.service.d.ts +31 -0
- package/lib/services/{subscription → http/subscription}/subscription.service.d.ts +6 -6
- package/lib/services/{tax-review → http/tax-review/tax-review-history}/tax-review-history.service.d.ts +5 -5
- package/lib/services/{tax-review → http/tax-review}/tax-review.service.d.ts +6 -6
- package/lib/services/{tax-summary → http/tax-summary}/tax-summary.service.d.ts +2 -2
- package/lib/services/{transaction → http/transaction/transaction-allocation}/transaction-allocation.service.d.ts +6 -6
- package/lib/services/{transaction → http/transaction}/transaction.service.d.ts +7 -7
- package/lib/services/{user → http/user/occupation}/occupation.service.d.ts +1 -1
- package/lib/services/{user-event → http/user/user-event-setting}/user-event-setting.service.d.ts +5 -5
- package/lib/services/{user-event → http/user/user-event-type}/user-event-type.service.d.ts +5 -5
- package/lib/services/{user → http/user}/user.service.d.ts +3 -3
- package/lib/services/{work/work-tank.service.d.ts → http/vehicle/vehicle.service.d.ts} +9 -8
- package/lib/services/property/{equity-position-chart.service.d.ts → equity-position-chart/equity-position-chart.service.d.ts} +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +47 -47
- package/esm2015/lib/services/address/address.service.js +0 -39
- package/esm2015/lib/services/bank/bank-account.service.js +0 -118
- package/esm2015/lib/services/bank/bank-connection.service.js +0 -52
- package/esm2015/lib/services/bank/bank-transaction.service.js +0 -89
- package/esm2015/lib/services/bank/bank.service.js +0 -24
- package/esm2015/lib/services/bank/basiq.service.js +0 -94
- package/esm2015/lib/services/base-rest.service.js +0 -190
- package/esm2015/lib/services/borrowing-expense/borrowing-expense.service.js +0 -73
- package/esm2015/lib/services/chart-accounts/chart-accounts-depreciations.service.js +0 -38
- package/esm2015/lib/services/chart-accounts/chart-accounts.service.js +0 -89
- package/esm2015/lib/services/chat/chat.service.js +0 -77
- package/esm2015/lib/services/chat/message-document.service.js +0 -118
- package/esm2015/lib/services/chat/message.service.js +0 -65
- package/esm2015/lib/services/client/client-movement.service.js +0 -98
- package/esm2015/lib/services/client/client-portfolio-report.service.js +0 -37
- package/esm2015/lib/services/depreciation/depreciation.service.js +0 -146
- package/esm2015/lib/services/document/document-folder.service.js +0 -84
- package/esm2015/lib/services/employee/employee-invite.service.js +0 -53
- package/esm2015/lib/services/employee/employee.service.js +0 -39
- package/esm2015/lib/services/firm/firm.service.js +0 -79
- package/esm2015/lib/services/income-source/income-source-forecast.service.js +0 -90
- package/esm2015/lib/services/income-source/income-source.service.js +0 -109
- package/esm2015/lib/services/income-source/salary-forecast.service.js +0 -90
- package/esm2015/lib/services/income-source/sole-forecast.service.js +0 -87
- package/esm2015/lib/services/loan/loan.service.js +0 -145
- package/esm2015/lib/services/notification/notification.service.js +0 -65
- package/esm2015/lib/services/property/equity-position-chart.service.js +0 -45
- package/esm2015/lib/services/property/property-category/property-category.service.js +0 -23
- package/esm2015/lib/services/property/property-category-movement.service.js +0 -47
- package/esm2015/lib/services/property/property-document/property-document.service.js +0 -70
- package/esm2015/lib/services/property/property-sale/property-sale.service.js +0 -20
- package/esm2015/lib/services/property/property-sale/tax-exemption/tax-exemption.service.js +0 -21
- package/esm2015/lib/services/property/property-share/property-share.service.js +0 -115
- package/esm2015/lib/services/property/property.service.js +0 -126
- package/esm2015/lib/services/subscription/subscription.service.js +0 -157
- package/esm2015/lib/services/tax-review/tax-review-history.service.js +0 -41
- package/esm2015/lib/services/tax-review/tax-review.service.js +0 -103
- package/esm2015/lib/services/tax-summary/tax-summary.service.js +0 -71
- package/esm2015/lib/services/transaction/transaction-allocation.service.js +0 -85
- package/esm2015/lib/services/transaction/transaction.service.js +0 -319
- package/esm2015/lib/services/user/occupation.service.js +0 -45
- package/esm2015/lib/services/user/user.service.js +0 -124
- package/esm2015/lib/services/user-event/user-event-setting.service.js +0 -59
- package/esm2015/lib/services/user-event/user-event-type.service.js +0 -29
- package/esm2015/lib/services/work/work-tank.service.js +0 -236
- package/lib/services/notification/notification.service.d.ts +0 -31
- package/lib/services/property/property-sale/property-sale.service.d.ts +0 -10
- package/lib/services/property/property-sale/tax-exemption/tax-exemption.service.d.ts +0 -11
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { UserEventType } from '../../models/user-event/user-event-type';
|
|
3
|
-
import { BaseRestService } from '../base-rest.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common/http";
|
|
6
|
-
import * as i2 from "../event/event-dispatcher.service";
|
|
7
|
-
export class UserEventTypeService extends BaseRestService {
|
|
8
|
-
constructor(http, eventDispatcherService, environment) {
|
|
9
|
-
super(http, eventDispatcherService, environment);
|
|
10
|
-
this.http = http;
|
|
11
|
-
this.eventDispatcherService = eventDispatcherService;
|
|
12
|
-
this.environment = environment;
|
|
13
|
-
this.modelClass = UserEventType;
|
|
14
|
-
this.url = 'user-event-types';
|
|
15
|
-
this.isHydra = true;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
UserEventTypeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: UserEventTypeService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
19
|
-
UserEventTypeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: UserEventTypeService, providedIn: 'root' });
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: UserEventTypeService, decorators: [{
|
|
21
|
-
type: Injectable,
|
|
22
|
-
args: [{
|
|
23
|
-
providedIn: 'root'
|
|
24
|
-
}]
|
|
25
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
26
|
-
type: Inject,
|
|
27
|
-
args: ['environment']
|
|
28
|
-
}] }]; } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC10eXBlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvdXNlci1ldmVudC91c2VyLWV2ZW50LXR5cGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBS3ZELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFpRDtJQUt6RixZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQjtRQUVqRCxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBSnZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQVBuRCxlQUFVLEdBQXlCLGFBQWEsQ0FBQztRQUNqRCxRQUFHLEdBQVcsa0JBQWtCLENBQUM7UUFDakMsWUFBTyxHQUFZLElBQUksQ0FBQztJQVF4QixDQUFDOztrSEFYVSxvQkFBb0Isa0ZBUXJCLGFBQWE7c0hBUlosb0JBQW9CLGNBRm5CLE1BQU07NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBU0ksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVXNlckV2ZW50VHlwZSBhcyBVc2VyRXZlbnRUeXBlQmFzZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscy91c2VyLWV2ZW50LXR5cGUnO1xuaW1wb3J0IHsgVXNlckV2ZW50VHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy91c2VyLWV2ZW50L3VzZXItZXZlbnQtdHlwZSc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VSZXN0U2VydmljZSB9IGZyb20gJy4uL2Jhc2UtcmVzdC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXNlckV2ZW50VHlwZVNlcnZpY2UgZXh0ZW5kcyBCYXNlUmVzdFNlcnZpY2U8VXNlckV2ZW50VHlwZUJhc2UsIFVzZXJFdmVudFR5cGU+IHtcbiAgbW9kZWxDbGFzczogdHlwZW9mIFVzZXJFdmVudFR5cGUgPSBVc2VyRXZlbnRUeXBlO1xuICB1cmw6IHN0cmluZyA9ICd1c2VyLWV2ZW50LXR5cGVzJztcbiAgaXNIeWRyYTogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCk7XG4gIH1cbn1cblxuIl19
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { combineLatest, ReplaySubject } from 'rxjs';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { ChartAccountsHeadingVehicleListEnum } from '../../db/Enums/chart-accounts-heading-vehicle-list.enum';
|
|
5
|
-
import { ChartAccountsListEnum } from '../../db/Enums/chart-accounts-list.enum';
|
|
6
|
-
import { plainToClass } from 'class-transformer';
|
|
7
|
-
import { enumToList } from '../../functions/enum-to-list';
|
|
8
|
-
import { Vehicle } from '../../models/logbook/vehicle';
|
|
9
|
-
import { VehicleClaim } from '../../models/logbook/vehicle-claim';
|
|
10
|
-
import { VehicleLogbook } from '../../models/logbook/vehicle-logbook';
|
|
11
|
-
import { AppEventTypeEnum } from '../../models/event/app-event-type.enum';
|
|
12
|
-
import { AppEvent } from '../../models/event/app-event';
|
|
13
|
-
import { FinancialYear } from '../../models/financial-year/financial-year';
|
|
14
|
-
import { Depreciation } from '../../models/depreciation/depreciation';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "@angular/common/http";
|
|
17
|
-
import * as i2 from "../transaction/transaction.service";
|
|
18
|
-
import * as i3 from "../depreciation/depreciation.service";
|
|
19
|
-
import * as i4 from "../chart-accounts/chart-accounts.service";
|
|
20
|
-
import * as i5 from "../event/event-dispatcher.service";
|
|
21
|
-
/**
|
|
22
|
-
* Service that allows to work with WorkTank operations
|
|
23
|
-
*/
|
|
24
|
-
export class WorkTankService {
|
|
25
|
-
constructor(http, transactionService, depreciationService, chartAccountsService, eventDispatcherService, environment) {
|
|
26
|
-
this.http = http;
|
|
27
|
-
this.transactionService = transactionService;
|
|
28
|
-
this.depreciationService = depreciationService;
|
|
29
|
-
this.chartAccountsService = chartAccountsService;
|
|
30
|
-
this.eventDispatcherService = eventDispatcherService;
|
|
31
|
-
this.environment = environment;
|
|
32
|
-
this.vehiclesSubject = new ReplaySubject(1);
|
|
33
|
-
this.vehicleClaimSubject = new ReplaySubject(1);
|
|
34
|
-
this.vehicleClaimRateSubject = new ReplaySubject(1);
|
|
35
|
-
this.vehicleTaxReturnSubject = new ReplaySubject(1);
|
|
36
|
-
this.incomePositionsSubject = new ReplaySubject(1);
|
|
37
|
-
}
|
|
38
|
-
getVehicles() {
|
|
39
|
-
// @TODO create backend for get logbook
|
|
40
|
-
if (!this._vehicles) {
|
|
41
|
-
this.http.get(`${this.environment.apiV2}/vehicles`)
|
|
42
|
-
.pipe(map((response) => {
|
|
43
|
-
return response.map((item) => plainToClass(Vehicle, item));
|
|
44
|
-
}))
|
|
45
|
-
.subscribe((vehicles) => {
|
|
46
|
-
this._vehicles = vehicles;
|
|
47
|
-
this.vehiclesSubject.next(vehicles);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
return this.vehiclesSubject.asObservable();
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Get vehicles claim amount
|
|
54
|
-
*/
|
|
55
|
-
getVehiclesClaim() {
|
|
56
|
-
if (!this._vehicleClaim) {
|
|
57
|
-
this.http.get(`${this.environment.apiV2}/vehicle-claims`)
|
|
58
|
-
.pipe(map((response) => {
|
|
59
|
-
// return Vehicle claim from backend or create new if it not exist
|
|
60
|
-
return response.length ? response.map((item) => plainToClass(VehicleClaim, item))[0] : plainToClass(VehicleClaim, {});
|
|
61
|
-
}))
|
|
62
|
-
.subscribe((vehicleClaim) => {
|
|
63
|
-
this._vehicleClaim = vehicleClaim;
|
|
64
|
-
this.vehicleClaimSubject.next(vehicleClaim);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return this.vehicleClaimSubject.asObservable();
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Add new vehicle claim
|
|
71
|
-
* @param claim object which should be added
|
|
72
|
-
*/
|
|
73
|
-
addVehicleClaim(claim) {
|
|
74
|
-
return this.http.post(`${this.environment.apiV2}/vehicle-claims`, claim).pipe(map((response) => {
|
|
75
|
-
this._vehicleClaim = plainToClass(VehicleClaim, response);
|
|
76
|
-
this.vehicleClaimSubject.next(this._vehicleClaim);
|
|
77
|
-
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_CREATED, null));
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get vehicles claim rate for current financial year
|
|
82
|
-
*/
|
|
83
|
-
getVehiclesClaimRate() {
|
|
84
|
-
if (!this._vehicleClaimRate) {
|
|
85
|
-
this.chartAccountsService.getChartAccountsById(ChartAccountsListEnum.KLMS_TRAVELLED_FOR_WORK)
|
|
86
|
-
.pipe(map((response) => {
|
|
87
|
-
return response.values.find((chartAccount) => chartAccount.financialYear === new FinancialYear().year).value;
|
|
88
|
-
}))
|
|
89
|
-
.subscribe((claimRate) => {
|
|
90
|
-
this._vehicleClaimRate = claimRate;
|
|
91
|
-
this.vehicleClaimRateSubject.next(this._vehicleClaimRate);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
return this.vehicleClaimRateSubject.asObservable();
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Get vehicles tax return for vehicle transactions & depreciations
|
|
98
|
-
*/
|
|
99
|
-
getVehiclesTaxReturn() {
|
|
100
|
-
if (!this._vehicleTaxReturn) {
|
|
101
|
-
combineLatest([
|
|
102
|
-
// @Todo refactor to avoid injection of another services
|
|
103
|
-
this.transactionService.get(),
|
|
104
|
-
this.depreciationService.get(),
|
|
105
|
-
this.getVehiclesClaim()
|
|
106
|
-
]).pipe(map(([transactions, depreciations, vehicleClaim]) => {
|
|
107
|
-
const chartAccountsHeadingsIds = enumToList(ChartAccountsHeadingVehicleListEnum)
|
|
108
|
-
.map((item) => item.value);
|
|
109
|
-
// get transactions & depreciations which chart accounts headings are belong to vehicle category
|
|
110
|
-
// but except KLMS transaction
|
|
111
|
-
const filteredItems = [...transactions, ...depreciations].filter((item) => {
|
|
112
|
-
var _a;
|
|
113
|
-
return chartAccountsHeadingsIds.includes((_a = item.chartAccounts.heading) === null || _a === void 0 ? void 0 : _a.id) && !item.chartAccounts.isKlmsForWork();
|
|
114
|
-
});
|
|
115
|
-
// get claim amount sum
|
|
116
|
-
return filteredItems.reduce((sum, item) =>
|
|
117
|
-
// @Todo remove item.amount negative sign when depreciations will be refactored and will have negative sign
|
|
118
|
-
sum + ((item instanceof Depreciation ? item.currentYearForecast.amount : -item.amount) * (vehicleClaim.workUsage / 100)), 0);
|
|
119
|
-
}))
|
|
120
|
-
.subscribe((taxReturn) => {
|
|
121
|
-
this._vehicleTaxReturn = taxReturn;
|
|
122
|
-
this.vehicleTaxReturnSubject.next(this._vehicleTaxReturn);
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
return this.vehicleTaxReturnSubject.asObservable();
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Update vehicle claim
|
|
129
|
-
* @param claim which should be updated
|
|
130
|
-
*
|
|
131
|
-
* @TODO alex refresh depreciation/transaction cache
|
|
132
|
-
*/
|
|
133
|
-
updateVehicleClaim(claim) {
|
|
134
|
-
return this.http.put(`${this.environment.apiV2}/vehicle-claims/${claim.id}`, claim).pipe(map((response) => {
|
|
135
|
-
const updatedVehicleClaim = plainToClass(VehicleClaim, response);
|
|
136
|
-
this._vehicleClaim = updatedVehicleClaim;
|
|
137
|
-
this.vehicleClaimSubject.next(this._vehicleClaim);
|
|
138
|
-
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_UPDATED, null));
|
|
139
|
-
return updatedVehicleClaim;
|
|
140
|
-
}));
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Add new logbook for desired vehicle
|
|
144
|
-
* @param logbook which should be added
|
|
145
|
-
* @param vehicle for which logbook object should be added
|
|
146
|
-
*/
|
|
147
|
-
addLogbook(logbook, vehicle) {
|
|
148
|
-
return this.http.post(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks`, logbook)
|
|
149
|
-
.pipe(map((response) => {
|
|
150
|
-
this._vehicles.find((v) => v.id === vehicle.id).logbook.push(response);
|
|
151
|
-
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
152
|
-
// that is why we recreate vehicles array
|
|
153
|
-
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
154
|
-
}));
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Update logbook
|
|
158
|
-
* @param logbook which should be updated
|
|
159
|
-
* @param vehicle for which logbook object should be updated
|
|
160
|
-
*/
|
|
161
|
-
updateLogbook(logbook, vehicle) {
|
|
162
|
-
return this.http.put(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks/${logbook.id}`, logbook).pipe(map((response) => {
|
|
163
|
-
const editedVehicle = this._vehicles.find((v) => v.id === vehicle.id);
|
|
164
|
-
const editedLogbookIndex = editedVehicle.logbook.findIndex((l) => l.id === logbook.id);
|
|
165
|
-
editedVehicle.logbook.splice(editedLogbookIndex, 1, plainToClass(VehicleLogbook, response));
|
|
166
|
-
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
167
|
-
// that is why we recreate vehicles array
|
|
168
|
-
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
169
|
-
}));
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Delete trip
|
|
173
|
-
* @param logbook for which trip should be deleted
|
|
174
|
-
* @param vehicle for which trip should be deleted
|
|
175
|
-
*/
|
|
176
|
-
deleteTrip(logbook, vehicle) {
|
|
177
|
-
return this.http.delete(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks/${logbook.id}`)
|
|
178
|
-
.pipe(map(() => {
|
|
179
|
-
const editedVehicle = this._vehicles.find((v) => v.id === vehicle.id);
|
|
180
|
-
const deletedLogbookIndex = editedVehicle.logbook.findIndex((l) => l.id === logbook.id);
|
|
181
|
-
editedVehicle.logbook.splice(deletedLogbookIndex, 1);
|
|
182
|
-
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
183
|
-
// that is why we recreate vehicles array
|
|
184
|
-
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
185
|
-
}));
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Add new vehicle
|
|
189
|
-
* @param vehicle which should be added
|
|
190
|
-
*/
|
|
191
|
-
addVehicle(vehicle) {
|
|
192
|
-
return this.http.post(`${this.environment.apiV2}/vehicles`, { name: vehicle.name })
|
|
193
|
-
.pipe(map((response) => {
|
|
194
|
-
this._vehicles.push(plainToClass(Vehicle, response));
|
|
195
|
-
this.vehiclesSubject.next(this._vehicles);
|
|
196
|
-
}));
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Update vehicle
|
|
200
|
-
* @param vehicle which should be updated
|
|
201
|
-
*/
|
|
202
|
-
updateVehicle(vehicle) {
|
|
203
|
-
return this.http.put(`${this.environment.apiV2}/vehicles/${vehicle.id}`, { name: vehicle.name })
|
|
204
|
-
.pipe(map((response) => {
|
|
205
|
-
const editedVehicleIndex = this._vehicles.findIndex((v) => v.id === vehicle.id);
|
|
206
|
-
this._vehicles.splice(editedVehicleIndex, 1, plainToClass(Vehicle, response));
|
|
207
|
-
this.vehiclesSubject.next(this._vehicles);
|
|
208
|
-
}));
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Delete vehicle
|
|
212
|
-
* @param vehicle which should be deleted
|
|
213
|
-
*/
|
|
214
|
-
deleteVehicle(vehicle) {
|
|
215
|
-
return this.http.delete(`${this.environment.apiV2}/vehicles/${vehicle.id}`)
|
|
216
|
-
.pipe(map(() => {
|
|
217
|
-
const deletedVehicleIndex = this._vehicles.findIndex((v) => v.id === vehicle.id);
|
|
218
|
-
this._vehicles.splice(deletedVehicleIndex, 1);
|
|
219
|
-
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
220
|
-
// that is why we recreate vehicles array
|
|
221
|
-
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
222
|
-
}));
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
WorkTankService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: WorkTankService, deps: [{ token: i1.HttpClient }, { token: i2.TransactionService }, { token: i3.DepreciationService }, { token: i4.ChartAccountsService }, { token: i5.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
226
|
-
WorkTankService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: WorkTankService, providedIn: 'root' });
|
|
227
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: WorkTankService, decorators: [{
|
|
228
|
-
type: Injectable,
|
|
229
|
-
args: [{
|
|
230
|
-
providedIn: 'root'
|
|
231
|
-
}]
|
|
232
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TransactionService }, { type: i3.DepreciationService }, { type: i4.ChartAccountsService }, { type: i5.EventDispatcherService }, { type: undefined, decorators: [{
|
|
233
|
-
type: Inject,
|
|
234
|
-
args: ['environment']
|
|
235
|
-
}] }]; } });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay10YW5rLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvd29yay93b3JrLXRhbmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDOUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7OztBQUt0RTs7R0FFRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBYTFCLFlBQ1UsSUFBZ0IsRUFDaEIsa0JBQXNDLEVBQ3RDLG1CQUF3QyxFQUN4QyxvQkFBMEMsRUFDMUMsc0JB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QUNILGFBQWEsQ0FBQyxPQUFnQjtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLGFBQWEsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3hFLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsTUFBTSxtQkFBbUIsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsd0hBQXdIO1lBQ3hILHlDQUF5QztZQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7OzZHQXZQVSxlQUFlLDJMQW1CaEIsYUFBYTtpSEFuQlosZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQW9CSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzSGVhZGluZ1ZlaGljbGVMaXN0RW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL2NoYXJ0LWFjY291bnRzLWhlYWRpbmctdmVoaWNsZS1saXN0LmVudW0nO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0xpc3RFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvY2hhcnQtYWNjb3VudHMtbGlzdC5lbnVtJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgZW51bVRvTGlzdCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9lbnVtLXRvLWxpc3QnO1xuaW1wb3J0IHsgVmVoaWNsZSB9IGZyb20gJy4uLy4uL21vZGVscy9sb2dib29rL3ZlaGljbGUnO1xuaW1wb3J0IHsgVmVoaWNsZUNsYWltIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvZ2Jvb2svdmVoaWNsZS1jbGFpbSc7XG5pbXBvcnQgeyBWZWhpY2xlTG9nYm9vayB9IGZyb20gJy4uLy4uL21vZGVscy9sb2dib29rL3ZlaGljbGUtbG9nYm9vayc7XG5pbXBvcnQgeyBJbmNvbWVQb3NpdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9pbmNvbWUtcG9zaXRpb24vaW5jb21lLXBvc2l0aW9uJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBBcHBFdmVudCB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQnO1xuaW1wb3J0IHsgRmluYW5jaWFsWWVhciB9IGZyb20gJy4uLy4uL21vZGVscy9maW5hbmNpYWwteWVhci9maW5hbmNpYWwteWVhcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBEZXByZWNpYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbic7XG5pbXBvcnQgeyBEZXByZWNpYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhcnQtYWNjb3VudHMvY2hhcnQtYWNjb3VudHMuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgYWxsb3dzIHRvIHdvcmsgd2l0aCBXb3JrVGFuayBvcGVyYXRpb25zXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtUYW5rU2VydmljZSB7XG4gIC8vIEBUT0RPIHJlZmFjdG9yIGFuZCBtYXliZSBicmVhayB0byBzZXBhcmF0ZWQgc2VydmljZXNcbiAgX3ZlaGljbGVzOiBWZWhpY2xlW107XG4gIHZlaGljbGVzU3ViamVjdDogUmVwbGF5U3ViamVjdDxWZWhpY2xlW10+ID0gbmV3IFJlcGxheVN1YmplY3Q8VmVoaWNsZVtdPigxKTtcbiAgX3ZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltO1xuICB2ZWhpY2xlQ2xhaW1TdWJqZWN0OiBSZXBsYXlTdWJqZWN0PFZlaGljbGVDbGFpbT4gPSBuZXcgUmVwbGF5U3ViamVjdDxWZWhpY2xlQ2xhaW0+KDEpO1xuICBfdmVoaWNsZUNsYWltUmF0ZTogbnVtYmVyO1xuICB2ZWhpY2xlQ2xhaW1SYXRlU3ViamVjdDogUmVwbGF5U3ViamVjdDxudW1iZXI+ID0gbmV3IFJlcGxheVN1YmplY3Q8bnVtYmVyPigxKTtcbiAgX3ZlaGljbGVUYXhSZXR1cm46IG51bWJlcjtcbiAgdmVoaWNsZVRheFJldHVyblN1YmplY3Q6IFJlcGxheVN1YmplY3Q8bnVtYmVyPiA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIF9pbmNvbWVQb3NpdGlvbnM6IEluY29tZVBvc2l0aW9uW107XG4gIGluY29tZVBvc2l0aW9uc1N1YmplY3Q6IFJlcGxheVN1YmplY3Q8SW5jb21lUG9zaXRpb25bXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxJbmNvbWVQb3NpdGlvbltdPigxKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGRlcHJlY2lhdGlvblNlcnZpY2U6IERlcHJlY2lhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFydEFjY291bnRzU2VydmljZTogQ2hhcnRBY2NvdW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICB9XG5cbiAgZ2V0VmVoaWNsZXMoKTogT2JzZXJ2YWJsZTxWZWhpY2xlW10+IHtcbiAgICAvLyBAVE9ETyBjcmVhdGUgYmFja2VuZCBmb3IgZ2V0IGxvZ2Jvb2tcbiAgICBpZiAoIXRoaXMuX3ZlaGljbGVzKSB7XG4gICAgICB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzYClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UubWFwKChpdGVtOiBhbnkpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlLCBpdGVtKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCh2ZWhpY2xlczogVmVoaWNsZVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZXMgPSB2ZWhpY2xlcztcbiAgICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHZlaGljbGVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmVoaWNsZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB2ZWhpY2xlcyBjbGFpbSBhbW91bnRcbiAgICovXG4gIGdldFZlaGljbGVzQ2xhaW0oKTogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW0+IHtcbiAgICBpZiAoIXRoaXMuX3ZlaGljbGVDbGFpbSkge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlLWNsYWltc2ApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gcmV0dXJuIFZlaGljbGUgY2xhaW0gZnJvbSBiYWNrZW5kIG9yIGNyZWF0ZSBuZXcgaWYgaXQgbm90IGV4aXN0XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UubGVuZ3RoID8gcmVzcG9uc2UubWFwKChpdGVtOiBhbnkpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlQ2xhaW0sIGl0ZW0pKVswXSA6IHBsYWluVG9DbGFzcyhWZWhpY2xlQ2xhaW0sIHt9KTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZUNsYWltID0gdmVoaWNsZUNsYWltO1xuICAgICAgICAgIHRoaXMudmVoaWNsZUNsYWltU3ViamVjdC5uZXh0KHZlaGljbGVDbGFpbSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZlaGljbGVDbGFpbVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG5ldyB2ZWhpY2xlIGNsYWltXG4gICAqIEBwYXJhbSBjbGFpbSBvYmplY3Qgd2hpY2ggc2hvdWxkIGJlIGFkZGVkXG4gICAqL1xuICBhZGRWZWhpY2xlQ2xhaW0oY2xhaW06IFZlaGljbGVDbGFpbSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGUtY2xhaW1zYCwgY2xhaW0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5fdmVoaWNsZUNsYWltID0gcGxhaW5Ub0NsYXNzKFZlaGljbGVDbGFpbSwgcmVzcG9uc2UpO1xuICAgICAgICB0aGlzLnZlaGljbGVDbGFpbVN1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlQ2xhaW0pO1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELCBudWxsKSk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHZlaGljbGVzIGNsYWltIHJhdGUgZm9yIGN1cnJlbnQgZmluYW5jaWFsIHllYXJcbiAgICovXG4gIGdldFZlaGljbGVzQ2xhaW1SYXRlKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgaWYgKCF0aGlzLl92ZWhpY2xlQ2xhaW1SYXRlKSB7XG4gICAgICB0aGlzLmNoYXJ0QWNjb3VudHNTZXJ2aWNlLmdldENoYXJ0QWNjb3VudHNCeUlkKENoYXJ0QWNjb3VudHNMaXN0RW51bS5LTE1TX1RSQVZFTExFRF9GT1JfV09SSylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UudmFsdWVzLmZpbmQoKGNoYXJ0QWNjb3VudDogYW55KSA9PiBjaGFydEFjY291bnQuZmluYW5jaWFsWWVhciA9PT0gbmV3IEZpbmFuY2lhbFllYXIoKS55ZWFyKS52YWx1ZTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGNsYWltUmF0ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZUNsYWltUmF0ZSA9IGNsYWltUmF0ZTtcbiAgICAgICAgICB0aGlzLnZlaGljbGVDbGFpbVJhdGVTdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZUNsYWltUmF0ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZlaGljbGVDbGFpbVJhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB2ZWhpY2xlcyB0YXggcmV0dXJuIGZvciB2ZWhpY2xlIHRyYW5zYWN0aW9ucyAmIGRlcHJlY2lhdGlvbnNcbiAgICovXG4gIGdldFZlaGljbGVzVGF4UmV0dXJuKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgaWYgKCF0aGlzLl92ZWhpY2xlVGF4UmV0dXJuKSB7XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgLy8gQFRvZG8gcmVmYWN0b3IgdG8gYXZvaWQgaW5qZWN0aW9uIG9mIGFub3RoZXIgc2VydmljZXNcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0KCksXG4gICAgICAgIHRoaXMuZGVwcmVjaWF0aW9uU2VydmljZS5nZXQoKSxcbiAgICAgICAgdGhpcy5nZXRWZWhpY2xlc0NsYWltKClcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgbWFwKChbdHJhbnNhY3Rpb25zLCBkZXByZWNpYXRpb25zLCB2ZWhpY2xlQ2xhaW1dOiBbVHJhbnNhY3Rpb25bXSwgRGVwcmVjaWF0aW9uW10sIFZlaGljbGVDbGFpbV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXJ0QWNjb3VudHNIZWFkaW5nc0lkczogbnVtYmVyW10gPSBlbnVtVG9MaXN0KENoYXJ0QWNjb3VudHNIZWFkaW5nVmVoaWNsZUxpc3RFbnVtKVxuICAgICAgICAgICAgICAubWFwKChpdGVtOiB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBudW1iZXIgfSkgPT4gaXRlbS52YWx1ZSk7XG4gICAgICAgICAgICAvLyBnZXQgdHJhbnNhY3Rpb25zICYgZGVwcmVjaWF0aW9ucyB3aGljaCBjaGFydCBhY2NvdW50cyBoZWFkaW5ncyBhcmUgYmVsb25nIHRvIHZlaGljbGUgY2F0ZWdvcnlcbiAgICAgICAgICAgIC8vIGJ1dCBleGNlcHQgS0xNUyB0cmFuc2FjdGlvblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRJdGVtczogQXJyYXk8VHJhbnNhY3Rpb24gfCBEZXByZWNpYXRpb24+ID0gWy4uLnRyYW5zYWN0aW9ucywgLi4uZGVwcmVjaWF0aW9uc10uZmlsdGVyKChpdGVtOiBUcmFuc2FjdGlvbiB8IERlcHJlY2lhdGlvbikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gY2hhcnRBY2NvdW50c0hlYWRpbmdzSWRzLmluY2x1ZGVzKGl0ZW0uY2hhcnRBY2NvdW50cy5oZWFkaW5nPy5pZCkgJiYgIWl0ZW0uY2hhcnRBY2NvdW50cy5pc0tsbXNGb3JXb3JrKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gZ2V0IGNsYWltIGFtb3VudCBzdW1cbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZEl0ZW1zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGl0ZW06IFRyYW5zYWN0aW9uIHwgRGVwcmVjaWF0aW9uKSA9PlxuICAgICAgICAgICAgICAvLyBAVG9kbyByZW1vdmUgaXRlbS5hbW91bnQgbmVnYXRpdmUgc2lnbiB3aGVuIGRlcHJlY2lhdGlvbnMgd2lsbCBiZSByZWZhY3RvcmVkIGFuZCB3aWxsIGhhdmUgbmVnYXRpdmUgc2lnblxuICAgICAgICAgICAgICBzdW0gKyAoKGl0ZW0gaW5zdGFuY2VvZiBEZXByZWNpYXRpb24gPyBpdGVtLmN1cnJlbnRZZWFyRm9yZWNhc3QuYW1vdW50IDogLWl0ZW0uYW1vdW50KSAqICh2ZWhpY2xlQ2xhaW0ud29ya1VzYWdlIC8gMTAwKSksIDApO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHRheFJldHVybjogbnVtYmVyKSA9PiB7XG4gICAgICAgIHRoaXMuX3ZlaGljbGVUYXhSZXR1cm4gPSB0YXhSZXR1cm47XG4gICAgICAgIHRoaXMudmVoaWNsZVRheFJldHVyblN1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlVGF4UmV0dXJuKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZlaGljbGVUYXhSZXR1cm5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2ZWhpY2xlIGNsYWltXG4gICAqIEBwYXJhbSBjbGFpbSB3aGljaCBzaG91bGQgYmUgdXBkYXRlZFxuICAgKlxuICAgKiBAVE9ETyBhbGV4IHJlZnJlc2ggZGVwcmVjaWF0aW9uL3RyYW5zYWN0aW9uIGNhY2hlXG4gICAqL1xuICB1cGRhdGVWZWhpY2xlQ2xhaW0oY2xhaW06IFZlaGljbGVDbGFpbSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZS1jbGFpbXMvJHtjbGFpbS5pZH1gLCBjbGFpbSkucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkVmVoaWNsZUNsYWltOiBWZWhpY2xlQ2xhaW0gPSBwbGFpblRvQ2xhc3MoVmVoaWNsZUNsYWltLCByZXNwb25zZSk7XG4gICAgICAgIHRoaXMuX3ZlaGljbGVDbGFpbSA9IHVwZGF0ZWRWZWhpY2xlQ2xhaW07XG4gICAgICAgIHRoaXMudmVoaWNsZUNsYWltU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVDbGFpbSk7XG5cbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fVVBEQVRFRCwgbnVsbCkpO1xuXG4gICAgICAgIHJldHVybiB1cGRhdGVkVmVoaWNsZUNsYWltO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBuZXcgbG9nYm9vayBmb3IgZGVzaXJlZCB2ZWhpY2xlXG4gICAqIEBwYXJhbSBsb2dib29rIHdoaWNoIHNob3VsZCBiZSBhZGRlZFxuICAgKiBAcGFyYW0gdmVoaWNsZSBmb3Igd2hpY2ggbG9nYm9vayBvYmplY3Qgc2hvdWxkIGJlIGFkZGVkXG4gICAqL1xuICBhZGRMb2dib29rKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rLCB2ZWhpY2xlOiBWZWhpY2xlKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzLyR7dmVoaWNsZS5pZH0vbG9nYm9va3NgLCBsb2dib29rKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZlaGljbGVzLmZpbmQoKHY6IFZlaGljbGUpID0+IHYuaWQgPT09IHZlaGljbGUuaWQpLmxvZ2Jvb2sucHVzaChyZXNwb25zZSk7XG4gICAgICAgICAgLy8gd2UgdXBkYXRlIG5lc3RlZCBsb2dib29rIG9iamVjdCBpbnNpZGUgdmVoaWNsZXMgbGlzdC4gU28gbGlzdCBpcyBub3QgY2hhbmdlZCBhbmQgbmV4dCBub3QgZW1pdCBzdWJzY3JpcHRpb25zIHVwZGF0ZXMuXG4gICAgICAgICAgLy8gdGhhdCBpcyB3aHkgd2UgcmVjcmVhdGUgdmVoaWNsZXMgYXJyYXlcbiAgICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVzLm1hcCgoaXRlbTogb2JqZWN0KSA9PiBwbGFpblRvQ2xhc3MoVmVoaWNsZSwgaXRlbSkpKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGxvZ2Jvb2tcbiAgICogQHBhcmFtIGxvZ2Jvb2sgd2hpY2ggc2hvdWxkIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIHZlaGljbGUgZm9yIHdoaWNoIGxvZ2Jvb2sgb2JqZWN0IHNob3VsZCBiZSB1cGRhdGVkXG4gICAqL1xuICB1cGRhdGVMb2dib29rKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rLCB2ZWhpY2xlOiBWZWhpY2xlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlcy8ke3ZlaGljbGUuaWR9L2xvZ2Jvb2tzLyR7bG9nYm9vay5pZH1gLCBsb2dib29rKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGVkaXRlZFZlaGljbGU6IFZlaGljbGUgPSB0aGlzLl92ZWhpY2xlcy5maW5kKCh2OiBWZWhpY2xlKSA9PiB2LmlkID09PSB2ZWhpY2xlLmlkKTtcbiAgICAgICAgY29uc3QgZWRpdGVkTG9nYm9va0luZGV4OiBudW1iZXIgPSBlZGl0ZWRWZWhpY2xlLmxvZ2Jvb2suZmluZEluZGV4KChsOiBWZWhpY2xlTG9nYm9vaykgPT4gbC5pZCA9PT0gbG9nYm9vay5pZCk7XG4gICAgICAgIGVkaXRlZFZlaGljbGUubG9nYm9vay5zcGxpY2UoZWRpdGVkTG9nYm9va0luZGV4LCAxLCBwbGFpblRvQ2xhc3MoVmVoaWNsZUxvZ2Jvb2ssIHJlc3BvbnNlKSk7XG4gICAgICAgIC8vIHdlIHVwZGF0ZSBuZXN0ZWQgbG9nYm9vayBvYmplY3QgaW5zaWRlIHZlaGljbGVzIGxpc3QuIFNvIGxpc3QgaXMgbm90IGNoYW5nZWQgYW5kIG5leHQgbm90IGVtaXQgc3Vic2NyaXB0aW9ucyB1cGRhdGVzLlxuICAgICAgICAvLyB0aGF0IGlzIHdoeSB3ZSByZWNyZWF0ZSB2ZWhpY2xlcyBhcnJheVxuICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVzLm1hcCgoaXRlbTogb2JqZWN0KSA9PiBwbGFpblRvQ2xhc3MoVmVoaWNsZSwgaXRlbSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgdHJpcFxuICAgKiBAcGFyYW0gbG9nYm9vayBmb3Igd2hpY2ggdHJpcCBzaG91bGQgYmUgZGVsZXRlZFxuICAgKiBAcGFyYW0gdmVoaWNsZSBmb3Igd2hpY2ggdHJpcCBzaG91bGQgYmUgZGVsZXRlZFxuICAgKi9cbiAgZGVsZXRlVHJpcChsb2dib29rOiBWZWhpY2xlTG9nYm9vaywgdmVoaWNsZTogVmVoaWNsZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZXMvJHt2ZWhpY2xlLmlkfS9sb2dib29rcy8ke2xvZ2Jvb2suaWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVkaXRlZFZlaGljbGU6IFZlaGljbGUgPSB0aGlzLl92ZWhpY2xlcy5maW5kKCh2OiBWZWhpY2xlKSA9PiB2LmlkID09PSB2ZWhpY2xlLmlkKTtcbiAgICAgICAgICBjb25zdCBkZWxldGVkTG9nYm9va0luZGV4OiBudW1iZXIgPSBlZGl0ZWRWZWhpY2xlLmxvZ2Jvb2suZmluZEluZGV4KChsOiBWZWhpY2xlTG9nYm9vaykgPT4gbC5pZCA9PT0gbG9nYm9vay5pZCk7XG4gICAgICAgICAgZWRpdGVkVmVoaWNsZS5sb2dib29rLnNwbGljZShkZWxldGVkTG9nYm9va0luZGV4LCAxKTtcbiAgICAgICAgICAvLyB3ZSB1cGRhdGUgbmVzdGVkIGxvZ2Jvb2sgb2JqZWN0IGluc2lkZSB2ZWhpY2xlcyBsaXN0LiBTbyBsaXN0IGlzIG5vdCBjaGFuZ2VkIGFuZCBuZXh0IG5vdCBlbWl0IHN1YnNjcmlwdGlvbnMgdXBkYXRlcy5cbiAgICAgICAgICAvLyB0aGF0IGlzIHdoeSB3ZSByZWNyZWF0ZSB2ZWhpY2xlcyBhcnJheVxuICAgICAgICAgIHRoaXMudmVoaWNsZXNTdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZXMubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlLCBpdGVtKSkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbmV3IHZlaGljbGVcbiAgICogQHBhcmFtIHZlaGljbGUgd2hpY2ggc2hvdWxkIGJlIGFkZGVkXG4gICAqL1xuICBhZGRWZWhpY2xlKHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlc2AsIHtuYW1lOiB2ZWhpY2xlLm5hbWV9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZlaGljbGVzLnB1c2gocGxhaW5Ub0NsYXNzKFZlaGljbGUsIHJlc3BvbnNlKSk7XG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcyk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2ZWhpY2xlXG4gICAqIEBwYXJhbSB2ZWhpY2xlIHdoaWNoIHNob3VsZCBiZSB1cGRhdGVkXG4gICAqL1xuICB1cGRhdGVWZWhpY2xlKHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzLyR7dmVoaWNsZS5pZH1gLCB7bmFtZTogdmVoaWNsZS5uYW1lfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGl0ZWRWZWhpY2xlSW5kZXg6IG51bWJlciA9IHRoaXMuX3ZlaGljbGVzLmZpbmRJbmRleCgodjogVmVoaWNsZSkgPT4gdi5pZCA9PT0gdmVoaWNsZS5pZCk7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZXMuc3BsaWNlKGVkaXRlZFZlaGljbGVJbmRleCwgMSwgcGxhaW5Ub0NsYXNzKFZlaGljbGUsIHJlc3BvbnNlKSk7XG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcyk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB2ZWhpY2xlXG4gICAqIEBwYXJhbSB2ZWhpY2xlIHdoaWNoIHNob3VsZCBiZSBkZWxldGVkXG4gICAqL1xuICBkZWxldGVWZWhpY2xlKHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlcy8ke3ZlaGljbGUuaWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlbGV0ZWRWZWhpY2xlSW5kZXg6IG51bWJlciA9IHRoaXMuX3ZlaGljbGVzLmZpbmRJbmRleCgodjogVmVoaWNsZSkgPT4gdi5pZCA9PT0gdmVoaWNsZS5pZCk7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZXMuc3BsaWNlKGRlbGV0ZWRWZWhpY2xlSW5kZXgsIDEpO1xuICAgICAgICAgIC8vIHdlIHVwZGF0ZSBuZXN0ZWQgbG9nYm9vayBvYmplY3QgaW5zaWRlIHZlaGljbGVzIGxpc3QuIFNvIGxpc3QgaXMgbm90IGNoYW5nZWQgYW5kIG5leHQgbm90IGVtaXQgc3Vic2NyaXB0aW9ucyB1cGRhdGVzLlxuICAgICAgICAgIC8vIHRoYXQgaXMgd2h5IHdlIHJlY3JlYXRlIHZlaGljbGVzIGFycmF5XG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcy5tYXAoKGl0ZW06IG9iamVjdCkgPT4gcGxhaW5Ub0NsYXNzKFZlaGljbGUsIGl0ZW0pKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ServiceNotification as NotificationBase } from '../../db/Models/service-notification';
|
|
2
|
-
import { Notification } from '../../models/notification/notification';
|
|
3
|
-
import { HttpClient } from '@angular/common/http';
|
|
4
|
-
import { IEventListener } from '../../interfaces/event-listener.interface';
|
|
5
|
-
import { BaseRestService } from '../base-rest.service';
|
|
6
|
-
import { EventDispatcherService } from '../event/event-dispatcher.service';
|
|
7
|
-
import { SseService } from '../event/sse.service';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
/**
|
|
10
|
-
* Service to handle service notifications logic
|
|
11
|
-
*/
|
|
12
|
-
export declare class NotificationService extends BaseRestService<NotificationBase, Notification> implements IEventListener {
|
|
13
|
-
protected http: HttpClient;
|
|
14
|
-
protected eventDispatcherService: EventDispatcherService;
|
|
15
|
-
protected environment: any;
|
|
16
|
-
private sseService;
|
|
17
|
-
modelClass: typeof Notification;
|
|
18
|
-
url: string;
|
|
19
|
-
isHydra: boolean;
|
|
20
|
-
constructor(http: HttpClient, eventDispatcherService: EventDispatcherService, environment: any, sseService: SseService);
|
|
21
|
-
/**
|
|
22
|
-
* SSE and Event Dispatcher Services listeners
|
|
23
|
-
*/
|
|
24
|
-
listenEvents(): void;
|
|
25
|
-
/**
|
|
26
|
-
* subscribe to new chat messages
|
|
27
|
-
*/
|
|
28
|
-
private listenNotifications;
|
|
29
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
|
|
30
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
|
|
31
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PropertySale as PropertySaleBase } from '../../../db/Models/property/property-sale/property-sale';
|
|
2
|
-
import { PropertySale } from '../../../models/property/property-sale/property-sale';
|
|
3
|
-
import { BaseRestService } from '../../base-rest.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class PropertySaleService extends BaseRestService<PropertySaleBase, PropertySale> {
|
|
6
|
-
modelClass: typeof PropertySale;
|
|
7
|
-
url: string;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PropertySaleService, never>;
|
|
9
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<PropertySaleService>;
|
|
10
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { BaseRestService } from '../../../base-rest.service';
|
|
2
|
-
import { TaxExemption as BaseTaxExemption } from '../../../../db/Models/property/property-sale/tax-exemption';
|
|
3
|
-
import { TaxExemption } from '../../../../models/property/property-sale/tax-exemption';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class TaxExemptionService extends BaseRestService<BaseTaxExemption, TaxExemption> {
|
|
6
|
-
modelClass: typeof TaxExemption;
|
|
7
|
-
url: string;
|
|
8
|
-
isHydra: boolean;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<TaxExemptionService, never>;
|
|
10
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<TaxExemptionService>;
|
|
11
|
-
}
|