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.
Files changed (166) hide show
  1. package/bundles/taxtank-core.umd.js +145 -140
  2. package/bundles/taxtank-core.umd.js.map +1 -1
  3. package/esm2015/lib/collections/collection.js +2 -2
  4. package/esm2015/lib/collections/depreciation.collection.js +3 -3
  5. package/esm2015/lib/collections/tax-summary/report-item.collection.js +141 -0
  6. package/esm2015/lib/db/Models/transaction-base.js +2 -1
  7. package/esm2015/lib/models/property/property.js +7 -4
  8. package/esm2015/lib/models/tax-summary/report-item-details.js +9 -0
  9. package/esm2015/lib/models/tax-summary/report-item.js +15 -0
  10. package/esm2015/lib/models/tax-summary/tax-summary-section.js +5 -5
  11. package/esm2015/lib/services/http/address/address.service.js +39 -0
  12. package/esm2015/lib/services/http/bank/bank-account/bank-account.service.js +118 -0
  13. package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +52 -0
  14. package/esm2015/lib/services/http/bank/bank-transaction/bank-transaction.service.js +89 -0
  15. package/esm2015/lib/services/http/bank/bank.service.js +24 -0
  16. package/esm2015/lib/services/http/bank/basiq/basiq.service.js +94 -0
  17. package/esm2015/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.js +38 -0
  18. package/esm2015/lib/services/http/chart-accounts/chart-accounts.service.js +89 -0
  19. package/esm2015/lib/services/http/chat/chat.service.js +77 -0
  20. package/esm2015/lib/services/http/chat/message/message.service.js +65 -0
  21. package/esm2015/lib/services/http/chat/message-document/message-document.service.js +118 -0
  22. package/esm2015/lib/services/{depreciation/capital-project.service.js → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.js} +7 -7
  23. package/esm2015/lib/services/http/depreciation/depreciation.service.js +146 -0
  24. package/esm2015/lib/services/http/document/document-folder/document-folder.service.js +84 -0
  25. package/esm2015/lib/services/{client → http/firm/client-invite}/client-invite.service.js +7 -7
  26. package/esm2015/lib/services/http/firm/client-movement/client-movement.service.js +98 -0
  27. package/esm2015/lib/services/http/firm/employee/employee.service.js +39 -0
  28. package/esm2015/lib/services/http/firm/employee-invite/employee-invite.service.js +53 -0
  29. package/esm2015/lib/services/http/firm/firm.service.js +79 -0
  30. package/esm2015/lib/services/http/firm/portfolio-report/client-portfolio-report.service.js +37 -0
  31. package/esm2015/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.js +90 -0
  32. package/esm2015/lib/services/http/income-source/income-source.service.js +109 -0
  33. package/esm2015/lib/services/http/income-source/salary-forecast/salary-forecast.service.js +90 -0
  34. package/esm2015/lib/services/http/income-source/sole-forecast/sole-forecast.service.js +87 -0
  35. package/esm2015/lib/services/http/loan/borrowing-expense/borrowing-expense.service.js +73 -0
  36. package/esm2015/lib/services/http/loan/loan.service.js +145 -0
  37. package/esm2015/lib/services/http/property/property-category/property-category.service.js +23 -0
  38. package/esm2015/lib/services/http/property/property-category-movement/property-category-movement.service.js +47 -0
  39. package/esm2015/lib/services/http/property/property-document/property-document.service.js +70 -0
  40. package/esm2015/lib/services/http/property/property-sale/property-sale.service.js +20 -0
  41. package/esm2015/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.js +21 -0
  42. package/esm2015/lib/services/http/property/property-share/property-share.service.js +115 -0
  43. package/esm2015/lib/services/http/property/property.service.js +126 -0
  44. package/esm2015/lib/services/http/rest/rest.service.js +190 -0
  45. package/esm2015/lib/services/http/service-notification/service-notification.service.js +65 -0
  46. package/esm2015/lib/services/http/subscription/subscription.service.js +157 -0
  47. package/esm2015/lib/services/http/tax-review/tax-review-history/tax-review-history.service.js +41 -0
  48. package/esm2015/lib/services/http/tax-review/tax-review.service.js +103 -0
  49. package/esm2015/lib/services/http/tax-summary/tax-summary.service.js +71 -0
  50. package/esm2015/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.js +85 -0
  51. package/esm2015/lib/services/http/transaction/transaction.service.js +319 -0
  52. package/esm2015/lib/services/http/user/occupation/occupation.service.js +45 -0
  53. package/esm2015/lib/services/http/user/user-event-setting/user-event-setting.service.js +59 -0
  54. package/esm2015/lib/services/http/user/user-event-type/user-event-type.service.js +29 -0
  55. package/esm2015/lib/services/http/user/user.service.js +124 -0
  56. package/esm2015/lib/services/http/vehicle/vehicle.service.js +237 -0
  57. package/esm2015/lib/services/property/equity-position-chart/equity-position-chart.service.js +45 -0
  58. package/esm2015/public-api.js +51 -51
  59. package/fesm2015/taxtank-core.js +67 -62
  60. package/fesm2015/taxtank-core.js.map +1 -1
  61. package/lib/collections/collection.d.ts +1 -1
  62. package/lib/collections/{tax-return-category-item.collection.d.ts → tax-summary/report-item.collection.d.ts} +5 -5
  63. package/lib/models/property/property.d.ts +1 -0
  64. package/lib/models/tax-summary/{tax-return-category-item-details.d.ts → report-item-details.d.ts} +2 -2
  65. package/lib/models/tax-summary/{tax-return-category-item.d.ts → report-item.d.ts} +4 -4
  66. package/lib/models/tax-summary/tax-summary-section.d.ts +2 -2
  67. package/lib/services/{address → http/address}/address.service.d.ts +1 -1
  68. package/lib/services/{bank → http/bank/bank-account}/bank-account.service.d.ts +5 -5
  69. package/lib/services/{bank → http/bank/bank-connection}/bank-connection.service.d.ts +5 -5
  70. package/lib/services/{bank → http/bank/bank-transaction}/bank-transaction.service.d.ts +5 -5
  71. package/lib/services/{bank → http/bank}/bank.service.d.ts +4 -4
  72. package/lib/services/{bank → http/bank/basiq}/basiq.service.d.ts +7 -7
  73. package/lib/services/{chart-accounts → http/chart-accounts/chart-accounts-depreciations}/chart-accounts-depreciations.service.d.ts +4 -4
  74. package/lib/services/{chart-accounts → http/chart-accounts}/chart-accounts.service.d.ts +3 -3
  75. package/lib/services/{chat → http/chat}/chat.service.d.ts +7 -7
  76. package/lib/services/{chat → http/chat/message}/message.service.d.ts +7 -7
  77. package/lib/services/{chat → http/chat/message-document}/message-document.service.d.ts +3 -3
  78. package/lib/services/{depreciation/capital-project.service.d.ts → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.d.ts} +4 -4
  79. package/lib/services/{depreciation → http/depreciation}/depreciation.service.d.ts +5 -5
  80. package/lib/services/{document → http/document/document-folder}/document-folder.service.d.ts +6 -6
  81. package/lib/services/{client → http/firm/client-invite}/client-invite.service.d.ts +4 -4
  82. package/lib/services/{client → http/firm/client-movement}/client-movement.service.d.ts +7 -7
  83. package/lib/services/{employee → http/firm/employee}/employee.service.d.ts +4 -4
  84. package/lib/services/{employee → http/firm/employee-invite}/employee-invite.service.d.ts +4 -4
  85. package/lib/services/{firm → http/firm}/firm.service.d.ts +2 -2
  86. package/lib/services/{client → http/firm/portfolio-report}/client-portfolio-report.service.d.ts +1 -1
  87. package/lib/services/{income-source → http/income-source/income-source-forecast}/income-source-forecast.service.d.ts +5 -5
  88. package/lib/services/{income-source → http/income-source}/income-source.service.d.ts +8 -8
  89. package/lib/services/{income-source → http/income-source/salary-forecast}/salary-forecast.service.d.ts +6 -6
  90. package/lib/services/{income-source → http/income-source/sole-forecast}/sole-forecast.service.d.ts +5 -5
  91. package/lib/services/{borrowing-expense → http/loan/borrowing-expense}/borrowing-expense.service.d.ts +2 -2
  92. package/lib/services/{loan → http/loan}/loan.service.d.ts +6 -6
  93. package/lib/services/{property → http/property}/property-category/property-category.service.d.ts +4 -4
  94. package/lib/services/{property → http/property/property-category-movement}/property-category-movement.service.d.ts +4 -4
  95. package/lib/services/{property → http/property}/property-document/property-document.service.d.ts +5 -5
  96. package/lib/services/http/property/property-sale/property-sale.service.d.ts +10 -0
  97. package/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.d.ts +11 -0
  98. package/lib/services/{property → http/property}/property-share/property-share.service.d.ts +5 -5
  99. package/lib/services/{property → http/property}/property.service.d.ts +5 -5
  100. package/lib/services/{base-rest.service.d.ts → http/rest/rest.service.d.ts} +4 -4
  101. package/lib/services/http/service-notification/service-notification.service.d.ts +31 -0
  102. package/lib/services/{subscription → http/subscription}/subscription.service.d.ts +6 -6
  103. package/lib/services/{tax-review → http/tax-review/tax-review-history}/tax-review-history.service.d.ts +5 -5
  104. package/lib/services/{tax-review → http/tax-review}/tax-review.service.d.ts +6 -6
  105. package/lib/services/{tax-summary → http/tax-summary}/tax-summary.service.d.ts +2 -2
  106. package/lib/services/{transaction → http/transaction/transaction-allocation}/transaction-allocation.service.d.ts +6 -6
  107. package/lib/services/{transaction → http/transaction}/transaction.service.d.ts +7 -7
  108. package/lib/services/{user → http/user/occupation}/occupation.service.d.ts +1 -1
  109. package/lib/services/{user-event → http/user/user-event-setting}/user-event-setting.service.d.ts +5 -5
  110. package/lib/services/{user-event → http/user/user-event-type}/user-event-type.service.d.ts +5 -5
  111. package/lib/services/{user → http/user}/user.service.d.ts +3 -3
  112. package/lib/services/{work/work-tank.service.d.ts → http/vehicle/vehicle.service.d.ts} +9 -8
  113. package/lib/services/property/{equity-position-chart.service.d.ts → equity-position-chart/equity-position-chart.service.d.ts} +1 -1
  114. package/package.json +1 -1
  115. package/public-api.d.ts +50 -50
  116. package/esm2015/lib/collections/tax-return-category-item.collection.js +0 -141
  117. package/esm2015/lib/models/tax-summary/tax-return-category-item-details.js +0 -9
  118. package/esm2015/lib/models/tax-summary/tax-return-category-item.js +0 -15
  119. package/esm2015/lib/services/address/address.service.js +0 -39
  120. package/esm2015/lib/services/bank/bank-account.service.js +0 -118
  121. package/esm2015/lib/services/bank/bank-connection.service.js +0 -52
  122. package/esm2015/lib/services/bank/bank-transaction.service.js +0 -89
  123. package/esm2015/lib/services/bank/bank.service.js +0 -24
  124. package/esm2015/lib/services/bank/basiq.service.js +0 -94
  125. package/esm2015/lib/services/base-rest.service.js +0 -190
  126. package/esm2015/lib/services/borrowing-expense/borrowing-expense.service.js +0 -73
  127. package/esm2015/lib/services/chart-accounts/chart-accounts-depreciations.service.js +0 -38
  128. package/esm2015/lib/services/chart-accounts/chart-accounts.service.js +0 -89
  129. package/esm2015/lib/services/chat/chat.service.js +0 -77
  130. package/esm2015/lib/services/chat/message-document.service.js +0 -118
  131. package/esm2015/lib/services/chat/message.service.js +0 -65
  132. package/esm2015/lib/services/client/client-movement.service.js +0 -98
  133. package/esm2015/lib/services/client/client-portfolio-report.service.js +0 -37
  134. package/esm2015/lib/services/depreciation/depreciation.service.js +0 -146
  135. package/esm2015/lib/services/document/document-folder.service.js +0 -84
  136. package/esm2015/lib/services/employee/employee-invite.service.js +0 -53
  137. package/esm2015/lib/services/employee/employee.service.js +0 -39
  138. package/esm2015/lib/services/firm/firm.service.js +0 -79
  139. package/esm2015/lib/services/income-source/income-source-forecast.service.js +0 -90
  140. package/esm2015/lib/services/income-source/income-source.service.js +0 -109
  141. package/esm2015/lib/services/income-source/salary-forecast.service.js +0 -90
  142. package/esm2015/lib/services/income-source/sole-forecast.service.js +0 -87
  143. package/esm2015/lib/services/loan/loan.service.js +0 -145
  144. package/esm2015/lib/services/notification/notification.service.js +0 -65
  145. package/esm2015/lib/services/property/equity-position-chart.service.js +0 -45
  146. package/esm2015/lib/services/property/property-category/property-category.service.js +0 -23
  147. package/esm2015/lib/services/property/property-category-movement.service.js +0 -47
  148. package/esm2015/lib/services/property/property-document/property-document.service.js +0 -70
  149. package/esm2015/lib/services/property/property-sale/property-sale.service.js +0 -20
  150. package/esm2015/lib/services/property/property-sale/tax-exemption/tax-exemption.service.js +0 -21
  151. package/esm2015/lib/services/property/property-share/property-share.service.js +0 -115
  152. package/esm2015/lib/services/property/property.service.js +0 -126
  153. package/esm2015/lib/services/subscription/subscription.service.js +0 -157
  154. package/esm2015/lib/services/tax-review/tax-review-history.service.js +0 -41
  155. package/esm2015/lib/services/tax-review/tax-review.service.js +0 -103
  156. package/esm2015/lib/services/tax-summary/tax-summary.service.js +0 -71
  157. package/esm2015/lib/services/transaction/transaction-allocation.service.js +0 -85
  158. package/esm2015/lib/services/transaction/transaction.service.js +0 -319
  159. package/esm2015/lib/services/user/occupation.service.js +0 -45
  160. package/esm2015/lib/services/user/user.service.js +0 -124
  161. package/esm2015/lib/services/user-event/user-event-setting.service.js +0 -59
  162. package/esm2015/lib/services/user-event/user-event-type.service.js +0 -29
  163. package/esm2015/lib/services/work/work-tank.service.js +0 -236
  164. package/lib/services/notification/notification.service.d.ts +0 -31
  165. package/lib/services/property/property-sale/property-sale.service.d.ts +0 -10
  166. package/lib/services/property/property-sale/tax-exemption/tax-exemption.service.d.ts +0 -11
@@ -1,77 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { BaseRestService } from '../base-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 BaseRestService {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2NoYXQvY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFHOUM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sV0FBWSxTQUFRLGVBQStCO0lBSzlELFlBQ1ksSUFBZ0IsRUFDaEIsc0JBQThDLEVBQ3ZCLFdBQWdCLEVBQ3pDLFVBQXNCO1FBRTlCLEtBQUssQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFMdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBQ3pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFSaEMsZUFBVSxHQUFnQixJQUFJLENBQUM7UUFDL0IsUUFBRyxHQUFXLE9BQU8sQ0FBQztRQUN0QixZQUFPLEdBQVksSUFBSSxDQUFDO1FBU3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFrQixFQUFRLEVBQUU7WUFDakUsSUFBSSxLQUFLLEdBQVcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQywyQkFBMkI7WUFDM0IsTUFBTSxTQUFTLEdBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNyRCwyQkFBMkI7WUFDM0IsTUFBTSxVQUFVLEdBQVMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVUsRUFBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFdkYsUUFBUSxJQUFJLEVBQUU7Z0JBQ1osZUFBZTtnQkFDZixLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUM7b0JBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3RCLE1BQU07Z0JBRVIsMEJBQTBCO2dCQUMxQixLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtvQkFDeEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFVLEVBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN4RSxNQUFNO2dCQUVSLHVDQUF1QztnQkFDdkMsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ25ELE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7b0JBQzFCLE1BQU07Z0JBRVIsMkZBQTJGO2dCQUMzRixnQ0FBZ0M7Z0JBQ2hDLFdBQVc7Z0JBQ1QsK0RBQStEO2dCQUMvRCx1Q0FBdUM7YUFDMUM7WUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt5R0EzRFUsV0FBVyxrRkFRWixhQUFhOzZHQVJaLFdBQVcsY0FGVixNQUFNOzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFTSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYXQgYXMgQ2hhdEJhc2UgfSBmcm9tICcuLi8uLi9kYi9Nb2RlbHMvY2hhdCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU3NlU2VydmljZSB9IGZyb20gJy4uL2V2ZW50L3NzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VSZXN0U2VydmljZSB9IGZyb20gJy4uL2Jhc2UtcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ldmVudC1saXN0ZW5lci5pbnRlcmZhY2UnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCB7IHJlcGxhY2UgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvYXJyYXknO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgQ2hhdCB9IGZyb20gJy4uLy4uL21vZGVscy9jaGF0L2NoYXQnO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljZSBmb3Igd29yayB3aXRoIGNoYXRzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENoYXRTZXJ2aWNlIGV4dGVuZHMgQmFzZVJlc3RTZXJ2aWNlPENoYXRCYXNlLCBDaGF0PiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgbW9kZWxDbGFzczogdHlwZW9mIENoYXQgPSBDaGF0O1xuICB1cmw6IHN0cmluZyA9ICdjaGF0cyc7XG4gIGlzSHlkcmE6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnksXG4gICAgcHJpdmF0ZSBzc2VTZXJ2aWNlOiBTc2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNTRSBhbmQgRXZlbnQgRGlzcGF0Y2hlciBTZXJ2aWNlcyBsaXN0ZW5lcnNcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbkNoYXRzKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGNoYXRzIGV2ZW50c1xuICAgKi9cbiAgbGlzdGVuQ2hhdHMoKTogdm9pZCB7XG4gICAgdGhpcy5zc2VTZXJ2aWNlLm9uKGBjaGF0c2ApLnN1YnNjcmliZSgoY2hhdEJhc2U6IENoYXRCYXNlKTogdm9pZCA9PiB7XG4gICAgICBsZXQgY2FjaGU6IENoYXRbXSA9IGNsb25lRGVlcCh0aGlzLmNhY2hlKTtcbiAgICAgIC8vIGNoYXQgaW5zdGFuY2UgZnJvbSBldmVudFxuICAgICAgY29uc3QgZXZlbnRDaGF0OiBDaGF0ID0gcGxhaW5Ub0NsYXNzKENoYXQsIGNoYXRCYXNlKTtcbiAgICAgIC8vIGNoYXQgaW5zdGFuY2UgZnJvbSBjYWNoZVxuICAgICAgY29uc3QgY2FjaGVkQ2hhdDogQ2hhdCA9IGNhY2hlLmZpbmQoKGNoYXQ6IENoYXQpOiBib29sZWFuID0+IGNoYXQuaWQgPT09IGV2ZW50Q2hhdC5pZCk7XG5cbiAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAvLyBhZGQgbmV3IGNoYXRcbiAgICAgICAgY2FzZSAoIWNhY2hlZENoYXQpOlxuICAgICAgICAgIGNhY2hlLnB1c2goZXZlbnRDaGF0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvLyByZW1vdmUgZGVhY3RpdmF0ZWQgY2hhdFxuICAgICAgICBjYXNlICFldmVudENoYXQuaXNBY3RpdmUoKTpcbiAgICAgICAgICBjYWNoZSA9IGNhY2hlLmZpbHRlcigoY2hhdDogQ2hhdCk6IGJvb2xlYW4gPT4gY2hhdC5pZCAhPT0gZXZlbnRDaGF0LmlkKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvLyB1cGRhdGUgY2hhdCB3aXRoIG5ldyBmaXJtIChyZWFzc2lnbilcbiAgICAgICAgY2FzZSBldmVudENoYXQuZW1wbG95ZWUuaWQgIT09IGNhY2hlZENoYXQuZW1wbG95ZWUuaWQ6XG4gICAgICAgICAgcmVwbGFjZShjYWNoZSwgZXZlbnRDaGF0KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvLyBAVE9ETyB0eXBpbmcgd29ya3MgYmFkIHdpdGggbWF0LXRhYnMgb24gdXNlci1hcmVhLiBOZWVkIHRvIHJlZmFjdG9yIHR5cGluZyBmdW5jdGlvbmFsaXR5XG4gICAgICAgIC8vIHVwZGF0ZSBjYWNoZSB3aXRoIHR5cGluZyB1c2VyXG4gICAgICAgIC8vIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gY2FjaGVkQ2hhdC50eXBpbmdVc2Vycy5wdXNoKG5ldyBVc2VyKGV2ZW50Q2hhdC50eXBpbmdVc2VyKSk7XG4gICAgICAgICAgLy8gcmVwbGFjZShjYWNoZSwgXy5jbG9uZShjYWNoZWRDaGF0KSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,118 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1kb2N1bWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2NoYXQvbWVzc2FnZS1kb2N1bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxhQUFhLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQUcxRSxnREFBZ0Q7QUFDaEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBS2pDLFlBQ1ksSUFBZ0IsRUFDaEIsc0JBQThDLEVBQ3ZCLFdBQWdCO1FBRnZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQVBuRCxRQUFHLEdBQVcsbUJBQW1CLENBQUM7UUFFbEMsaUJBQVksR0FBOEQsSUFBSSxhQUFhLEVBQThDLENBQUM7UUFPeEksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMs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QkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVNJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZURvY3VtZW50IGFzIE1lc3NhZ2VEb2N1bWVudEJhc2UgfSBmcm9tICcuLi8uLi9kYi9Nb2RlbHMvbWVzc2FnZS1kb2N1bWVudCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2V2ZW50LWxpc3RlbmVyLmludGVyZmFjZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgTWVzc2FnZURvY3VtZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoYXQvbWVzc2FnZS1kb2N1bWVudCc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoYXQvbWVzc2FnZSc7XG5cbi8vIEBUT0RPIGltcHJvdmUgYmFzZSByZXN0IHNlcnZpY2UgYW5kIGV4dGVuZCBpdFxuLyoqXG4gKiBTZXJ2aWNlIGZvciB3b3JrIHdpdGggTWVzc2FnZSBEb2N1bWVudHNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZURvY3VtZW50U2VydmljZSBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgdXJsOiBzdHJpbmcgPSAnbWVzc2FnZS1kb2N1bWVudHMnO1xuICBjYWNoZTogUmVhZG9ubHk8QXJyYXk8UmVhZG9ubHk8TWVzc2FnZURvY3VtZW50Pj4+O1xuICBjYWNoZVN1YmplY3Q6IFJlcGxheVN1YmplY3Q8UmVhZG9ubHk8QXJyYXk8UmVhZG9ubHk8TWVzc2FnZURvY3VtZW50Pj4+PiA9IG5ldyBSZXBsYXlTdWJqZWN0PFJlYWRvbmx5PEFycmF5PFJlYWRvbmx5PE1lc3NhZ2VEb2N1bWVudD4+Pj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHRoaXMubGlzdGVuRXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogU1NFIGFuZCBFdmVudCBEaXNwYXRjaGVyIFNlcnZpY2VzIGxpc3RlbmVyc1xuICAgKi9cbiAgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuTWVzc2FnZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsaXN0ZW4gbmV3IG1lc3NhZ2VzIGV2ZW50IHRvIHVwZGF0ZSBkb2N1bWVudHMgY2FjaGVcbiAgICovXG4gIGxpc3Rlbk1lc3NhZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLk1FU1NBR0VfQ1JFQVRFRCkuc3Vic2NyaWJlKChtZXNzYWdlOiBNZXNzYWdlKTogdm9pZCA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5kb2N1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlOiBNZXNzYWdlRG9jdW1lbnRbXSA9IF8uY2xvbmUodGhpcy5jYWNoZSk7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50c0lkczogbnVtYmVyW10gPSB0aGlzLmNhY2hlLm1hcCgoZDogTWVzc2FnZURvY3VtZW50KTogbnVtYmVyID0+IGQuaWQpO1xuICAgICAgICBtZXNzYWdlLmRvY3VtZW50cy5mb3JFYWNoKChkOiBNZXNzYWdlRG9jdW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICBkLmNoYXQgPSBtZXNzYWdlLmNoYXQ7XG4gICAgICAgICAgaWYgKCFkb2N1bWVudHNJZHMuaW5jbHVkZXMoZC5pZCkpIHtcbiAgICAgICAgICAgIGNhY2hlLnB1c2goLi4ubWVzc2FnZS5kb2N1bWVudHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgbGlzdCBvZiBtZXNzYWdlIGRvY3VtZW50c1xuICAgKi9cbiAgZ2V0KCk6IE9ic2VydmFibGU8UmVhZG9ubHk8TWVzc2FnZURvY3VtZW50W10+PiB7XG4gICAgaWYgKCF0aGlzLmNhY2hlKSB7XG4gICAgICB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXNwb25zZTogb2JqZWN0KTogTWVzc2FnZURvY3VtZW50W10gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlWydoeWRyYTptZW1iZXInXS5tYXAoKGRvY0Jhc2U6IE1lc3NhZ2VEb2N1bWVudEJhc2UpOiBNZXNzYWdlRG9jdW1lbnQgPT4gcGxhaW5Ub0NsYXNzKE1lc3NhZ2VEb2N1bWVudCwgZG9jQmFzZSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoZG9jdW1lbnRzOiBNZXNzYWdlRG9jdW1lbnRbXSk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSBkb2N1bWVudHM7XG4gICAgICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwbG9hZCBmaWxlIHRvIGNoYXRcbiAgICogQHBhcmFtIGNoYXRJZFxuICAgKiBAcGFyYW0gZmlsZVxuICAgKi9cbiAgYWRkKGNoYXRJZDogbnVtYmVyLCBmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxNZXNzYWdlRG9jdW1lbnQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2NoYXQnLCBjaGF0SWQudG9TdHJpbmcoKSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH1gLCBmb3JtRGF0YSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGRvY3VtZW50QmFzZTogTWVzc2FnZURvY3VtZW50QmFzZSk6IE1lc3NhZ2VEb2N1bWVudCA9PiB7XG4gICAgICAgICAgY29uc3QgZG9jdW1lbnQ6IE1lc3NhZ2VEb2N1bWVudCA9IHBsYWluVG9DbGFzcyhNZXNzYWdlRG9jdW1lbnQsIGRvY3VtZW50QmFzZSk7XG4gICAgICAgICAgY29uc3QgY2FjaGU6IE1lc3NhZ2VEb2N1bWVudFtdID0gXy5jbG9uZSh0aGlzLmNhY2hlKTtcbiAgICAgICAgICBjYWNoZS5wdXNoKGRvY3VtZW50KTtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gICAgICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICAgICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwbG9hZCBtdWx0aXBsZSBmaWxlcyB0byBjaGF0XG4gICAqIEBwYXJhbSBjaGF0SWRcbiAgICogQHBhcmFtIGZpbGVzXG4gICAqL1xuICBhZGRCYXRjaChjaGF0SWQ6IG51bWJlciwgZmlsZXM6IEZpbGVbXSk6IE9ic2VydmFibGU8TWVzc2FnZURvY3VtZW50W10+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChcbiAgICAgIGZpbGVzLm1hcCgoZmlsZTogRmlsZSk6IE9ic2VydmFibGU8TWVzc2FnZURvY3VtZW50PiA9PiB0aGlzLmFkZChjaGF0SWQsIGZpbGUpKVxuICAgICkucGlwZShcbiAgICAgIG1hcCgoZG9jc0Jhc2U6IE1lc3NhZ2VEb2N1bWVudEJhc2VbXSk6IE1lc3NhZ2VEb2N1bWVudFtdID0+IHtcbiAgICAgICAgcmV0dXJuIGRvY3NCYXNlLm1hcCgoZG9jQmFzZTogTWVzc2FnZURvY3VtZW50QmFzZSk6IE1lc3NhZ2VEb2N1bWVudCA9PiBwbGFpblRvQ2xhc3MoTWVzc2FnZURvY3VtZW50LCBkb2NCYXNlKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIHVwbG9hZGVkIGNoYXQgZG9jdW1lbnRcbiAgICogQHBhcmFtIGNoYXRJZFxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZFxuICAgKi9cbiAgZGVsZXRlKGNoYXRJZDogbnVtYmVyLCBkb2N1bWVudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke2RvY3VtZW50SWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLmZpbHRlcigoZG9jdW1lbnQ6IE1lc3NhZ2VEb2N1bWVudCk6IGJvb2xlYW4gPT4gZG9jdW1lbnQuaWQgIT09IGRvY3VtZW50SWQpO1xuICAgICAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQodGhpcy5jYWNoZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG59XG4iXX0=
@@ -1,65 +0,0 @@
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 { BaseRestService } from '../base-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 BaseRestService {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2NoYXQvbWVzc2FnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7OztBQUUxRTs7R0FFRztBQUlILE1BQU0sT0FBTyxjQUFlLFNBQVEsZUFBcUM7SUFLdkUsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0IsRUFDekMsVUFBc0I7UUFFOUIsS0FBSyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUx2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVJoQyxlQUFVLEdBQW1CLE9BQU8sQ0FBQztRQUNyQyxRQUFHLEdBQVcsVUFBVSxDQUFDO1FBQ3pCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFTdEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssY0FBYztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUF3QixFQUFRLEVBQUU7WUFDMUUsTUFBTSxPQUFPLEdBQVksWUFBWSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM1RCxNQUFNLEtBQUssR0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QyxrRUFBa0U7WUFDbEUsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3BCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUMvRjtZQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzRHQXZDVSxjQUFjLGtGQVFmLGFBQWE7Z0hBUlosY0FBYyxjQUZiLE1BQU07NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVNJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZSBhcyBNZXNzYWdlQmFzZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscy9tZXNzYWdlJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ldmVudC1saXN0ZW5lci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyByZXBsYWNlIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hhdC9tZXNzYWdlJztcbmltcG9ydCB7IEJhc2VSZXN0U2VydmljZSB9IGZyb20gJy4uL2Jhc2UtcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3NlU2VydmljZSB9IGZyb20gJy4uL2V2ZW50L3NzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHdvcmsgd2l0aCBtZXNzYWdlc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlU2VydmljZSBleHRlbmRzIEJhc2VSZXN0U2VydmljZTxNZXNzYWdlQmFzZSwgTWVzc2FnZT4gaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBNZXNzYWdlID0gTWVzc2FnZTtcbiAgdXJsOiBzdHJpbmcgPSAnbWVzc2FnZXMnO1xuICBpc0h5ZHJhOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55LFxuICAgIHByaXZhdGUgc3NlU2VydmljZTogU3NlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCk7XG4gICAgdGhpcy5saXN0ZW5FdmVudHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTU0UgYW5kIEV2ZW50IERpc3BhdGNoZXIgU2VydmljZXMgbGlzdGVuZXJzXG4gICAqL1xuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5NZXNzYWdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN1YnNjcmliZSB0byBuZXcgY2hhdCBtZXNzYWdlc1xuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5NZXNzYWdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNzZVNlcnZpY2Uub24oYG1lc3NhZ2VzYCkuc3Vic2NyaWJlKChtZXNzYWdlQmFzZTogTWVzc2FnZUJhc2UpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2U6IE1lc3NhZ2UgPSBwbGFpblRvQ2xhc3MoTWVzc2FnZSwgbWVzc2FnZUJhc2UpO1xuICAgICAgY29uc3QgY2FjaGU6IE1lc3NhZ2VbXSA9IF8uY2xvbmUodGhpcy5jYWNoZSk7XG4gICAgICAvLyB1cGRhdGUgZXhpc3RpbmcgbWVzc2FnZSBpZiByZWFkIGFuZCBhZGQgbmV3IG1lc3NhZ2UgaWYgbm90IHJlYWRcbiAgICAgIGlmIChtZXNzYWdlLmlzUmVhZCgpKSB7XG4gICAgICAgIHJlcGxhY2UoY2FjaGUsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FjaGUucHVzaChtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLk1FU1NBR0VfQ1JFQVRFRCwgbWVzc2FnZSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,98 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { forkJoin } from 'rxjs';
3
- import { map } from 'rxjs/operators';
4
- import { ClientMovementCollection } from '../../collections/client-movement.collection';
5
- import { plainToClass } from 'class-transformer';
6
- import { BaseRestService } from '../base-rest.service';
7
- import { ClientMovement } from '../../models/client/client-movement';
8
- import { AppEvent } from '../../models/event/app-event';
9
- import { AppEventTypeEnum } from '../../models/event/app-event-type.enum';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/common/http";
12
- import * as i2 from "../event/event-dispatcher.service";
13
- export class ClientMovementService extends BaseRestService {
14
- constructor(http, eventDispatcherService, environment) {
15
- super(http, eventDispatcherService, environment);
16
- this.http = http;
17
- this.eventDispatcherService = eventDispatcherService;
18
- this.environment = environment;
19
- this.modelClass = ClientMovement;
20
- this.url = 'client-movements';
21
- this.isHydra = true;
22
- this.listenEvents();
23
- }
24
- /**
25
- * @TODO BaseRestService should return collection
26
- */
27
- getAll() {
28
- return this.get().pipe(map((clientMovements) => {
29
- return new ClientMovementCollection(clientMovements);
30
- }));
31
- }
32
- getActive() {
33
- return this.getAll().pipe(map((clientMovements) => {
34
- return clientMovements.active;
35
- }));
36
- }
37
- getActiveByFirmType(type) {
38
- return this.getActive().pipe(map((clientMovements) => {
39
- return clientMovements.getByFirmType(type);
40
- }));
41
- }
42
- update(movement) {
43
- // extend base 'add' method and pass into it movement without id
44
- return super.add(plainToClass(ClientMovement, Object.assign({}, movement, { id: null }))).pipe(map((updatedMovement) => {
45
- // remove provided movement from cache
46
- this.cache = this.cache.filter((item) => item.id !== movement.id);
47
- this.updateCache();
48
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.CLIENT_TRANSFER_TO_OTHER_EMPLOYEE, [updatedMovement.client]));
49
- return updatedMovement;
50
- }));
51
- }
52
- updateBatch(clientMovements) {
53
- const batch = clientMovements.map((clientMovement) => this.update(clientMovement));
54
- return forkJoin(batch);
55
- }
56
- /**
57
- * Reject current firm
58
- */
59
- close(clientMovement) {
60
- clientMovement.dateTo = new Date();
61
- return this.http.put(`${this.environment.apiV2}/client-movements/${clientMovement.id}/close`, clientMovement)
62
- .pipe(map(() => {
63
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.CLIENT_MOVEMENT_CLOSED, null));
64
- this.cache = this.cache.filter((movement) => movement.id !== clientMovement.id);
65
- this.updateCache();
66
- }));
67
- }
68
- /**
69
- * Listen Event Dispatcher service
70
- */
71
- listenEvents() {
72
- this.listenClientInvites();
73
- }
74
- /**
75
- * Listen to EventDispatcherService event related to clients invitations
76
- */
77
- listenClientInvites() {
78
- this.eventDispatcherService.on(AppEventTypeEnum.CLIENT_INVITE_ACCEPTED)
79
- .subscribe(() => {
80
- this.fetch().subscribe((clientMovements) => {
81
- this.cache = clientMovements;
82
- this.updateCache();
83
- });
84
- });
85
- }
86
- }
87
- ClientMovementService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ClientMovementService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
88
- ClientMovementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ClientMovementService, providedIn: 'root' });
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ClientMovementService, decorators: [{
90
- type: Injectable,
91
- args: [{
92
- providedIn: 'root'
93
- }]
94
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
95
- type: Inject,
96
- args: ['environment']
97
- }] }]; } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LW1vdmVtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvY2xpZW50L2NsaWVudC1tb3ZlbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBR3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7OztBQU0xRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBbUQ7SUFLNUYsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0I7UUFFakQsS0FBSyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUp2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFQbkQsZUFBVSxHQUEwQixjQUFjLENBQUM7UUFDbkQsUUFBRyxHQUFXLGtCQUFrQixDQUFDO1FBQ2pDLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFRdEIsSUFBSSxDQUFDLFlB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O0lBQ0gsWUFBWTtRQUNWLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDO2FBQ3BFLFNBQVMsQ0FBQyxHQUFTLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQWlDLEVBQUUsRUFBRTtnQkFDM0QsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7bUhBOUZVLHFCQUFxQixrRkFRdEIsYUFBYTt1SEFSWixxQkFBcUIsY0FGcEIsTUFBTTs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFTSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsaWVudE1vdmVtZW50IGFzIENsaWVudE1vdmVtZW50QmFzZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscy9jbGllbnQtbW92ZW1lbnQnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENsaWVudE1vdmVtZW50Q29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2NsaWVudC1tb3ZlbWVudC5jb2xsZWN0aW9uJztcbmltcG9ydCB7IEZpcm1UeXBlRW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL2Zpcm0tdHlwZS5lbnVtJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBCYXNlUmVzdFNlcnZpY2UgfSBmcm9tICcuLi9iYXNlLXJlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDbGllbnRNb3ZlbWVudCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGllbnQvY2xpZW50LW1vdmVtZW50JztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpZW50TW92ZW1lbnRTZXJ2aWNlIGV4dGVuZHMgQmFzZVJlc3RTZXJ2aWNlPENsaWVudE1vdmVtZW50QmFzZSwgQ2xpZW50TW92ZW1lbnQ+IHtcbiAgbW9kZWxDbGFzczogdHlwZW9mIENsaWVudE1vdmVtZW50ID0gQ2xpZW50TW92ZW1lbnQ7XG4gIHVybDogc3RyaW5nID0gJ2NsaWVudC1tb3ZlbWVudHMnO1xuICBpc0h5ZHJhOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBUT0RPIEJhc2VSZXN0U2VydmljZSBzaG91bGQgcmV0dXJuIGNvbGxlY3Rpb25cbiAgICovXG4gIGdldEFsbCgpOiBPYnNlcnZhYmxlPENsaWVudE1vdmVtZW50Q29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpLnBpcGUoXG4gICAgICBtYXAoKGNsaWVudE1vdmVtZW50czogQ2xpZW50TW92ZW1lbnRbXSkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENsaWVudE1vdmVtZW50Q29sbGVjdGlvbihjbGllbnRNb3ZlbWVudHMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0QWN0aXZlKCk6IE9ic2VydmFibGU8Q2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsKCkucGlwZShcbiAgICAgIG1hcCgoY2xpZW50TW92ZW1lbnRzOiBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24pOiBDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24gPT4ge1xuICAgICAgICByZXR1cm4gY2xpZW50TW92ZW1lbnRzLmFjdGl2ZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldEFjdGl2ZUJ5RmlybVR5cGUodHlwZTogRmlybVR5cGVFbnVtKTogT2JzZXJ2YWJsZTxDbGllbnRNb3ZlbWVudENvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRBY3RpdmUoKS5waXBlKFxuICAgICAgbWFwKChjbGllbnRNb3ZlbWVudHM6IENsaWVudE1vdmVtZW50Q29sbGVjdGlvbik6IENsaWVudE1vdmVtZW50Q29sbGVjdGlvbiA9PiB7XG4gICAgICAgIHJldHVybiBjbGllbnRNb3ZlbWVudHMuZ2V0QnlGaXJtVHlwZSh0eXBlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZShtb3ZlbWVudDogQ2xpZW50TW92ZW1lbnQpOiBPYnNlcnZhYmxlPENsaWVudE1vdmVtZW50PiB7XG4gICAgLy8gZXh0ZW5kIGJhc2UgJ2FkZCcgbWV0aG9kIGFuZCBwYXNzIGludG8gaXQgbW92ZW1lbnQgd2l0aG91dCBpZFxuICAgIHJldHVybiBzdXBlci5hZGQocGxhaW5Ub0NsYXNzKENsaWVudE1vdmVtZW50LCBPYmplY3QuYXNzaWduKHt9LCBtb3ZlbWVudCwge2lkOiBudWxsfSkpKS5waXBlKFxuICAgICAgbWFwKCh1cGRhdGVkTW92ZW1lbnQ6IENsaWVudE1vdmVtZW50KSA9PiB7XG4gICAgICAgIC8vIHJlbW92ZSBwcm92aWRlZCBtb3ZlbWVudCBmcm9tIGNhY2hlXG4gICAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLmZpbHRlcigoaXRlbTogQ2xpZW50TW92ZW1lbnQpID0+IGl0ZW0uaWQgIT09IG1vdmVtZW50LmlkKTtcbiAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuXG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5DTElFTlRfVFJBTlNGRVJfVE9fT1RIRVJfRU1QTE9ZRUUsIFt1cGRhdGVkTW92ZW1lbnQuY2xpZW50XSkpO1xuXG4gICAgICAgIHJldHVybiB1cGRhdGVkTW92ZW1lbnQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVCYXRjaChjbGllbnRNb3ZlbWVudHM6IENsaWVudE1vdmVtZW50W10pOiBPYnNlcnZhYmxlPENsaWVudE1vdmVtZW50W10+IHtcbiAgICBjb25zdCBiYXRjaDogT2JzZXJ2YWJsZTxDbGllbnRNb3ZlbWVudD5bXSA9IGNsaWVudE1vdmVtZW50cy5tYXAoKGNsaWVudE1vdmVtZW50OiBDbGllbnRNb3ZlbWVudCkgPT4gdGhpcy51cGRhdGUoY2xpZW50TW92ZW1lbnQpKTtcbiAgICByZXR1cm4gZm9ya0pvaW4oYmF0Y2gpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlamVjdCBjdXJyZW50IGZpcm1cbiAgICovXG4gIGNsb3NlKGNsaWVudE1vdmVtZW50OiBDbGllbnRNb3ZlbWVudCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNsaWVudE1vdmVtZW50LmRhdGVUbyA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vY2xpZW50LW1vdmVtZW50cy8ke2NsaWVudE1vdmVtZW50LmlkfS9jbG9zZWAsIGNsaWVudE1vdmVtZW50KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkNMSUVOVF9NT1ZFTUVOVF9DTE9TRUQsIG51bGwpKTtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5maWx0ZXIoKG1vdmVtZW50OiBDbGllbnRNb3ZlbWVudCk6IGJvb2xlYW4gPT4gbW92ZW1lbnQuaWQgIT09IGNsaWVudE1vdmVtZW50LmlkKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBFdmVudCBEaXNwYXRjaGVyIHNlcnZpY2VcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbkNsaWVudEludml0ZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRXZlbnREaXNwYXRjaGVyU2VydmljZSBldmVudCByZWxhdGVkIHRvIGNsaWVudHMgaW52aXRhdGlvbnNcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuQ2xpZW50SW52aXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5DTElFTlRfSU5WSVRFX0FDQ0VQVEVEKVxuICAgICAgLnN1YnNjcmliZSgoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuZmV0Y2goKS5zdWJzY3JpYmUoKGNsaWVudE1vdmVtZW50czogQ2xpZW50TW92ZW1lbnRbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSBjbGllbnRNb3ZlbWVudHM7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,37 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { map } from 'rxjs/operators';
3
- import { plainToClass } from 'class-transformer';
4
- import { ClientPortfolioReport } from '../../models/client/client-portfolio-report';
5
- import { ClientPortfolioReportCollection } from '../../collections/client-portfolio-report.collection';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common/http";
8
- // @Todo refactor with BaseRest service
9
- /**
10
- * Service to work with employee clients tax summary data
11
- */
12
- export class ClientPortfolioReportService {
13
- constructor(http, environment) {
14
- this.http = http;
15
- this.environment = environment;
16
- this.url = 'portfolio-reports';
17
- }
18
- get() {
19
- return this.http.get(`${this.environment.apiV2}/${this.url}`)
20
- .pipe(map((response) => {
21
- const clientReports = response['hydra:member'].map((item) => plainToClass(ClientPortfolioReport, item));
22
- return new ClientPortfolioReportCollection(clientReports);
23
- }));
24
- }
25
- }
26
- ClientPortfolioReportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ClientPortfolioReportService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
27
- ClientPortfolioReportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ClientPortfolioReportService, providedIn: 'root' });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ClientPortfolioReportService, decorators: [{
29
- type: Injectable,
30
- args: [{
31
- providedIn: 'root'
32
- }]
33
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: undefined, decorators: [{
34
- type: Inject,
35
- args: ['environment']
36
- }] }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LXBvcnRmb2xpby1yZXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jbGllbnQvY2xpZW50LXBvcnRmb2xpby1yZXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7QUFFdkcsdUNBQXVDO0FBQ3ZDOztHQUVHO0FBSUgsTUFBTSxPQUFPLDRCQUE0QjtJQUd2QyxZQUNVLElBQWdCLEVBQ08sV0FBZ0I7UUFEdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNPLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBSmpELFFBQUcsR0FBVyxtQkFBbUIsQ0FBQztJQU1sQyxDQUFDO0lBRUQsR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDMUQsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtZQUN2QixNQUFNLGFBQWEsR0FBNEIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekksT0FBTyxJQUFJLCtCQUErQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDOzswSEFqQlUsNEJBQTRCLDRDQUs3QixhQUFhOzhIQUxaLDRCQUE0QixjQUYzQixNQUFNOzRGQUVQLDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU1JLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IENsaWVudFBvcnRmb2xpb1JlcG9ydCB9IGZyb20gJy4uLy4uL21vZGVscy9jbGllbnQvY2xpZW50LXBvcnRmb2xpby1yZXBvcnQnO1xuaW1wb3J0IHsgQ2xpZW50UG9ydGZvbGlvUmVwb3J0Q29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2NsaWVudC1wb3J0Zm9saW8tcmVwb3J0LmNvbGxlY3Rpb24nO1xuXG4vLyBAVG9kbyByZWZhY3RvciB3aXRoIEJhc2VSZXN0IHNlcnZpY2Vcbi8qKlxuICogU2VydmljZSB0byB3b3JrIHdpdGggZW1wbG95ZWUgY2xpZW50cyB0YXggc3VtbWFyeSBkYXRhXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENsaWVudFBvcnRmb2xpb1JlcG9ydFNlcnZpY2Uge1xuICB1cmw6IHN0cmluZyA9ICdwb3J0Zm9saW8tcmVwb3J0cyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICB9XG5cbiAgZ2V0KCk6IE9ic2VydmFibGU8Q2xpZW50UG9ydGZvbGlvUmVwb3J0Q29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBvYmplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCBjbGllbnRSZXBvcnRzOiBDbGllbnRQb3J0Zm9saW9SZXBvcnRbXSA9IHJlc3BvbnNlWydoeWRyYTptZW1iZXInXS5tYXAoKGl0ZW06IG9iamVjdCkgPT4gcGxhaW5Ub0NsYXNzKENsaWVudFBvcnRmb2xpb1JlcG9ydCwgaXRlbSkpO1xuICAgICAgICAgIHJldHVybiBuZXcgQ2xpZW50UG9ydGZvbGlvUmVwb3J0Q29sbGVjdGlvbihjbGllbnRSZXBvcnRzKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,146 +0,0 @@
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 { BaseRestService } from '../base-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 BaseRestService {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjaWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7OztBQU1yRixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBK0M7SUFJdEYsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0I7UUFFakQsS0FBSyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUp2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFObkQsZUFBVSxHQUF3QixZQUFZLENBQUM7UUFDL0MsUUFBRyxHQUFXLGVBQWUsQ0FBQztR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QUNLLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUM3RyxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzlILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQW5KVSxtQkFBbUIsa0ZBT3BCLGFBQWE7cUhBUFosbUJBQW1CLGNBRmxCLE1BQU07NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXByZWNpYXRpb24gYXMgRGVwcmVjaWF0aW9uQmFzZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscy9kZXByZWNpYXRpb24nO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgcmVwbGFjZSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9hcnJheSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgQmFzZVJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vYmFzZS1yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVwcmVjaWF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RlcHJlY2lhdGlvbi9kZXByZWNpYXRpb24nO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudCB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQnO1xuaW1wb3J0IHsgQXBwRXZlbnRUeXBlRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQtdHlwZS5lbnVtJztcbmltcG9ydCB7IEZpbmFuY2lhbFllYXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmluYW5jaWFsLXllYXIvZmluYW5jaWFsLXllYXInO1xuaW1wb3J0IHsgRGVwcmVjaWF0aW9uUmVjZWlwdCB9IGZyb20gJy4uLy4uL21vZGVscy9kZXByZWNpYXRpb24vZGVwcmVjaWF0aW9uLXJlY2VpcHQnO1xuaW1wb3J0IHsgQmFua0FjY291bnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZXByZWNpYXRpb25TZXJ2aWNlIGV4dGVuZHMgQmFzZVJlc3RTZXJ2aWNlPERlcHJlY2lhdGlvbkJhc2UsIERlcHJlY2lhdGlvbj4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgRGVwcmVjaWF0aW9uID0gRGVwcmVjaWF0aW9uO1xuICB1cmw6IHN0cmluZyA9ICdkZXByZWNpYXRpb25zJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNpbmdsZSBkZXByZWNpYXRpb25cbiAgICogQFRPRE8gYWRkIGF1dG8tZ2VuZXJhdGlvbiBmb3IgZXZlbnRzXG4gICAqL1xuICBhZGQoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pOiBPYnNlcnZhYmxlPERlcHJlY2lhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmFkZEJhdGNoKFtkZXByZWNpYXRpb25dKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobmV3RGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uW10pOiBEZXByZWNpYXRpb24gPT4ge1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5ERVBSRUNJQVRJT05TX0NSRUFURUQsIG5ld0RlcHJlY2lhdGlvbnNbMF0pKTtcbiAgICAgICAgICByZXR1cm4gbmV3RGVwcmVjaWF0aW9uc1swXTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG11bHRpcGxlIGRlcHJlY2lhdGlvbnNcbiAgICogQFRPRE8gYWRkIGF1dG8tZ2VuZXJhdGlvbiBmb3IgZXZlbnRzXG4gICAqL1xuICBhZGRCYXRjaChkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25bXSk6IE9ic2VydmFibGU8RGVwcmVjaWF0aW9uW10+IHtcbiAgICByZXR1cm4gc3VwZXIuYWRkQmF0Y2goZGVwcmVjaWF0aW9ucykucGlwZShcbiAgICAgIG1hcCgobmV3RGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uW10pOiBEZXByZWNpYXRpb25bXSA9PiB7XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5ERVBSRUNJQVRJT05TX0NSRUFURUQsIG5ld0RlcHJlY2lhdGlvbnMpKTtcbiAgICAgICAgcmV0dXJuIG5ld0RlcHJlY2lhdGlvbnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIERlcHJlY2lhdGlvbnMgZXZlbnRzXG4gICAqL1xuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Ub1VwZGF0ZWRMb2FuKCk7XG4gICAgdGhpcy5saXN0ZW5Ub1ZlaGljbGVDbGFpbSgpO1xuICAgIHRoaXMubGlzdGVuVG9VcGRhdGVkQmFua0FjY291bnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGVwcmVjaWF0aW9ucyByZWxhdGVkIHRvIFZlaGljbGUgY2F0ZWdvcnlcbiAgICovXG4gIGdldFZlaGljbGVEZXByZWNpYXRpb25zKCk6IE9ic2VydmFibGU8RGVwcmVjaWF0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChkZXByZWNpYXRpb25zOiBEZXByZWNpYXRpb25bXSkgPT4ge1xuICAgICAgICByZXR1cm4gZGVwcmVjaWF0aW9ucy5maWx0ZXIoKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKSA9PiBkZXByZWNpYXRpb24uaXNWZWhpY2xlRGVwcmVjaWF0aW9uKCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2xvc2VCYWxhbmNlKGRlcHJlY2lhdGlvbjogRGVwcmVjaWF0aW9uKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0vY2xvc2luZy1iYWxhbmNlP2ZpbmFuY2lhbFllYXI9JHtuZXcgRmluYW5jaWFsWWVhcigpLnllYXJ9YCwgZGVwcmVjaWF0aW9uKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IG51bWJlcikgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZSB8fCAwO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyB3cm9uZyBwbGFjZSwgbW92ZSB0byBjb2xsZWN0aW9uIG1vZGVsXG4gICAqL1xuICBjYWxjdWxhdGVTdW1tYXJ5QW1vdW50KGRlcHJlY2lhdGlvbkxpc3Q6IERlcHJlY2lhdGlvbltdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGVwcmVjaWF0aW9uTGlzdC5yZWR1Y2UoKHN1bTogbnVtYmVyLCBkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbikgPT4ge1xuICAgICAgLy8gZGVwcmVjaWF0aW9uIG1heSBub3QgaGF2ZSBmb3JlY2FzdCBpdGVtIGZvciBjdXJyZW50IGZpbmFuY2lhbCB5ZWFyXG4gICAgICBpZiAoIWRlcHJlY2lhdGlvbi5jdXJyZW50WWVhckZvcmVjYXN0KSB7XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdW0gKyBkZXByZWNpYXRpb24uY3VycmVudFllYXJGb3JlY2FzdC5jbGFpbUFtb3VudDtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUJvcnJvd2luZ0V4cGVuc2VzKGRlcHJlY2lhdGlvbkxpc3Q6IERlcHJlY2lhdGlvbltdKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRCeUlkcyhkZXByZWNpYXRpb25MaXN0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZGVwcmVjaWF0aW9uczogRGVwcmVjaWF0aW9uW10pID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVTdW1tYXJ5QW1vdW50KGRlcHJlY2lhdGlvbnMuZmlsdGVyKChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbikgPT4gZGVwcmVjaWF0aW9uLmlzQm9ycm93aW5nRXhwZW5zZSgpKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgY2FsY3VsYXRlRGVwcmVjaWF0aW9ucyhkZXByZWNpYXRpb25MaXN0OiBEZXByZWNpYXRpb25bXSk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QnlJZHMoZGVwcmVjaWF0aW9uTGlzdClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGRlcHJlY2lhdGlvbnM6IERlcHJlY2lhdGlvbltdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlU3VtbWFyeUFtb3VudChkZXByZWNpYXRpb25zLmZpbHRlcigoZGVwcmVjaWF0aW9uOiBEZXByZWNpYXRpb24pID0+ICFkZXByZWNpYXRpb24uaXNCb3Jyb3dpbmdFeHBlbnNlKCkpKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBsb2FkIGRlcHJlY2lhdGlvbiByZWNlaXB0XG4gICAqIEBwYXJhbSBkZXByZWNpYXRpb24gZm9yIHdoaWNoIHdpbGwgYmUgdXBsb2FkZWQgcmVjZWlwdFxuICAgKi9cbiAgdXBsb2FkUmVjZWlwdChkZXByZWNpYXRpb246IERlcHJlY2lhdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGRlcHJlY2lhdGlvbi5maWxlKTtcbiAgICBkZXByZWNpYXRpb24ucmVjZWlwdCA9IG51bGw7XG5cbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke2RlcHJlY2lhdGlvbi5pZH0vcmVjZWlwdHNgLCBmb3JtRGF0YSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlY2VpcHRSZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8ga2VlcCBmaWxlIGFmdGVyIHNhdmVcbiAgICAgICAgZGVwcmVjaWF0aW9uLmZpbGUgPSBudWxsO1xuICAgICAgICBkZXByZWNpYXRpb24ucmVjZWlwdCA9IHBsYWluVG9DbGFzcyhEZXByZWNpYXRpb25SZWNlaXB0LCByZWNlaXB0UmVzcG9uc2UpO1xuICAgICAgICByZXBsYWNlKHRoaXMuY2FjaGUsIGRlcHJlY2lhdGlvbik7XG4gICAgICAgIHRoaXMuY2FjaGVTdWJqZWN0Lm5leHQodGhpcy5jYWNoZS5zbGljZSgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIGV2ZW50IHJlbGF0ZWQgdG8gdXBkYXRlZCBiYW5rIGxvYW5cbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9VcGRhdGVkTG9hbigpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oW0FwcEV2ZW50VHlwZUVudW0uTE9BTl9VUERBVEVELCBBcHBFdmVudFR5cGVFbnVtLlBST1BFUlRZX1NIQVJFX1VQREFURURdKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mZXRjaCgpLnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIGV2ZW50IHJlbGF0ZWQgdG8gdXBkYXRlZCBiYW5rIGFjY291bnRcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9VcGRhdGVkQmFua0FjY291bnQoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKFtBcHBFdmVudFR5cGVFbnVtLkJBTktfQUNDT1VOVF9VUERBVEVEXSkuc3Vic2NyaWJlKChiYW5rQWNjb3VudDogQmFua0FjY291bnQpID0+IHtcbiAgICAgIGlmIChiYW5rQWNjb3VudC5pc1Byb3BlcnR5VGFuaygpKSB7XG4gICAgICAgIHRoaXMuZmV0Y2goKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRXZlbnREaXNwYXRjaGVyU2VydmljZSBldmVudCByZWxhdGVkIHRvIHVwZGF0ZWQgdmVoaWNsZSBjbGFpbVxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1ZlaGljbGVDbGFpbSgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oW0FwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELCBBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fVVBEQVRFRF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZldGNoKCkuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==