taxtank-core 0.8.3 → 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 +145 -140
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/collections/collection.js +2 -2
- package/esm2015/lib/collections/depreciation.collection.js +3 -3
- package/esm2015/lib/collections/tax-summary/report-item.collection.js +141 -0
- package/esm2015/lib/db/Models/transaction-base.js +2 -1
- package/esm2015/lib/models/property/property.js +7 -4
- package/esm2015/lib/models/tax-summary/report-item-details.js +9 -0
- package/esm2015/lib/models/tax-summary/report-item.js +15 -0
- package/esm2015/lib/models/tax-summary/tax-summary-section.js +5 -5
- 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 +51 -51
- package/fesm2015/taxtank-core.js +67 -62
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/collections/collection.d.ts +1 -1
- package/lib/collections/{tax-return-category-item.collection.d.ts → tax-summary/report-item.collection.d.ts} +5 -5
- package/lib/models/property/property.d.ts +1 -0
- package/lib/models/tax-summary/{tax-return-category-item-details.d.ts → report-item-details.d.ts} +2 -2
- package/lib/models/tax-summary/{tax-return-category-item.d.ts → report-item.d.ts} +4 -4
- package/lib/models/tax-summary/tax-summary-section.d.ts +2 -2
- 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 +50 -50
- package/esm2015/lib/collections/tax-return-category-item.collection.js +0 -141
- package/esm2015/lib/models/tax-summary/tax-return-category-item-details.js +0 -9
- package/esm2015/lib/models/tax-summary/tax-return-category-item.js +0 -15
- 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
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { RestService } from '../rest/rest.service';
|
|
3
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
4
|
+
import { replace } from '../../../functions/array';
|
|
5
|
+
import { plainToClass } from 'class-transformer';
|
|
6
|
+
import { Chat } from '../../../models/chat/chat';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common/http";
|
|
9
|
+
import * as i2 from "../../event/event-dispatcher.service";
|
|
10
|
+
import * as i3 from "../../event/sse.service";
|
|
11
|
+
/**
|
|
12
|
+
* Service for work with chats
|
|
13
|
+
*/
|
|
14
|
+
export class ChatService extends RestService {
|
|
15
|
+
constructor(http, eventDispatcherService, environment, sseService) {
|
|
16
|
+
super(http, eventDispatcherService, environment);
|
|
17
|
+
this.http = http;
|
|
18
|
+
this.eventDispatcherService = eventDispatcherService;
|
|
19
|
+
this.environment = environment;
|
|
20
|
+
this.sseService = sseService;
|
|
21
|
+
this.modelClass = Chat;
|
|
22
|
+
this.url = 'chats';
|
|
23
|
+
this.isHydra = true;
|
|
24
|
+
this.listenEvents();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* SSE and Event Dispatcher Services listeners
|
|
28
|
+
*/
|
|
29
|
+
listenEvents() {
|
|
30
|
+
this.listenChats();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Listen chats events
|
|
34
|
+
*/
|
|
35
|
+
listenChats() {
|
|
36
|
+
this.sseService.on(`chats`).subscribe((chatBase) => {
|
|
37
|
+
let cache = cloneDeep(this.cache);
|
|
38
|
+
// chat instance from event
|
|
39
|
+
const eventChat = plainToClass(Chat, chatBase);
|
|
40
|
+
// chat instance from cache
|
|
41
|
+
const cachedChat = cache.find((chat) => chat.id === eventChat.id);
|
|
42
|
+
switch (true) {
|
|
43
|
+
// add new chat
|
|
44
|
+
case (!cachedChat):
|
|
45
|
+
cache.push(eventChat);
|
|
46
|
+
break;
|
|
47
|
+
// remove deactivated chat
|
|
48
|
+
case !eventChat.isActive():
|
|
49
|
+
cache = cache.filter((chat) => chat.id !== eventChat.id);
|
|
50
|
+
break;
|
|
51
|
+
// update chat with new firm (reassign)
|
|
52
|
+
case eventChat.employee.id !== cachedChat.employee.id:
|
|
53
|
+
replace(cache, eventChat);
|
|
54
|
+
break;
|
|
55
|
+
// @TODO typing works bad with mat-tabs on user-area. Need to refactor typing functionality
|
|
56
|
+
// update cache with typing user
|
|
57
|
+
// default:
|
|
58
|
+
// cachedChat.typingUsers.push(new User(eventChat.typingUser));
|
|
59
|
+
// replace(cache, _.clone(cachedChat));
|
|
60
|
+
}
|
|
61
|
+
this.cache = cache;
|
|
62
|
+
this.updateCache();
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
ChatService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ChatService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.SseService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
67
|
+
ChatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ChatService, providedIn: 'root' });
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ChatService, decorators: [{
|
|
69
|
+
type: Injectable,
|
|
70
|
+
args: [{
|
|
71
|
+
providedIn: 'root'
|
|
72
|
+
}]
|
|
73
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
74
|
+
type: Inject,
|
|
75
|
+
args: ['environment']
|
|
76
|
+
}] }, { type: i3.SseService }]; } });
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvY2hhdC9jaGF0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sU0FBUyxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUdqRDs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFZLFNBQVEsV0FBMkI7SUFLMUQsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0IsRUFDekMsVUFBc0I7UUFFOUIsS0FBSyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUx2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVJoQyxlQUFVLEdBQWdCLElBQUksQ0FBQztRQUMvQixRQUFHLEdBQVcsT0FBTyxDQUFDO1FBQ3RCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFTdEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWtCLEVBQVEsRUFBRTtZQUNqRSxJQUFJLEtBQUssR0FBVyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLDJCQUEyQjtZQUMzQixNQUFNLFNBQVMsR0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELDJCQUEyQjtZQUMzQixNQUFNLFVBQVUsR0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBVSxFQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV2RixRQUFRLElBQUksRUFBRTtnQkFDWixlQUFlO2dCQUNmLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQztvQkFDaEIsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDdEIsTUFBTTtnQkFFUiwwQkFBMEI7Z0JBQzFCLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO29CQUN4QixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVUsRUFBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3hFLE1BQU07Z0JBRVIsdUNBQXVDO2dCQUN2QyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDbkQsT0FBTyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDMUIsTUFBTTtnQkFFUiwyRkFBMkY7Z0JBQzNGLGdDQUFnQztnQkFDaEMsV0FBVztnQkFDVCwrREFBK0Q7Z0JBQy9ELHVDQUF1QzthQUMxQztZQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3lHQTNEVSxXQUFXLGtGQVFaLGFBQWE7NkdBUlosV0FBVyxjQUZWLE1BQU07NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVNJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhdCBhcyBDaGF0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2RiL01vZGVscy9jaGF0JztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBTc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZXZlbnQvc3NlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZXZlbnQtbGlzdGVuZXIuaW50ZXJmYWNlJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgeyByZXBsYWNlIH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IENoYXQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2hhdC9jaGF0JztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHdvcmsgd2l0aCBjaGF0c1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDaGF0U2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPENoYXRCYXNlLCBDaGF0PiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgbW9kZWxDbGFzczogdHlwZW9mIENoYXQgPSBDaGF0O1xuICB1cmw6IHN0cmluZyA9ICdjaGF0cyc7XG4gIGlzSHlkcmE6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnksXG4gICAgcHJpdmF0ZSBzc2VTZXJ2aWNlOiBTc2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNTRSBhbmQgRXZlbnQgRGlzcGF0Y2hlciBTZXJ2aWNlcyBsaXN0ZW5lcnNcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbkNoYXRzKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGNoYXRzIGV2ZW50c1xuICAgKi9cbiAgbGlzdGVuQ2hhdHMoKTogdm9pZCB7XG4gICAgdGhpcy5zc2VTZXJ2aWNlLm9uKGBjaGF0c2ApLnN1YnNjcmliZSgoY2hhdEJhc2U6IENoYXRCYXNlKTogdm9pZCA9PiB7XG4gICAgICBsZXQgY2FjaGU6IENoYXRbXSA9IGNsb25lRGVlcCh0aGlzLmNhY2hlKTtcbiAgICAgIC8vIGNoYXQgaW5zdGFuY2UgZnJvbSBldmVudFxuICAgICAgY29uc3QgZXZlbnRDaGF0OiBDaGF0ID0gcGxhaW5Ub0NsYXNzKENoYXQsIGNoYXRCYXNlKTtcbiAgICAgIC8vIGNoYXQgaW5zdGFuY2UgZnJvbSBjYWNoZVxuICAgICAgY29uc3QgY2FjaGVkQ2hhdDogQ2hhdCA9IGNhY2hlLmZpbmQoKGNoYXQ6IENoYXQpOiBib29sZWFuID0+IGNoYXQuaWQgPT09IGV2ZW50Q2hhdC5pZCk7XG5cbiAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAvLyBhZGQgbmV3IGNoYXRcbiAgICAgICAgY2FzZSAoIWNhY2hlZENoYXQpOlxuICAgICAgICAgIGNhY2hlLnB1c2goZXZlbnRDaGF0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvLyByZW1vdmUgZGVhY3RpdmF0ZWQgY2hhdFxuICAgICAgICBjYXNlICFldmVudENoYXQuaXNBY3RpdmUoKTpcbiAgICAgICAgICBjYWNoZSA9IGNhY2hlLmZpbHRlcigoY2hhdDogQ2hhdCk6IGJvb2xlYW4gPT4gY2hhdC5pZCAhPT0gZXZlbnRDaGF0LmlkKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvLyB1cGRhdGUgY2hhdCB3aXRoIG5ldyBmaXJtIChyZWFzc2lnbilcbiAgICAgICAgY2FzZSBldmVudENoYXQuZW1wbG95ZWUuaWQgIT09IGNhY2hlZENoYXQuZW1wbG95ZWUuaWQ6XG4gICAgICAgICAgcmVwbGFjZShjYWNoZSwgZXZlbnRDaGF0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvLyBAVE9ETyB0eXBpbmcgd29ya3MgYmFkIHdpdGggbWF0LXRhYnMgb24gdXNlci1hcmVhLiBOZWVkIHRvIHJlZmFjdG9yIHR5cGluZyBmdW5jdGlvbmFsaXR5XG4gICAgICAgIC8vIHVwZGF0ZSBjYWNoZSB3aXRoIHR5cGluZyB1c2VyXG4gICAgICAgIC8vIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gY2FjaGVkQ2hhdC50eXBpbmdVc2Vycy5wdXNoKG5ldyBVc2VyKGV2ZW50Q2hhdC50eXBpbmdVc2VyKSk7XG4gICAgICAgICAgLy8gcmVwbGFjZShjYWNoZSwgXy5jbG9uZShjYWNoZWRDaGF0KSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import _ from 'lodash';
|
|
3
|
+
import { replace } from '../../../../functions/array';
|
|
4
|
+
import { plainToClass } from 'class-transformer';
|
|
5
|
+
import { Message } from '../../../../models/chat/message';
|
|
6
|
+
import { RestService } from '../../rest/rest.service';
|
|
7
|
+
import { AppEvent } from '../../../../models/event/app-event';
|
|
8
|
+
import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common/http";
|
|
11
|
+
import * as i2 from "../../../event/event-dispatcher.service";
|
|
12
|
+
import * as i3 from "../../../event/sse.service";
|
|
13
|
+
/**
|
|
14
|
+
* Service for work with messages
|
|
15
|
+
*/
|
|
16
|
+
export class MessageService extends RestService {
|
|
17
|
+
constructor(http, eventDispatcherService, environment, sseService) {
|
|
18
|
+
super(http, eventDispatcherService, environment);
|
|
19
|
+
this.http = http;
|
|
20
|
+
this.eventDispatcherService = eventDispatcherService;
|
|
21
|
+
this.environment = environment;
|
|
22
|
+
this.sseService = sseService;
|
|
23
|
+
this.modelClass = Message;
|
|
24
|
+
this.url = 'messages';
|
|
25
|
+
this.isHydra = true;
|
|
26
|
+
this.listenEvents();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* SSE and Event Dispatcher Services listeners
|
|
30
|
+
*/
|
|
31
|
+
listenEvents() {
|
|
32
|
+
this.listenMessages();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* subscribe to new chat messages
|
|
36
|
+
*/
|
|
37
|
+
listenMessages() {
|
|
38
|
+
this.sseService.on(`messages`).subscribe((messageBase) => {
|
|
39
|
+
const message = plainToClass(Message, messageBase);
|
|
40
|
+
const cache = _.clone(this.cache);
|
|
41
|
+
// update existing message if read and add new message if not read
|
|
42
|
+
if (message.isRead()) {
|
|
43
|
+
replace(cache, message);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
cache.push(message);
|
|
47
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.MESSAGE_CREATED, message));
|
|
48
|
+
}
|
|
49
|
+
this.cache = cache;
|
|
50
|
+
this.cacheSubject.next(this.cache);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MessageService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.SseService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
55
|
+
MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MessageService, providedIn: 'root' });
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MessageService, decorators: [{
|
|
57
|
+
type: Injectable,
|
|
58
|
+
args: [{
|
|
59
|
+
providedIn: 'root'
|
|
60
|
+
}]
|
|
61
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
62
|
+
type: Inject,
|
|
63
|
+
args: ['environment']
|
|
64
|
+
}] }, { type: i3.SseService }]; } });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvY2hhdC9tZXNzYWdlL21lc3NhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUluRCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7QUFFaEY7O0dBRUc7QUFJSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFdBQWlDO0lBS25FLFlBQ1ksSUFBZ0IsRUFDaEIsc0JBQThDLEVBQ3ZCLFdBQWdCLEVBQ3pDLFVBQXNCO1FBRTlCLEtBQUssQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFMdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBQ3pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFSaEMsZUFBVSxHQUFtQixPQUFPLENBQUM7UUFDckMsUUFBRyxHQUFXLFVBQVUsQ0FBQztRQUN6QixZQUFPLEdBQVksSUFBSSxDQUFDO1FBU3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNLLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBd0IsRUFBUSxFQUFFO1lBQzFFLE1BQU0sT0FBTyxHQUFZLFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDNUQsTUFBTSxLQUFLLEdBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0Msa0VBQWtFO1lBQ2xFLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNwQixPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNMLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDL0Y7WUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs0R0F2Q1UsY0FBYyxrRkFRZixhQUFhO2dIQVJaLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFTSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2UgYXMgTWVzc2FnZUJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvbWVzc2FnZSc7XG5pbXBvcnQgeyBJRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvZXZlbnQtbGlzdGVuZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmVwbGFjZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Z1bmN0aW9ucy9hcnJheSc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2NoYXQvbWVzc2FnZSc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3NlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2V2ZW50L3NzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHdvcmsgd2l0aCBtZXNzYWdlc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPE1lc3NhZ2VCYXNlLCBNZXNzYWdlPiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgbW9kZWxDbGFzczogdHlwZW9mIE1lc3NhZ2UgPSBNZXNzYWdlO1xuICB1cmw6IHN0cmluZyA9ICdtZXNzYWdlcyc7XG4gIGlzSHlkcmE6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnksXG4gICAgcHJpdmF0ZSBzc2VTZXJ2aWNlOiBTc2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNTRSBhbmQgRXZlbnQgRGlzcGF0Y2hlciBTZXJ2aWNlcyBsaXN0ZW5lcnNcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3Rlbk1lc3NhZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogc3Vic2NyaWJlIHRvIG5ldyBjaGF0IG1lc3NhZ2VzXG4gICAqL1xuICBwcml2YXRlIGxpc3Rlbk1lc3NhZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuc3NlU2VydmljZS5vbihgbWVzc2FnZXNgKS5zdWJzY3JpYmUoKG1lc3NhZ2VCYXNlOiBNZXNzYWdlQmFzZSk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZTogTWVzc2FnZSA9IHBsYWluVG9DbGFzcyhNZXNzYWdlLCBtZXNzYWdlQmFzZSk7XG4gICAgICBjb25zdCBjYWNoZTogTWVzc2FnZVtdID0gXy5jbG9uZSh0aGlzLmNhY2hlKTtcbiAgICAgIC8vIHVwZGF0ZSBleGlzdGluZyBtZXNzYWdlIGlmIHJlYWQgYW5kIGFkZCBuZXcgbWVzc2FnZSBpZiBub3QgcmVhZFxuICAgICAgaWYgKG1lc3NhZ2UuaXNSZWFkKCkpIHtcbiAgICAgICAgcmVwbGFjZShjYWNoZSwgbWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWNoZS5wdXNoKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uTUVTU0FHRV9DUkVBVEVELCBtZXNzYWdlKSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gICAgICB0aGlzLmNhY2hlU3ViamVjdC5uZXh0KHRoaXMuY2FjaGUpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { combineLatest, ReplaySubject } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import _ from 'lodash';
|
|
5
|
+
import { plainToClass } from 'class-transformer';
|
|
6
|
+
import { MessageDocument } from '../../../../models/chat/message-document';
|
|
7
|
+
import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common/http";
|
|
10
|
+
import * as i2 from "../../../event/event-dispatcher.service";
|
|
11
|
+
// @TODO improve base rest service and extend it
|
|
12
|
+
/**
|
|
13
|
+
* Service for work with Message Documents
|
|
14
|
+
*/
|
|
15
|
+
export class MessageDocumentService {
|
|
16
|
+
constructor(http, eventDispatcherService, environment) {
|
|
17
|
+
this.http = http;
|
|
18
|
+
this.eventDispatcherService = eventDispatcherService;
|
|
19
|
+
this.environment = environment;
|
|
20
|
+
this.url = 'message-documents';
|
|
21
|
+
this.cacheSubject = new ReplaySubject();
|
|
22
|
+
this.listenEvents();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* SSE and Event Dispatcher Services listeners
|
|
26
|
+
*/
|
|
27
|
+
listenEvents() {
|
|
28
|
+
this.listenMessages();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* listen new messages event to update documents cache
|
|
32
|
+
*/
|
|
33
|
+
listenMessages() {
|
|
34
|
+
this.eventDispatcherService.on(AppEventTypeEnum.MESSAGE_CREATED).subscribe((message) => {
|
|
35
|
+
if (message.documents.length) {
|
|
36
|
+
const cache = _.clone(this.cache);
|
|
37
|
+
const documentsIds = this.cache.map((d) => d.id);
|
|
38
|
+
message.documents.forEach((d) => {
|
|
39
|
+
d.chat = message.chat;
|
|
40
|
+
if (!documentsIds.includes(d.id)) {
|
|
41
|
+
cache.push(...message.documents);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
this.cache = cache;
|
|
45
|
+
this.cacheSubject.next(this.cache);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* get list of message documents
|
|
51
|
+
*/
|
|
52
|
+
get() {
|
|
53
|
+
if (!this.cache) {
|
|
54
|
+
this.http.get(`${this.environment.apiV2}/${this.url}`)
|
|
55
|
+
.pipe(map((response) => {
|
|
56
|
+
return response['hydra:member'].map((docBase) => plainToClass(MessageDocument, docBase));
|
|
57
|
+
}))
|
|
58
|
+
.subscribe((documents) => {
|
|
59
|
+
this.cache = documents;
|
|
60
|
+
this.cacheSubject.next(this.cache);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return this.cacheSubject.asObservable();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Upload file to chat
|
|
67
|
+
* @param chatId
|
|
68
|
+
* @param file
|
|
69
|
+
*/
|
|
70
|
+
add(chatId, file) {
|
|
71
|
+
const formData = new FormData();
|
|
72
|
+
formData.append('file', file);
|
|
73
|
+
formData.append('chat', chatId.toString());
|
|
74
|
+
return this.http.post(`${this.environment.apiV2}/${this.url}`, formData)
|
|
75
|
+
.pipe(map((documentBase) => {
|
|
76
|
+
const document = plainToClass(MessageDocument, documentBase);
|
|
77
|
+
const cache = _.clone(this.cache);
|
|
78
|
+
cache.push(document);
|
|
79
|
+
this.cache = cache;
|
|
80
|
+
this.cacheSubject.next(this.cache);
|
|
81
|
+
return document;
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Upload multiple files to chat
|
|
86
|
+
* @param chatId
|
|
87
|
+
* @param files
|
|
88
|
+
*/
|
|
89
|
+
addBatch(chatId, files) {
|
|
90
|
+
return combineLatest(files.map((file) => this.add(chatId, file))).pipe(map((docsBase) => {
|
|
91
|
+
return docsBase.map((docBase) => plainToClass(MessageDocument, docBase));
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Delete uploaded chat document
|
|
96
|
+
* @param chatId
|
|
97
|
+
* @param documentId
|
|
98
|
+
*/
|
|
99
|
+
delete(chatId, documentId) {
|
|
100
|
+
return this.http.delete(`${this.environment.apiV2}/${this.url}/${documentId}`)
|
|
101
|
+
.pipe(map(() => {
|
|
102
|
+
this.cache = this.cache.filter((document) => document.id !== documentId);
|
|
103
|
+
this.cacheSubject.next(this.cache);
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
MessageDocumentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MessageDocumentService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
108
|
+
MessageDocumentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MessageDocumentService, providedIn: 'root' });
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MessageDocumentService, decorators: [{
|
|
110
|
+
type: Injectable,
|
|
111
|
+
args: [{
|
|
112
|
+
providedIn: 'root'
|
|
113
|
+
}]
|
|
114
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
115
|
+
type: Inject,
|
|
116
|
+
args: ['environment']
|
|
117
|
+
}] }]; } });
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1kb2N1bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvY2hhdC9tZXNzYWdlLWRvY3VtZW50L21lc3NhZ2UtZG9jdW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFHaEYsZ0RBQWdEO0FBQ2hEOztHQUVHO0FBSUgsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyxZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQjtRQUZ2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFQbkQsUUFBRyxHQUFXLG1CQUFtQixDQUFDO1FBRWxDLGlCQUFZLEdBQThELElBQUksYUFBYSxFQUE4QyxDQUFDO1FBT3hJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJ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c0IsY0FGckIsTUFBTTs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFTSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VEb2N1bWVudCBhcyBNZXNzYWdlRG9jdW1lbnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL21lc3NhZ2UtZG9jdW1lbnQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9ldmVudC1saXN0ZW5lci5pbnRlcmZhY2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IE1lc3NhZ2VEb2N1bWVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9jaGF0L21lc3NhZ2UtZG9jdW1lbnQnO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9jaGF0L21lc3NhZ2UnO1xuXG4vLyBAVE9ETyBpbXByb3ZlIGJhc2UgcmVzdCBzZXJ2aWNlIGFuZCBleHRlbmQgaXRcbi8qKlxuICogU2VydmljZSBmb3Igd29yayB3aXRoIE1lc3NhZ2UgRG9jdW1lbnRzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VEb2N1bWVudFNlcnZpY2UgaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIHVybDogc3RyaW5nID0gJ21lc3NhZ2UtZG9jdW1lbnRzJztcbiAgY2FjaGU6IFJlYWRvbmx5PEFycmF5PFJlYWRvbmx5PE1lc3NhZ2VEb2N1bWVudD4+PjtcbiAgY2FjaGVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PFJlYWRvbmx5PEFycmF5PFJlYWRvbmx5PE1lc3NhZ2VEb2N1bWVudD4+Pj4gPSBuZXcgUmVwbGF5U3ViamVjdDxSZWFkb25seTxBcnJheTxSZWFkb25seTxNZXNzYWdlRG9jdW1lbnQ+Pj4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNTRSBhbmQgRXZlbnQgRGlzcGF0Y2hlciBTZXJ2aWNlcyBsaXN0ZW5lcnNcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3Rlbk1lc3NhZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogbGlzdGVuIG5ldyBtZXNzYWdlcyBldmVudCB0byB1cGRhdGUgZG9jdW1lbnRzIGNhY2hlXG4gICAqL1xuICBsaXN0ZW5NZXNzYWdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5NRVNTQUdFX0NSRUFURUQpLnN1YnNjcmliZSgobWVzc2FnZTogTWVzc2FnZSk6IHZvaWQgPT4ge1xuICAgICAgaWYgKG1lc3NhZ2UuZG9jdW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjYWNoZTogTWVzc2FnZURvY3VtZW50W10gPSBfLmNsb25lKHRoaXMuY2FjaGUpO1xuICAgICAgICBjb25zdCBkb2N1bWVudHNJZHM6IG51bWJlcltdID0gdGhpcy5jYWNoZS5tYXAoKGQ6IE1lc3NhZ2VEb2N1bWVudCk6IG51bWJlciA9PiBkLmlkKTtcbiAgICAgICAgbWVzc2FnZS5kb2N1bWVudHMuZm9yRWFjaCgoZDogTWVzc2FnZURvY3VtZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgZC5jaGF0ID0gbWVzc2FnZS5jaGF0O1xuICAgICAgICAgIGlmICghZG9jdW1lbnRzSWRzLmluY2x1ZGVzKGQuaWQpKSB7XG4gICAgICAgICAgICBjYWNoZS5wdXNoKC4uLm1lc3NhZ2UuZG9jdW1lbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gICAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQodGhpcy5jYWNoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgbWVzc2FnZSBkb2N1bWVudHNcbiAgICovXG4gIGdldCgpOiBPYnNlcnZhYmxlPFJlYWRvbmx5PE1lc3NhZ2VEb2N1bWVudFtdPj4ge1xuICAgIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfWApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IG9iamVjdCk6IE1lc3NhZ2VEb2N1bWVudFtdID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZVsnaHlkcmE6bWVtYmVyJ10ubWFwKChkb2NCYXNlOiBNZXNzYWdlRG9jdW1lbnRCYXNlKTogTWVzc2FnZURvY3VtZW50ID0+IHBsYWluVG9DbGFzcyhNZXNzYWdlRG9jdW1lbnQsIGRvY0Jhc2UpKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGRvY3VtZW50czogTWVzc2FnZURvY3VtZW50W10pOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gZG9jdW1lbnRzO1xuICAgICAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQodGhpcy5jYWNoZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhY2hlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWQgZmlsZSB0byBjaGF0XG4gICAqIEBwYXJhbSBjaGF0SWRcbiAgICogQHBhcmFtIGZpbGVcbiAgICovXG4gIGFkZChjaGF0SWQ6IG51bWJlciwgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8TWVzc2FnZURvY3VtZW50PiB7XG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdjaGF0JywgY2hhdElkLnRvU3RyaW5nKCkpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YCwgZm9ybURhdGEpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChkb2N1bWVudEJhc2U6IE1lc3NhZ2VEb2N1bWVudEJhc2UpOiBNZXNzYWdlRG9jdW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGRvY3VtZW50OiBNZXNzYWdlRG9jdW1lbnQgPSBwbGFpblRvQ2xhc3MoTWVzc2FnZURvY3VtZW50LCBkb2N1bWVudEJhc2UpO1xuICAgICAgICAgIGNvbnN0IGNhY2hlOiBNZXNzYWdlRG9jdW1lbnRbXSA9IF8uY2xvbmUodGhpcy5jYWNoZSk7XG4gICAgICAgICAgY2FjaGUucHVzaChkb2N1bWVudCk7XG4gICAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQodGhpcy5jYWNoZSk7XG4gICAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGxvYWQgbXVsdGlwbGUgZmlsZXMgdG8gY2hhdFxuICAgKiBAcGFyYW0gY2hhdElkXG4gICAqIEBwYXJhbSBmaWxlc1xuICAgKi9cbiAgYWRkQmF0Y2goY2hhdElkOiBudW1iZXIsIGZpbGVzOiBGaWxlW10pOiBPYnNlcnZhYmxlPE1lc3NhZ2VEb2N1bWVudFtdPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoXG4gICAgICBmaWxlcy5tYXAoKGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPE1lc3NhZ2VEb2N1bWVudD4gPT4gdGhpcy5hZGQoY2hhdElkLCBmaWxlKSlcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKGRvY3NCYXNlOiBNZXNzYWdlRG9jdW1lbnRCYXNlW10pOiBNZXNzYWdlRG9jdW1lbnRbXSA9PiB7XG4gICAgICAgIHJldHVybiBkb2NzQmFzZS5tYXAoKGRvY0Jhc2U6IE1lc3NhZ2VEb2N1bWVudEJhc2UpOiBNZXNzYWdlRG9jdW1lbnQgPT4gcGxhaW5Ub0NsYXNzKE1lc3NhZ2VEb2N1bWVudCwgZG9jQmFzZSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB1cGxvYWRlZCBjaGF0IGRvY3VtZW50XG4gICAqIEBwYXJhbSBjaGF0SWRcbiAgICogQHBhcmFtIGRvY3VtZW50SWRcbiAgICovXG4gIGRlbGV0ZShjaGF0SWQ6IG51bWJlciwgZG9jdW1lbnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0vJHtkb2N1bWVudElkfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5maWx0ZXIoKGRvY3VtZW50OiBNZXNzYWdlRG9jdW1lbnQpOiBib29sZWFuID0+IGRvY3VtZW50LmlkICE9PSBkb2N1bWVudElkKTtcbiAgICAgICAgICB0aGlzLmNhY2hlU3ViamVjdC5uZXh0KHRoaXMuY2FjaGUpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
2
|
import { ReplaySubject } from 'rxjs';
|
|
3
3
|
import { map } from 'rxjs/operators';
|
|
4
|
-
import { replace } from '
|
|
4
|
+
import { replace } from '../../../../functions/array';
|
|
5
5
|
import { plainToClass } from 'class-transformer';
|
|
6
|
-
import { DepreciationCapitalProject } from '
|
|
6
|
+
import { DepreciationCapitalProject } from '../../../../models/depreciation/depreciation-capital-project';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/common/http";
|
|
9
9
|
/**
|
|
10
10
|
* Service for work with DepreciationCapitalProjects
|
|
11
11
|
*/
|
|
12
|
-
export class
|
|
12
|
+
export class DepreciationCapitalProjectService {
|
|
13
13
|
constructor(http, environment) {
|
|
14
14
|
this.http = http;
|
|
15
15
|
this.environment = environment;
|
|
@@ -48,9 +48,9 @@ export class CapitalProjectService {
|
|
|
48
48
|
}));
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type:
|
|
51
|
+
DepreciationCapitalProjectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DepreciationCapitalProjectService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
+
DepreciationCapitalProjectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DepreciationCapitalProjectService, providedIn: 'root' });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DepreciationCapitalProjectService, decorators: [{
|
|
54
54
|
type: Injectable,
|
|
55
55
|
args: [{
|
|
56
56
|
providedIn: 'root'
|
|
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
|
59
59
|
type: Inject,
|
|
60
60
|
args: ['environment']
|
|
61
61
|
}] }]; } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjaWF0aW9uLWNhcGl0YWwtcHJvamVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbi1jYXBpdGFsLXByb2plY3QvZGVwcmVjaWF0aW9uLWNhcGl0YWwtcHJvamVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7OztBQUUxRzs7R0FFRztBQUlILE1BQU0sT0FBTyxpQ0FBaUM7SUFJNUMsWUFDVSxJQUFnQixFQUNPLFdBQWdCO1FBRHZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDTyxnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUpqRCxpQkFBWSxHQUFnRCxJQUFJLGFBQWEsQ0FBK0IsQ0FBQyxDQUFDLENBQUM7SUFNL0csQ0FBQztJQUVELEdBQUcsQ0FBQyxVQUFrQjtRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxlQUFlLFVBQVUsZ0NBQWdDLENBQUM7YUFDOUYsU0FBUyxDQUFDLENBQUMsbUJBQXFELEVBQUUsRUFBRTtZQUNuRSxJQUFJLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGtCQUFrRCxFQUFFLEVBQUU7Z0JBQzFGLE9BQU8sWUFBWSxDQUFDLDBCQUEwQixFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDdEUsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELEdBQUcsQ0FBQyxjQUEwQyxFQUFFLFVBQWtCO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssZUFBZSxVQUFVLGdDQUFnQyxFQUFFLGNBQWMsQ0FBQzthQUN0SCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsa0JBQWtELEVBQVEsRUFBRTtZQUMvRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUEwQyxFQUFFLFVBQWtCO1FBQ25FLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssZUFBZSxVQUFVLGtDQUFrQyxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQUUsY0FBYyxDQUFDO2FBQzFJLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxrQkFBa0QsRUFBUSxFQUFFO1lBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQywwQkFBMEIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQTBDLEVBQUUsVUFBa0I7UUFDbkUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxlQUFlLFVBQVUsa0NBQWtDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUM3SCxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFnQyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7OytIQXBEVSxpQ0FBaUMsNENBTWxDLGFBQWE7bUlBTlosaUNBQWlDLGNBRmhDLE1BQU07NEZBRVAsaUNBQWlDO2tCQUg3QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXByZWNpYXRpb25DYXBpdGFsUHJvamVjdCBhcyBEZXByZWNpYXRpb25DYXBpdGFsUHJvamVjdEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvZGVwcmVjaWF0aW9uLWNhcGl0YWwtcHJvamVjdCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgcmVwbGFjZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Z1bmN0aW9ucy9hcnJheSc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBEZXByZWNpYXRpb25DYXBpdGFsUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9kZXByZWNpYXRpb24vZGVwcmVjaWF0aW9uLWNhcGl0YWwtcHJvamVjdCc7XG5cbi8qKlxuICogU2VydmljZSBmb3Igd29yayB3aXRoIERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0c1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZXByZWNpYXRpb25DYXBpdGFsUHJvamVjdFNlcnZpY2Uge1xuICBjYWNoZTogRGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3RbXTtcbiAgY2FjaGVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0W10+ID0gbmV3IFJlcGxheVN1YmplY3Q8RGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3RbXT4oMSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICB9XG5cbiAgZ2V0KHByb3BlcnR5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8RGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3RbXT4ge1xuICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQoW10pO1xuXG4gICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9wcm9wZXJ0aWVzLyR7cHJvcGVydHlJZH0vZGVwcmVjaWF0aW9uLWNhcGl0YWwtcHJvamVjdHNgKVxuICAgICAgLnN1YnNjcmliZSgoY2FwaXRhbFByb2plY3RzQmFzZTogRGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3RCYXNlW10pID0+IHtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhcGl0YWxQcm9qZWN0c0Jhc2UubWFwKChjYXBpdGFsUHJvamVjdEJhc2U6IERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0QmFzZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MoRGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3QsIGNhcGl0YWxQcm9qZWN0QmFzZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNhY2hlU3ViamVjdC5uZXh0KHRoaXMuY2FjaGUpO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBhZGQoY2FwaXRhbFByb2plY3Q6IERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0LCBwcm9wZXJ0eUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vcHJvcGVydGllcy8ke3Byb3BlcnR5SWR9L2RlcHJlY2lhdGlvbi1jYXBpdGFsLXByb2plY3RzYCwgY2FwaXRhbFByb2plY3QpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChjYXBpdGFsUHJvamVjdEJhc2U6IERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0QmFzZSk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUucHVzaChwbGFpblRvQ2xhc3MoRGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3QsIGNhcGl0YWxQcm9qZWN0QmFzZSkpO1xuICAgICAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQodGhpcy5jYWNoZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlKGNhcGl0YWxQcm9qZWN0OiBEZXByZWNpYXRpb25DYXBpdGFsUHJvamVjdCwgcHJvcGVydHlJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vcHJvcGVydGllcy8ke3Byb3BlcnR5SWR9L2RlcHJlY2lhdGlvbi1jYXBpdGFsLXByb2plY3RzLyR7Y2FwaXRhbFByb2plY3QuaWR9YCwgY2FwaXRhbFByb2plY3QpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChjYXBpdGFsUHJvamVjdEJhc2U6IERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0QmFzZSk6IHZvaWQgPT4ge1xuICAgICAgICAgIHJlcGxhY2UodGhpcy5jYWNoZSwgcGxhaW5Ub0NsYXNzKERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0LCBjYXBpdGFsUHJvamVjdEJhc2UpKTtcbiAgICAgICAgICB0aGlzLmNhY2hlU3ViamVjdC5uZXh0KHRoaXMuY2FjaGUpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZShjYXBpdGFsUHJvamVjdDogRGVwcmVjaWF0aW9uQ2FwaXRhbFByb2plY3QsIHByb3BlcnR5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3Byb3BlcnRpZXMvJHtwcm9wZXJ0eUlkfS9kZXByZWNpYXRpb24tY2FwaXRhbC1wcm9qZWN0cy8ke2NhcGl0YWxQcm9qZWN0LmlkfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5maWx0ZXIoKGl0ZW06IERlcHJlY2lhdGlvbkNhcGl0YWxQcm9qZWN0KSA9PiBjYXBpdGFsUHJvamVjdC5pZCAhPT0gaXRlbS5pZCk7XG4gICAgICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { replace } from '../../../functions/array';
|
|
4
|
+
import { plainToClass } from 'class-transformer';
|
|
5
|
+
import { RestService } from '../rest/rest.service';
|
|
6
|
+
import { Depreciation } from '../../../models/depreciation/depreciation';
|
|
7
|
+
import { AppEvent } from '../../../models/event/app-event';
|
|
8
|
+
import { AppEventTypeEnum } from '../../../models/event/app-event-type.enum';
|
|
9
|
+
import { FinancialYear } from '../../../models/financial-year/financial-year';
|
|
10
|
+
import { DepreciationReceipt } from '../../../models/depreciation/depreciation-receipt';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/common/http";
|
|
13
|
+
import * as i2 from "../../event/event-dispatcher.service";
|
|
14
|
+
export class DepreciationService extends RestService {
|
|
15
|
+
constructor(http, eventDispatcherService, environment) {
|
|
16
|
+
super(http, eventDispatcherService, environment);
|
|
17
|
+
this.http = http;
|
|
18
|
+
this.eventDispatcherService = eventDispatcherService;
|
|
19
|
+
this.environment = environment;
|
|
20
|
+
this.modelClass = Depreciation;
|
|
21
|
+
this.url = 'depreciations';
|
|
22
|
+
this.listenEvents();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Add a single depreciation
|
|
26
|
+
* @TODO add auto-generation for events
|
|
27
|
+
*/
|
|
28
|
+
add(depreciation) {
|
|
29
|
+
return this.addBatch([depreciation])
|
|
30
|
+
.pipe(map((newDepreciations) => {
|
|
31
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.DEPRECIATIONS_CREATED, newDepreciations[0]));
|
|
32
|
+
return newDepreciations[0];
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Add multiple depreciations
|
|
37
|
+
* @TODO add auto-generation for events
|
|
38
|
+
*/
|
|
39
|
+
addBatch(depreciations) {
|
|
40
|
+
return super.addBatch(depreciations).pipe(map((newDepreciations) => {
|
|
41
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.DEPRECIATIONS_CREATED, newDepreciations));
|
|
42
|
+
return newDepreciations;
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Listen to Depreciations events
|
|
47
|
+
*/
|
|
48
|
+
listenEvents() {
|
|
49
|
+
this.listenToUpdatedLoan();
|
|
50
|
+
this.listenToVehicleClaim();
|
|
51
|
+
this.listenToUpdatedBankAccount();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get depreciations related to Vehicle category
|
|
55
|
+
*/
|
|
56
|
+
getVehicleDepreciations() {
|
|
57
|
+
return this.get().pipe(map((depreciations) => {
|
|
58
|
+
return depreciations.filter((depreciation) => depreciation.isVehicleDepreciation());
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
getCloseBalance(depreciation) {
|
|
62
|
+
return this.http.post(`${this.environment.apiV2}/${this.url}/closing-balance?financialYear=${new FinancialYear().year}`, depreciation)
|
|
63
|
+
.pipe(map((response) => {
|
|
64
|
+
return response || 0;
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* @TODO wrong place, move to collection model
|
|
69
|
+
*/
|
|
70
|
+
calculateSummaryAmount(depreciationList) {
|
|
71
|
+
return depreciationList.reduce((sum, depreciation) => {
|
|
72
|
+
// depreciation may not have forecast item for current financial year
|
|
73
|
+
if (!depreciation.currentYearForecast) {
|
|
74
|
+
return sum;
|
|
75
|
+
}
|
|
76
|
+
return sum + depreciation.currentYearForecast.claimAmount;
|
|
77
|
+
}, 0);
|
|
78
|
+
}
|
|
79
|
+
calculateBorrowingExpenses(depreciationList) {
|
|
80
|
+
return this.getByIds(depreciationList)
|
|
81
|
+
.pipe(map((depreciations) => {
|
|
82
|
+
return this.calculateSummaryAmount(depreciations.filter((depreciation) => depreciation.isBorrowingExpense()));
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
calculateDepreciations(depreciationList) {
|
|
86
|
+
return this.getByIds(depreciationList)
|
|
87
|
+
.pipe(map((depreciations) => {
|
|
88
|
+
return this.calculateSummaryAmount(depreciations.filter((depreciation) => !depreciation.isBorrowingExpense()));
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Upload depreciation receipt
|
|
93
|
+
* @param depreciation for which will be uploaded receipt
|
|
94
|
+
*/
|
|
95
|
+
uploadReceipt(depreciation) {
|
|
96
|
+
const formData = new FormData();
|
|
97
|
+
formData.append('file', depreciation.file);
|
|
98
|
+
depreciation.receipt = null;
|
|
99
|
+
this.http.post(`${this.environment.apiV2}/${this.url}/${depreciation.id}/receipts`, formData)
|
|
100
|
+
.subscribe((receiptResponse) => {
|
|
101
|
+
// we don't need to keep file after save
|
|
102
|
+
depreciation.file = null;
|
|
103
|
+
depreciation.receipt = plainToClass(DepreciationReceipt, receiptResponse);
|
|
104
|
+
replace(this.cache, depreciation);
|
|
105
|
+
this.cacheSubject.next(this.cache.slice());
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Listen to EventDispatcherService event related to updated bank loan
|
|
110
|
+
*/
|
|
111
|
+
listenToUpdatedLoan() {
|
|
112
|
+
this.eventDispatcherService.on([AppEventTypeEnum.LOAN_UPDATED, AppEventTypeEnum.PROPERTY_SHARE_UPDATED]).subscribe(() => {
|
|
113
|
+
this.fetch().subscribe();
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Listen to EventDispatcherService event related to updated bank account
|
|
118
|
+
*/
|
|
119
|
+
listenToUpdatedBankAccount() {
|
|
120
|
+
this.eventDispatcherService.on([AppEventTypeEnum.BANK_ACCOUNT_UPDATED]).subscribe((bankAccount) => {
|
|
121
|
+
if (bankAccount.isPropertyTank()) {
|
|
122
|
+
this.fetch().subscribe();
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Listen to EventDispatcherService event related to updated vehicle claim
|
|
128
|
+
*/
|
|
129
|
+
listenToVehicleClaim() {
|
|
130
|
+
this.eventDispatcherService.on([AppEventTypeEnum.VEHICLE_CLAIM_CREATED, AppEventTypeEnum.VEHICLE_CLAIM_UPDATED]).subscribe(() => {
|
|
131
|
+
this.fetch().subscribe();
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
DepreciationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DepreciationService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
136
|
+
DepreciationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DepreciationService, providedIn: 'root' });
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DepreciationService, decorators: [{
|
|
138
|
+
type: Injectable,
|
|
139
|
+
args: [{
|
|
140
|
+
providedIn: 'root'
|
|
141
|
+
}]
|
|
142
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
143
|
+
type: Inject,
|
|
144
|
+
args: ['environment']
|
|
145
|
+
}] }]; } });
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjaWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9kZXByZWNpYXRpb24vZGVwcmVjaWF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUV6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7O0FBTXhGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUEyQztJQUlsRixZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQjtRQUVqRCxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBSnZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQU5uRCxlQUFVLEdBQXdCLFlBQVksQ0FBQztRQUMvQyxRQUFHLEdBQVcsZUFB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OztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEgsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBd0IsRUFBRSxFQUFFO1lBQzdHLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDOUgsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7aUhBbkpVLG1CQUFtQixrRkFPcEIsYUFBYTtxSEFQWixtQkFBbUIsY0FGbEIsTUFBTTs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFRSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlcHJlY2lhdGlvbiBhcyBEZXByZWNpYXRpb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vZGIvTW9kZWxzL2RlcHJlY2lhdGlvbic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyByZXBsYWNlIH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IERlcHJlY2lhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kZXByZWNpYXRpb24vZGVwcmVjaWF0aW9uJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBGaW5hbmNpYWxZZWFyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpbmFuY2lhbC15ZWFyL2ZpbmFuY2lhbC15ZWFyJztcbmltcG9ydCB7IERlcHJlY2lhdGlvblJlY2VpcHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbi1yZWNlaXB0JztcbmltcG9ydCB7IEJhbmtBY2NvdW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2JhbmsvYmFuay1hY2NvdW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjaWF0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPERlcHJlY2lhdGlvbkJhc2UsIERlcHJlY2lhdGlvbj4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgRGVwcmVjaWF0aW9uID0gRGVwcmVjaWF0aW9uO1xuICB1cmw6IHN0cmluZyA9ICdkZXByZWNpYXRpb25zJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNpbmdsZSBkZXByZWNpYXRpb25cbiAgICogQFRPRE8gYWRkIGF1dG8tZ2VuZXJhdGlvbiBmb3IgZXZlbnRzXG4gICAqL1xuICBhZGQoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBPYnNlcnZhYmxlPERlcHJlY2lhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmFkZEJhdGNoKFtkZXByZWNpYXRpb25dKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobmV3RGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uW10pOiBEZXByZWNpYXRpb24gPT4ge1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5ERVBSRUNJQVRJT05TX0NSRUFURUQsIG5ld0RlcHJlY2lhdGlvbnNbMF0pKTtcbiAgICAgICAgICByZXR1cm4gbmV3RGVwcmVjaWF0aW9uc1swXTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG11bHRpcGxlIGRlcHJlY2lhdGlvbnNcbiAgICogQFRPRE8gYWRkIGF1dG8tZ2VuZXJhdGlvbiBmb3IgZXZlbnRzXG4gICAqL1xuICBhZGRCYXRjaChkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25bXSk6IE9ic2VydmFibGU8RGVwcmVjaWF0aW9uW10+IHtcbiAgICByZXR1cm4gc3VwZXIuYWRkQmF0Y2goZGVwcmVjaWF0aW9ucykucGlwZShcbiAgICAgIG1hcCgobmV3RGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uW10pOiBEZXByZWNpYXRpb25bXSA9PiB7XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5ERVBSRUNJQVRJT05TX0NSRUFURUQsIG5ld0RlcHJlY2lhdGlvbnMpKTtcbiAgICAgICAgcmV0dXJuIG5ld0RlcHJlY2lhdGlvbnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIERlcHJlY2lhdGlvbnMgZXZlbnRzXG4gICAqL1xuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Ub1VwZGF0ZWRMb2FuKCk7XG4gICAgdGhpcy5saXN0ZW5Ub1ZlaGljbGVDbGFpbSgpO1xuICAgIHRoaXMubGlzdGVuVG9VcGRhdGVkQmFua0FjY291bnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGVwcmVjaWF0aW9ucyByZWxhdGVkIHRvIFZlaGljbGUgY2F0ZWdvcnlcbiAgICovXG4gIGdldFZlaGljbGVEZXByZWNpYXRpb25zKCk6IE9ic2VydmFibGU8RGVwcmVjaWF0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25bXSkgPT4ge1xuICAgICAgICByZXR1cm4gZGVwcmVjaWF0aW9ucy5maWx0ZXIoKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKSA9PiBkZXByZWNpYXRpb24uaXNWZWhpY2xlRGVwcmVjaWF0aW9uKCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2xvc2VCYWxhbmNlKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0vY2xvc2luZy1iYWxhbmNlP2ZpbmFuY2lhbFllYXI9JHtuZXcgRmluYW5jaWFsWWVhcigpLnllYXJ9YCwgZGVwcmVjaWF0aW9uKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IG51bWJlcikgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZSB8fCAwO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyB3cm9uZyBwbGFjZSwgbW92ZSB0byBjb2xsZWN0aW9uIG1vZGVsXG4gICAqL1xuICBjYWxjdWxhdGVTdW1tYXJ5QW1vdW50KGRlcHJlY2lhdGlvbkxpc3Q6IERlcHJlY2lhdGlvbltdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGVwcmVjaWF0aW9uTGlzdC5yZWR1Y2UoKHN1bTogbnVtYmVyLCBkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbikgPT4ge1xuICAgICAgLy8gZGVwcmVjaWF0aW9uIG1heSBub3QgaGF2ZSBmb3JlY2FzdCBpdGVtIGZvciBjdXJyZW50IGZpbmFuY2lhbCB5ZWFyXG4gICAgICBpZiAoIWRlcHJlY2lhdGlvbi5jdXJyZW50WWVhckZvcmVjYXN0KSB7XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdW0gKyBkZXByZWNpYXRpb24uY3VycmVudFllYXJGb3JlY2FzdC5jbGFpbUFtb3VudDtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUJvcnJvd2luZ0V4cGVuc2VzKGRlcHJlY2lhdGlvbkxpc3Q6IERlcHJlY2lhdGlvbltdKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRCeUlkcyhkZXByZWNpYXRpb25MaXN0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uW10pID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVTdW1tYXJ5QW1vdW50KGRlcHJlY2lhdGlvbnMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbikgPT4gZGVwcmVjaWF0aW9uLmlzQm9ycm93aW5nRXhwZW5zZSgpKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgY2FsY3VsYXRlRGVwcmVjaWF0aW9ucyhkZXByZWNpYXRpb25MaXN0OiBEZXByZWNpYXRpb25bXSk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QnlJZHMoZGVwcmVjaWF0aW9uTGlzdClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGRlcHJlY2lhdGlvbnM6IERlcHJlY2lhdGlvbltdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlU3VtbWFyeUFtb3VudChkZXByZWNpYXRpb25zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pID0+ICFkZXByZWNpYXRpb24uaXNCb3Jyb3dpbmdFeHBlbnNlKCkpKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkIGRlcHJlY2lhdGlvbiByZWNlaXB0XG4gICAqIEBwYXJhbSBkZXByZWNpYXRpb24gZm9yIHdoaWNoIHdpbGwgYmUgdXBsb2FkZWQgcmVjZWlwdFxuICAgKi9cbiAgdXBsb2FkUmVjZWlwdChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGRlcHJlY2lhdGlvbi5maWxlKTtcbiAgICBkZXByZWNpYXRpb24ucmVjZWlwdCA9IG51bGw7XG5cbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke2RlcHJlY2lhdGlvbi5pZH0vcmVjZWlwdHNgLCBmb3JtRGF0YSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlY2VpcHRSZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8ga2VlcCBmaWxlIGFmdGVyIHNhdmVcbiAgICAgICAgZGVwcmVjaWF0aW9uLmZpbGUgPSBudWxsO1xuICAgICAgICBkZXByZWNpYXRpb24ucmVjZWlwdCA9IHBsYWluVG9DbGFzcyhEZXByZWNpYXRpb25SZWNlaXB0LCByZWNlaXB0UmVzcG9uc2UpO1xuICAgICAgICByZXBsYWNlKHRoaXMuY2FjaGUsIGRlcHJlY2lhdGlvbik7XG4gICAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQodGhpcy5jYWNoZS5zbGljZSgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIGV2ZW50IHJlbGF0ZWQgdG8gdXBkYXRlZCBiYW5rIGxvYW5cbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9VcGRhdGVkTG9hbigpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oW0FwcEV2ZW50VHlwZUVudW0uTE9BTl9VUERBVEVELCBBcHBFdmVudFR5cGVFbnVtLlBST1BFUlRZX1NIQVJFX1VQREFURURdKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mZXRjaCgpLnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIGV2ZW50IHJlbGF0ZWQgdG8gdXBkYXRlZCBiYW5rIGFjY291bnRcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9VcGRhdGVkQmFua0FjY291bnQoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKFtBcHBFdmVudFR5cGVFbnVtLkJBTktfQUNDT1VOVF9VUERBVEVEXSkuc3Vic2NyaWJlKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IHtcbiAgICAgIGlmIChiYW5rQWNjb3VudC5pc1Byb3BlcnR5VGFuaygpKSB7XG4gICAgICAgIHRoaXMuZmV0Y2goKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRXZlbnREaXNwYXRjaGVyU2VydmljZSBldmVudCByZWxhdGVkIHRvIHVwZGF0ZWQgdmVoaWNsZSBjbGFpbVxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1ZlaGljbGVDbGFpbSgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oW0FwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELCBBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fVVBEQVRFRF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZldGNoKCkuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|