taxtank-core 0.28.118 → 0.29.1

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 (253) hide show
  1. package/bundles/taxtank-core.umd.js +8560 -8748
  2. package/bundles/taxtank-core.umd.js.map +1 -1
  3. package/esm2015/lib/collections/bank-account.collection.js +5 -1
  4. package/esm2015/lib/collections/chart-accounts.collection.js +13 -2
  5. package/esm2015/lib/collections/chat/chat.collection.js +26 -0
  6. package/esm2015/lib/collections/chat/index.js +4 -0
  7. package/esm2015/lib/collections/chat/message-document.collection.js +13 -0
  8. package/esm2015/lib/collections/chat/message.collection.js +33 -0
  9. package/esm2015/lib/collections/collection.js +5 -1
  10. package/esm2015/lib/collections/index.js +25 -3
  11. package/esm2015/lib/collections/loan/index.js +3 -0
  12. package/esm2015/lib/collections/loan/loan.collection.js +7 -1
  13. package/esm2015/lib/collections/property/index.js +2 -1
  14. package/esm2015/lib/collections/property/property-share.collection.js +23 -0
  15. package/esm2015/lib/collections/report/index.js +7 -0
  16. package/esm2015/lib/collections/sole/index.js +2 -1
  17. package/esm2015/lib/collections/subscription/index.js +2 -0
  18. package/esm2015/lib/collections/tax-summary/index.js +3 -0
  19. package/esm2015/lib/collections/user-event-type-collection.js +7 -0
  20. package/esm2015/lib/db/Models/bank/bank-account.js +3 -3
  21. package/esm2015/lib/db/Models/bank/bank-connection.js +3 -3
  22. package/esm2015/lib/db/Models/bank/bank-transaction-rule.js +4 -0
  23. package/esm2015/lib/db/Models/bank/bank-transaction.js +3 -3
  24. package/esm2015/lib/db/Models/document/document-base.js +4 -0
  25. package/esm2015/lib/db/Models/firm/firm-invite.js +4 -0
  26. package/esm2015/lib/db/Models/firm/message.js +3 -3
  27. package/esm2015/lib/db/Models/index.js +102 -0
  28. package/esm2015/lib/db/Models/loan/loan-payout.js +3 -3
  29. package/esm2015/lib/db/Models/loan/loan.js +3 -3
  30. package/esm2015/lib/db/Models/property/property-category-movement.js +3 -3
  31. package/esm2015/lib/db/Models/property/property-category.js +3 -3
  32. package/esm2015/lib/db/Models/property/property-sale/property-sale.js +3 -3
  33. package/esm2015/lib/db/Models/property/property-share.js +3 -3
  34. package/esm2015/lib/db/Models/spare/spare-document-category.js +4 -0
  35. package/esm2015/lib/db/Models/spare/spare-document.js +4 -0
  36. package/esm2015/lib/db/Models/tax-calculation.js +4 -0
  37. package/esm2015/lib/db/Models/transaction/transaction-base.js +3 -3
  38. package/esm2015/lib/interceptors/basiq-client-id.interceptor.js +3 -3
  39. package/esm2015/lib/interceptors/basiq-token.interceptor.js +5 -5
  40. package/esm2015/lib/interceptors/corelogic-interceptor.js +3 -3
  41. package/esm2015/lib/interceptors/financial-year-interceptor.js +3 -3
  42. package/esm2015/lib/interceptors/interceptors.module.js +4 -4
  43. package/esm2015/lib/interceptors/jwt-interceptor.js +3 -3
  44. package/esm2015/lib/interceptors/preloader.interceptor.js +3 -3
  45. package/esm2015/lib/interceptors/user-switcher-interceptor.js +3 -3
  46. package/esm2015/lib/interfaces/index.js +18 -0
  47. package/esm2015/lib/models/bank/basiq/basiq-token.js +4 -2
  48. package/esm2015/lib/models/borrowing-expense/index.js +3 -0
  49. package/esm2015/lib/models/chart-accounts/index.js +2 -2
  50. package/esm2015/lib/models/chat/index.js +5 -0
  51. package/esm2015/lib/models/depreciation/depreciation-lvp-rate.enum.js +9 -0
  52. package/esm2015/lib/models/depreciation/index.js +10 -0
  53. package/esm2015/lib/models/dictionary/index.js +2 -0
  54. package/esm2015/lib/models/event/app-event-type.enum.js +68 -70
  55. package/esm2015/lib/models/event/index.js +3 -0
  56. package/esm2015/lib/models/financial-year/index.js +5 -0
  57. package/esm2015/lib/models/index.js +12 -2
  58. package/esm2015/lib/models/loan/index.js +5 -0
  59. package/esm2015/lib/models/notification/index.js +2 -0
  60. package/esm2015/lib/models/property/index.js +18 -0
  61. package/esm2015/lib/models/property/property.js +1 -3
  62. package/esm2015/lib/models/user/index.js +10 -0
  63. package/esm2015/lib/services/account-setup/account-setup.service.js +6 -7
  64. package/esm2015/lib/services/affiliate/rewardful/rewardful.service.js +3 -3
  65. package/esm2015/lib/services/asset/assets.service.js +3 -3
  66. package/esm2015/lib/services/auth/auth.service.js +3 -3
  67. package/esm2015/lib/services/auth/jwt.service.js +3 -3
  68. package/esm2015/lib/services/bank/bank-account-calculation.service.js +3 -3
  69. package/esm2015/lib/services/bank/bank-transaction-calculation.service.js +3 -3
  70. package/esm2015/lib/services/event/event-dispatcher.service.js +3 -3
  71. package/esm2015/lib/services/event/sse.service.js +3 -3
  72. package/esm2015/lib/services/export/export-formatter.service.js +3 -3
  73. package/esm2015/lib/services/header-title/header-title.service.js +3 -3
  74. package/esm2015/lib/services/http/address/address.service.js +3 -3
  75. package/esm2015/lib/services/http/bank/bank-account/bank-account.service.js +16 -71
  76. package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +42 -42
  77. package/esm2015/lib/services/http/bank/bank-transaction/bank-transaction.service.js +17 -33
  78. package/esm2015/lib/services/http/bank/bank.service.js +15 -10
  79. package/esm2015/lib/services/http/bank/basiq/basiq-token.service.js +18 -20
  80. package/esm2015/lib/services/http/bank/basiq/basiq.service.js +15 -27
  81. package/esm2015/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.js +10 -21
  82. package/esm2015/lib/services/http/chart-accounts/chart-accounts.service.js +20 -64
  83. package/esm2015/lib/services/http/chat/chat.service.js +24 -30
  84. package/esm2015/lib/services/http/chat/index.js +3 -3
  85. package/esm2015/lib/services/http/chat/message-document.service.js +78 -0
  86. package/esm2015/lib/services/http/chat/message.service.js +68 -0
  87. package/esm2015/lib/services/http/depreciation/depreciation-capital-project/depreciation-capital-project.service.js +3 -3
  88. package/esm2015/lib/services/http/depreciation/depreciation-receipt/depreciation-receipt.service.js +3 -3
  89. package/esm2015/lib/services/http/depreciation/depreciation.service.js +29 -57
  90. package/esm2015/lib/services/http/document/document-folder/document-folder.service.js +3 -3
  91. package/esm2015/lib/services/http/document/document.service.js +3 -3
  92. package/esm2015/lib/services/http/facebook/facebook.service.js +3 -3
  93. package/esm2015/lib/services/http/firm/client-income/client-income-types.service.js +3 -3
  94. package/esm2015/lib/services/http/firm/client-invite/client-invite.service.js +3 -3
  95. package/esm2015/lib/services/http/firm/client-movement/client-movement.service.js +3 -3
  96. package/esm2015/lib/services/http/firm/employee/employee.service.js +3 -3
  97. package/esm2015/lib/services/http/firm/employee-invite/employee-invite.service.js +3 -3
  98. package/esm2015/lib/services/http/firm/firm.service.js +3 -3
  99. package/esm2015/lib/services/http/firm/portfolio-report/client-portfolio-report.service.js +3 -3
  100. package/esm2015/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.js +3 -3
  101. package/esm2015/lib/services/http/income-source/income-source.service.js +3 -3
  102. package/esm2015/lib/services/http/income-source/salary-forecast/salary-forecast.service.js +3 -3
  103. package/esm2015/lib/services/http/income-source/sole-forecast/sole-forecast.service.js +3 -3
  104. package/esm2015/lib/services/http/loan/borrowing-expense/borrowing-expense.service.js +7 -4
  105. package/esm2015/lib/services/http/loan/index.js +1 -1
  106. package/esm2015/lib/services/http/loan/loan.service.js +21 -69
  107. package/esm2015/lib/services/http/property/property-category/property-category.service.js +10 -7
  108. package/esm2015/lib/services/http/property/property-category-movement/property-category-movement.service.js +10 -34
  109. package/esm2015/lib/services/http/property/property-document/property-document.service.js +11 -21
  110. package/esm2015/lib/services/http/property/property-sale/property-sale.service.js +10 -27
  111. package/esm2015/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.js +11 -8
  112. package/esm2015/lib/services/http/property/property-share/property-share.service.js +15 -89
  113. package/esm2015/lib/services/http/property/property.service.js +16 -34
  114. package/esm2015/lib/services/http/receipt/receipt.service.js +3 -3
  115. package/esm2015/lib/services/http/rest/rest-old.service.js +3 -3
  116. package/esm2015/lib/services/http/rest/rest.service.js +17 -10
  117. package/esm2015/lib/services/http/service-notification/service-notification.service.js +3 -3
  118. package/esm2015/lib/services/http/sole/bas-report/bas-report.service.js +3 -3
  119. package/esm2015/lib/services/http/sole/sole-business/sole-business.service.js +3 -3
  120. package/esm2015/lib/services/http/sole/sole-business-activity/sole-business-activity.service.js +3 -3
  121. package/esm2015/lib/services/http/sole/sole-business-loss/sole-business-loss-rules/sole-business-loss-offset-rule.service.js +3 -3
  122. package/esm2015/lib/services/http/sole/sole-business-loss/sole-business-loss.service.js +3 -3
  123. package/esm2015/lib/services/http/sole/sole-contact/sole-contact.service.js +3 -3
  124. package/esm2015/lib/services/http/sole/sole-depreciation-method/sole-depreciation-method.service.js +3 -3
  125. package/esm2015/lib/services/http/sole/sole-details/sole-details.service.js +3 -3
  126. package/esm2015/lib/services/http/sole/sole-invoice/sole-invoice.service.js +3 -3
  127. package/esm2015/lib/services/http/sole/sole-invoice-template/sole-invoice-template.service.js +3 -3
  128. package/esm2015/lib/services/http/subscription/service-price.service.js +3 -3
  129. package/esm2015/lib/services/http/subscription/subscription.service.js +3 -3
  130. package/esm2015/lib/services/http/tax-review/tax-review-history/tax-review-history.service.js +3 -3
  131. package/esm2015/lib/services/http/tax-review/tax-review.service.js +3 -3
  132. package/esm2015/lib/services/http/tax-summary/tax-summary.service.js +3 -3
  133. package/esm2015/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.js +6 -7
  134. package/esm2015/lib/services/http/transaction/transaction-receipt/transaction-receipt.service.js +3 -3
  135. package/esm2015/lib/services/http/transaction/transaction.service.js +3 -3
  136. package/esm2015/lib/services/http/tutorial-video/tutorial-video.service.js +3 -3
  137. package/esm2015/lib/services/http/user/occupation/occupation.service.js +3 -3
  138. package/esm2015/lib/services/http/user/user-event-setting/user-event-setting.service.js +3 -3
  139. package/esm2015/lib/services/http/user/user-event-type/user-event-type.service.js +3 -3
  140. package/esm2015/lib/services/http/user/user.service.js +3 -3
  141. package/esm2015/lib/services/http/user/users-invite/users-invite.service.js +3 -3
  142. package/esm2015/lib/services/http/vehicle/vehicle-claim-details.service.js +3 -3
  143. package/esm2015/lib/services/http/vehicle/vehicle-claim.service.js +3 -3
  144. package/esm2015/lib/services/http/vehicle/vehicle-logbook.service.js +3 -3
  145. package/esm2015/lib/services/http/vehicle/vehicle.service.js +3 -3
  146. package/esm2015/lib/services/intercom/intercom.service.js +3 -3
  147. package/esm2015/lib/services/pdf/pdf-from-dom-element/pdf-from-dom-element.service.js +3 -3
  148. package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-data-table/pdf-from-data-table.service.js +3 -3
  149. package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-html-table/pdf-from-html-table.service.js +3 -3
  150. package/esm2015/lib/services/pdf/pdf-from-table/pdf-from-table.service.js +3 -3
  151. package/esm2015/lib/services/preloader/preloader.service.js +3 -3
  152. package/esm2015/lib/services/property/corelogic/corelogic.service.js +3 -3
  153. package/esm2015/lib/services/property/equity-position-chart/equity-position-chart.service.js +3 -3
  154. package/esm2015/lib/services/property/property-calculation/property-calculation.service.js +3 -3
  155. package/esm2015/lib/services/report/property/property-transaction-report.service.js +7 -9
  156. package/esm2015/lib/services/toast/toast.service.js +3 -3
  157. package/esm2015/lib/services/transaction/transaction-calculation.service.js +3 -3
  158. package/esm2015/lib/services/user/user-switcher.service.js +3 -3
  159. package/esm2015/lib/services/vehicle/logbook-best-period.service.js +3 -3
  160. package/esm2015/lib/services/xlsx/xlsx.service.js +3 -3
  161. package/esm2015/lib/tt-core.module.js +4 -4
  162. package/esm2015/public-api.js +1 -85
  163. package/fesm2015/taxtank-core.js +7002 -7248
  164. package/fesm2015/taxtank-core.js.map +1 -1
  165. package/lib/collections/bank-account.collection.d.ts +1 -0
  166. package/lib/collections/chart-accounts.collection.d.ts +1 -0
  167. package/lib/collections/{chat.collection.d.ts → chat/chat.collection.d.ts} +2 -3
  168. package/lib/collections/chat/index.d.ts +3 -0
  169. package/lib/collections/{message-document.collection.d.ts → chat/message-document.collection.d.ts} +2 -2
  170. package/lib/collections/{message.collection.d.ts → chat/message.collection.d.ts} +2 -3
  171. package/lib/collections/collection.d.ts +1 -0
  172. package/lib/collections/index.d.ts +23 -2
  173. package/lib/collections/loan/index.d.ts +2 -0
  174. package/lib/collections/loan/loan.collection.d.ts +4 -0
  175. package/lib/collections/property/index.d.ts +1 -0
  176. package/lib/collections/property/property-share.collection.d.ts +16 -0
  177. package/lib/collections/report/index.d.ts +6 -0
  178. package/lib/collections/sole/index.d.ts +1 -0
  179. package/lib/collections/subscription/index.d.ts +1 -0
  180. package/lib/collections/tax-summary/index.d.ts +2 -0
  181. package/lib/collections/user-event-type-collection.d.ts +7 -0
  182. package/lib/db/Models/bank/bank-account.d.ts +2 -2
  183. package/lib/db/Models/bank/bank-connection.d.ts +2 -2
  184. package/lib/db/Models/bank/bank-transaction-rule.d.ts +26 -0
  185. package/lib/db/Models/bank/bank-transaction.d.ts +2 -2
  186. package/lib/db/Models/document/document-base.d.ts +11 -0
  187. package/lib/db/Models/firm/firm-invite.d.ts +15 -0
  188. package/lib/db/Models/firm/message.d.ts +2 -2
  189. package/lib/db/Models/index.d.ts +101 -0
  190. package/lib/db/Models/loan/loan-payout.d.ts +2 -2
  191. package/lib/db/Models/loan/loan.d.ts +2 -2
  192. package/lib/db/Models/property/property-category-movement.d.ts +2 -2
  193. package/lib/db/Models/property/property-category.d.ts +2 -2
  194. package/lib/db/Models/property/property-sale/property-sale.d.ts +2 -2
  195. package/lib/db/Models/property/property-share.d.ts +2 -2
  196. package/lib/db/Models/spare/spare-document-category.d.ts +7 -0
  197. package/lib/db/Models/spare/spare-document.d.ts +16 -0
  198. package/lib/db/Models/tax-calculation.d.ts +19 -0
  199. package/lib/db/Models/transaction/transaction-base.d.ts +2 -2
  200. package/lib/interfaces/index.d.ts +17 -0
  201. package/lib/models/bank/basiq/basiq-token.d.ts +2 -1
  202. package/lib/models/borrowing-expense/index.d.ts +2 -0
  203. package/lib/models/chart-accounts/index.d.ts +1 -1
  204. package/lib/models/chat/index.d.ts +4 -0
  205. package/lib/models/depreciation/depreciation-lvp-rate.enum.d.ts +7 -0
  206. package/lib/models/depreciation/index.d.ts +9 -0
  207. package/lib/models/dictionary/index.d.ts +1 -0
  208. package/lib/models/event/app-event-type.enum.d.ts +67 -69
  209. package/lib/models/event/index.d.ts +2 -0
  210. package/lib/models/financial-year/index.d.ts +4 -0
  211. package/lib/models/index.d.ts +11 -1
  212. package/lib/models/loan/index.d.ts +4 -0
  213. package/lib/models/notification/index.d.ts +1 -0
  214. package/lib/models/property/index.d.ts +17 -0
  215. package/lib/models/property/property.d.ts +0 -2
  216. package/lib/models/user/index.d.ts +9 -0
  217. package/lib/services/http/bank/bank-account/bank-account.service.d.ts +10 -25
  218. package/lib/services/http/bank/bank-connection/bank-connection.service.d.ts +21 -8
  219. package/lib/services/http/bank/bank-transaction/bank-transaction.service.d.ts +10 -13
  220. package/lib/services/http/bank/bank.service.d.ts +10 -7
  221. package/lib/services/http/bank/basiq/basiq-token.service.d.ts +10 -9
  222. package/lib/services/http/bank/basiq/basiq.service.d.ts +12 -15
  223. package/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.d.ts +8 -10
  224. package/lib/services/http/chart-accounts/chart-accounts.service.d.ts +11 -24
  225. package/lib/services/http/chat/chat.service.d.ts +12 -11
  226. package/lib/services/http/chat/index.d.ts +2 -2
  227. package/lib/services/http/chat/message-document.service.d.ts +35 -0
  228. package/lib/services/http/chat/message.service.d.ts +38 -0
  229. package/lib/services/http/depreciation/depreciation.service.d.ts +12 -23
  230. package/lib/services/http/loan/borrowing-expense/borrowing-expense.service.d.ts +3 -0
  231. package/lib/services/http/loan/loan.service.d.ts +16 -29
  232. package/lib/services/http/property/property-category/property-category.service.d.ts +8 -5
  233. package/lib/services/http/property/property-category-movement/property-category-movement.service.d.ts +8 -10
  234. package/lib/services/http/property/property-document/property-document.service.d.ts +9 -11
  235. package/lib/services/http/property/property-sale/property-sale.service.d.ts +8 -14
  236. package/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.d.ts +9 -6
  237. package/lib/services/http/property/property-share/property-share.service.d.ts +10 -22
  238. package/lib/services/http/property/property.service.d.ts +9 -9
  239. package/lib/services/http/rest/rest.service.d.ts +7 -4
  240. package/lib/services/report/property/property-transaction-report.service.d.ts +2 -3
  241. package/package.json +1 -1
  242. package/public-api.d.ts +0 -84
  243. package/esm2015/lib/collections/chat.collection.js +0 -26
  244. package/esm2015/lib/collections/message-document.collection.js +0 -13
  245. package/esm2015/lib/collections/message.collection.js +0 -33
  246. package/esm2015/lib/services/http/chat/message/index.js +0 -2
  247. package/esm2015/lib/services/http/chat/message/message.service.js +0 -61
  248. package/esm2015/lib/services/http/chat/message-document/index.js +0 -2
  249. package/esm2015/lib/services/http/chat/message-document/message-document.service.js +0 -118
  250. package/lib/services/http/chat/message/index.d.ts +0 -1
  251. package/lib/services/http/chat/message/message.service.d.ts +0 -28
  252. package/lib/services/http/chat/message-document/index.d.ts +0 -1
  253. package/lib/services/http/chat/message-document/message-document.service.d.ts +0 -50
@@ -54,9 +54,9 @@ export class BankTransactionCalculationService {
54
54
  return allocations.getByBankTransactionsIds(bankTransactions.debitTransactions.getIds()).amount;
55
55
  }
56
56
  }
57
- BankTransactionCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankTransactionCalculationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
58
- BankTransactionCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankTransactionCalculationService, providedIn: 'root' });
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankTransactionCalculationService, decorators: [{
57
+ BankTransactionCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionCalculationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
58
+ BankTransactionCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionCalculationService, providedIn: 'root' });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionCalculationService, decorators: [{
60
60
  type: Injectable,
61
61
  args: [{
62
62
  providedIn: 'root'
@@ -30,9 +30,9 @@ export class EventDispatcherService {
30
30
  this.eventSubject2.next(event);
31
31
  }
32
32
  }
33
- EventDispatcherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: EventDispatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
34
- EventDispatcherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: EventDispatcherService, providedIn: 'root' });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: EventDispatcherService, decorators: [{
33
+ EventDispatcherService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EventDispatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
34
+ EventDispatcherService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EventDispatcherService, providedIn: 'root' });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: EventDispatcherService, decorators: [{
36
36
  type: Injectable,
37
37
  args: [{
38
38
  providedIn: 'root'
@@ -36,9 +36,9 @@ export class SseService {
36
36
  }));
37
37
  }
38
38
  }
39
- SseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SseService, deps: [{ token: i0.NgZone }, { token: i1.JwtService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
40
- SseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SseService, providedIn: 'root' });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SseService, decorators: [{
39
+ SseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SseService, deps: [{ token: i0.NgZone }, { token: i1.JwtService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
40
+ SseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SseService, providedIn: 'root' });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SseService, decorators: [{
42
42
  type: Injectable,
43
43
  args: [{
44
44
  providedIn: 'root'
@@ -20,9 +20,9 @@ export class ExportFormatterService {
20
20
  }));
21
21
  }
22
22
  }
23
- ExportFormatterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ExportFormatterService, deps: [{ token: i1.CurrencyPipe }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
24
- ExportFormatterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ExportFormatterService, providedIn: 'root' });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ExportFormatterService, decorators: [{
23
+ ExportFormatterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ExportFormatterService, deps: [{ token: i1.CurrencyPipe }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
24
+ ExportFormatterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ExportFormatterService, providedIn: 'root' });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ExportFormatterService, decorators: [{
26
26
  type: Injectable,
27
27
  args: [{
28
28
  providedIn: 'root'
@@ -17,9 +17,9 @@ export class HeaderTitleService {
17
17
  }), filter((route) => route.outlet === 'primary'), mergeMap((route) => route.data));
18
18
  }
19
19
  }
20
- HeaderTitleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: HeaderTitleService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
21
- HeaderTitleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: HeaderTitleService, providedIn: 'root' });
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: HeaderTitleService, decorators: [{
20
+ HeaderTitleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeaderTitleService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
21
+ HeaderTitleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeaderTitleService, providedIn: 'root' });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeaderTitleService, decorators: [{
23
23
  type: Injectable,
24
24
  args: [{
25
25
  providedIn: 'root'
@@ -25,9 +25,9 @@ export class AddressService {
25
25
  return this.countriesSubject.asObservable();
26
26
  }
27
27
  }
28
- AddressService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: AddressService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
29
- AddressService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: AddressService, providedIn: 'root' });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: AddressService, decorators: [{
28
+ AddressService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddressService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
29
+ AddressService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddressService, providedIn: 'root' });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: AddressService, decorators: [{
31
31
  type: Injectable,
32
32
  args: [{
33
33
  providedIn: 'root'
@@ -1,13 +1,9 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { AppEventTypeEnum, BankAccount, BankConnection, BankTransaction, PropertyShare } from '../../../../models';
3
+ import { RestService } from '../../rest';
4
+ import { BankAccountCollection } from '../../../../collections';
2
5
  import { map } from 'rxjs/operators';
3
- import _ from 'lodash';
4
- import { replace } from '../../../../functions/array';
5
6
  import { plainToClass } from 'class-transformer';
6
- import { RestService } from '../../rest/rest-old.service';
7
- import { BankAccount } from '../../../../models/bank/bank-account';
8
- import { AppEvent } from '../../../../models/event/app-event';
9
- import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
10
- import { BankAccountCollection } from '../../../../collections/bank-account.collection';
11
7
  import * as i0 from "@angular/core";
12
8
  /**
13
9
  * Service that handling user's bank accounts logic
@@ -15,100 +11,49 @@ import * as i0 from "@angular/core";
15
11
  export class BankAccountService extends RestService {
16
12
  constructor() {
17
13
  super(...arguments);
18
- // api url parameter for bank accounts
19
- this.url = 'bank-accounts';
14
+ this.endpointUri = 'bank-accounts';
20
15
  this.modelClass = BankAccount;
16
+ this.collectionClass = BankAccountCollection;
17
+ this.disabledMethods = ['post', 'putBatch', 'delete', 'deleteBatch'];
21
18
  }
22
19
  /**
23
20
  * Listen system notifications and update cache when got basiq notification received
24
21
  */
25
22
  listenEvents() {
26
23
  this.listenToEventDispatcherChanges();
27
- }
28
- /**
29
- * Created manual bank account
30
- * @param bankAccounts
31
- * @param queryParams
32
- */
33
- addBatch(bankAccounts, queryParams = {}) {
34
- return this.http.post(`${this.environment.apiV2}/${this.url}`, bankAccounts)
35
- .pipe(map((newBankAccountsBase) => {
36
- const newBankAccounts = newBankAccountsBase.map((bankAccountBase) => plainToClass(BankAccount, bankAccountBase));
37
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_ACCOUNT_CREATED, newBankAccounts));
38
- const tempCache = _.cloneDeep(this.cache);
39
- tempCache.push(...newBankAccounts);
40
- this.cache = tempCache;
41
- this.updateCache();
42
- return newBankAccounts;
43
- }));
44
- }
45
- /**
46
- * Update bank account and fire event
47
- */
48
- update(bankAccount) {
49
- return super.update(bankAccount).pipe(map((updatedBankAccount) => {
50
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_ACCOUNT_UPDATED, updatedBankAccount));
51
- return updatedBankAccount;
52
- }));
53
- }
54
- /**
55
- * Update bank account opening balance
56
- * @param bankAccount Bank account for balance updating
57
- */
58
- updateOpeningBalance(bankAccount) {
59
- return this.http.put(`${this.environment.apiV2}/${this.url}/${bankAccount.id}/opening-balances/${bankAccount.getCurrentYearBalance().id}`, bankAccount.getCurrentYearBalance())
60
- .pipe(map((response) => {
61
- const tempCache = _.cloneDeep(this.cache);
62
- replace(tempCache[tempCache.findIndex((ba) => ba.id === bankAccount.id)].balances, response);
63
- this.cache = tempCache;
64
- this.updateCache();
65
- }));
24
+ this.listenCSE(BankTransaction, ['post', 'delete'], this.resetCache);
25
+ this.listenCSE(PropertyShare, ['put'], this.resetCache);
26
+ this.listenCSE(BankConnection, ['post'], this.resetCache);
66
27
  }
67
28
  /**
68
29
  * Update bank account current balance
30
+ * @TODO Vik: refactor once backend updated (should be separated endpoint for BankAccountBalance entity)
69
31
  */
70
32
  updateCurrentBalance(bankAccount) {
71
- return this.http.put(`${this.environment.apiV2}/${this.url}/${bankAccount.id}/balance`, bankAccount)
33
+ return this.http.put(`${this.apiUrl}/${bankAccount.id}/balance`, bankAccount)
72
34
  .pipe(map((response) => {
73
35
  const updatedBankAccount = plainToClass(BankAccount, response);
74
- replace(this.cache, updatedBankAccount);
75
- this.updateCache();
76
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_ACCOUNT_UPDATED, updatedBankAccount));
36
+ this.handleResponse([updatedBankAccount], 'put');
77
37
  return updatedBankAccount;
78
38
  }));
79
39
  }
80
- getOwn() {
81
- return this.get()
82
- .pipe(map((bankAccounts) => {
83
- return bankAccounts.filter((bankAccount) => bankAccount.isOwner(+localStorage.getItem('userId')));
84
- }));
85
- }
86
- getByConnection(connection) {
87
- return this.get().pipe(map((bankAccounts) => {
88
- return new BankAccountCollection(bankAccounts).filterBy('bankConnection.id', connection.id);
89
- }));
90
- }
91
40
  /**
92
41
  * Listen to EventDispatcherService events
93
42
  */
94
43
  listenToEventDispatcherChanges() {
95
44
  this.eventDispatcherService.on([
96
- AppEventTypeEnum.PROPERTY_SHARE_UPDATED,
97
45
  AppEventTypeEnum.LOAN_PAYOUT_UPDATED,
98
- AppEventTypeEnum.BANK_CONNECTION_ADDED,
99
- AppEventTypeEnum.BANK_TRANSACTIONS_ADDED,
100
- AppEventTypeEnum.BANK_TRANSACTIONS_DELETED
101
46
  ]).subscribe(() => {
102
47
  this.resetCache();
103
48
  });
104
49
  }
105
50
  }
106
- BankAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankAccountService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
107
- BankAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankAccountService, providedIn: 'root' });
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankAccountService, decorators: [{
51
+ BankAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankAccountService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
52
+ BankAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankAccountService, providedIn: 'root' });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankAccountService, decorators: [{
109
54
  type: Injectable,
110
55
  args: [{
111
56
  providedIn: 'root'
112
57
  }]
113
58
  }] });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1hY2NvdW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9iYW5rL2JhbmstYWNjb3VudC9iYW5rLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUdoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFFeEY7O0dBRUc7QUFJSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBeUM7SUFIakY7O1FBSUUsc0NBQXNDO1FBQ3RDLFFBQUcsR0FBVyxlQUFlLENBQUM7UUFDOUIsZUFBVSxHQUFHLFdBQVcsQ0FBQztLQTJHMUI7SUF6R0M7O09BRUc7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsWUFBMkIsRUFBRSxjQUFzQixFQUFFO1FBQzVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENB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OztnSEE3R1Usa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFua0FjY291bnQgYXMgQmFua0FjY291bnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL2JhbmsvYmFuay1hY2NvdW50JztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyByZXBsYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LW9sZC5zZXJ2aWNlJztcbmltcG9ydCB7IEJhbmtBY2NvdW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2JhbmsvYmFuay1hY2NvdW50JztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2V2ZW50LWxpc3RlbmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYW5rQ29ubmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9iYW5rL2JhbmstY29ubmVjdGlvbic7XG5pbXBvcnQgeyBCYW5rQWNjb3VudENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb2xsZWN0aW9ucy9iYW5rLWFjY291bnQuY29sbGVjdGlvbic7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IGhhbmRsaW5nIHVzZXIncyBiYW5rIGFjY291bnRzIGxvZ2ljXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJhbmtBY2NvdW50U2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPEJhbmtBY2NvdW50QmFzZSwgQmFua0FjY291bnQ+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICAvLyBhcGkgdXJsIHBhcmFtZXRlciBmb3IgYmFuayBhY2NvdW50c1xuICB1cmw6IHN0cmluZyA9ICdiYW5rLWFjY291bnRzJztcbiAgbW9kZWxDbGFzcyA9IEJhbmtBY2NvdW50O1xuXG4gIC8qKlxuICAgKiBMaXN0ZW4gc3lzdGVtIG5vdGlmaWNhdGlvbnMgYW5kIHVwZGF0ZSBjYWNoZSB3aGVuIGdvdCBiYXNpcSBub3RpZmljYXRpb24gcmVjZWl2ZWRcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlblRvRXZlbnREaXNwYXRjaGVyQ2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZWQgbWFudWFsIGJhbmsgYWNjb3VudFxuICAgKiBAcGFyYW0gYmFua0FjY291bnRzXG4gICAqIEBwYXJhbSBxdWVyeVBhcmFtc1xuICAgKi9cbiAgYWRkQmF0Y2goYmFua0FjY291bnRzOiBCYW5rQWNjb3VudFtdLCBxdWVyeVBhcmFtczogb2JqZWN0ID0ge30pOiBPYnNlcnZhYmxlPEJhbmtBY2NvdW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH1gLCBiYW5rQWNjb3VudHMpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChuZXdCYW5rQWNjb3VudHNCYXNlOiBCYW5rQWNjb3VudEJhc2VbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0JhbmtBY2NvdW50czogQmFua0FjY291bnRbXSA9IG5ld0JhbmtBY2NvdW50c0Jhc2UubWFwKChiYW5rQWNjb3VudEJhc2U6IEJhbmtBY2NvdW50QmFzZSk6IEJhbmtBY2NvdW50ID0+IHBsYWluVG9DbGFzcyhCYW5rQWNjb3VudCwgYmFua0FjY291bnRCYXNlKSk7XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBTktfQUNDT1VOVF9DUkVBVEVELCBuZXdCYW5rQWNjb3VudHMpKTtcbiAgICAgICAgICBjb25zdCB0ZW1wQ2FjaGU6IEJhbmtBY2NvdW50W10gPSBfLmNsb25lRGVlcCh0aGlzLmNhY2hlKTtcbiAgICAgICAgICB0ZW1wQ2FjaGUucHVzaCguLi5uZXdCYW5rQWNjb3VudHMpO1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0ZW1wQ2FjaGU7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIHJldHVybiBuZXdCYW5rQWNjb3VudHM7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBiYW5rIGFjY291bnQgYW5kIGZpcmUgZXZlbnRcbiAgICovXG4gIHVwZGF0ZShiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBPYnNlcnZhYmxlPEJhbmtBY2NvdW50PiB7XG4gICAgcmV0dXJuIHN1cGVyLnVwZGF0ZShiYW5rQWNjb3VudCkucGlwZShcbiAgICAgIG1hcCgodXBkYXRlZEJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQkFOS19BQ0NPVU5UX1VQREFURUQsIHVwZGF0ZWRCYW5rQWNjb3VudCkpO1xuICAgICAgICByZXR1cm4gdXBkYXRlZEJhbmtBY2NvdW50O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBiYW5rIGFjY291bnQgb3BlbmluZyBiYWxhbmNlXG4gICAqIEBwYXJhbSBiYW5rQWNjb3VudCBCYW5rIGFjY291bnQgZm9yIGJhbGFuY2UgdXBkYXRpbmdcbiAgICovXG4gIHVwZGF0ZU9wZW5pbmdCYWxhbmNlKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0vJHtiYW5rQWNjb3VudC5pZH0vb3BlbmluZy1iYWxhbmNlcy8ke2JhbmtBY2NvdW50LmdldEN1cnJlbnRZZWFyQmFsYW5jZSgpLmlkfWAsIGJhbmtBY2NvdW50LmdldEN1cnJlbnRZZWFyQmFsYW5jZSgpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IG9iamVjdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlbXBDYWNoZTogQmFua0FjY291bnRbXSA9IF8uY2xvbmVEZWVwKHRoaXMuY2FjaGUpO1xuXG4gICAgICAgICAgcmVwbGFjZSh0ZW1wQ2FjaGVbdGVtcENhY2hlLmZpbmRJbmRleCgoYmE6IEJhbmtBY2NvdW50KSA9PiBiYS5pZCA9PT0gYmFua0FjY291bnQuaWQpXS5iYWxhbmNlcywgcmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0ZW1wQ2FjaGU7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYmFuayBhY2NvdW50IGN1cnJlbnQgYmFsYW5jZVxuICAgKi9cbiAgdXBkYXRlQ3VycmVudEJhbGFuY2UoYmFua0FjY291bnQ6IEJhbmtBY2NvdW50KTogT2JzZXJ2YWJsZTxCYW5rQWNjb3VudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7YmFua0FjY291bnQuaWR9L2JhbGFuY2VgLCBiYW5rQWNjb3VudClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBvYmplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkQmFua0FjY291bnQ6IEJhbmtBY2NvdW50ID0gcGxhaW5Ub0NsYXNzKEJhbmtBY2NvdW50LCByZXNwb25zZSk7XG5cbiAgICAgICAgICByZXBsYWNlKHRoaXMuY2FjaGUsIHVwZGF0ZWRCYW5rQWNjb3VudCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuXG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBTktfQUNDT1VOVF9VUERBVEVELCB1cGRhdGVkQmFua0FjY291bnQpKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlZEJhbmtBY2NvdW50O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE93bigpOiBPYnNlcnZhYmxlPEJhbmtBY2NvdW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoYmFua0FjY291bnRzOiBCYW5rQWNjb3VudFtdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGJhbmtBY2NvdW50cy5maWx0ZXIoKGJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCkgPT4gYmFua0FjY291bnQuaXNPd25lcigrbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJJZCcpKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZ2V0QnlDb25uZWN0aW9uKGNvbm5lY3Rpb246IEJhbmtDb25uZWN0aW9uKTogT2JzZXJ2YWJsZTxCYW5rQWNjb3VudENvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10pOiBCYW5rQWNjb3VudENvbGxlY3Rpb24gPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEJhbmtBY2NvdW50Q29sbGVjdGlvbihiYW5rQWNjb3VudHMpLmZpbHRlckJ5KCdiYW5rQ29ubmVjdGlvbi5pZCcsIGNvbm5lY3Rpb24uaWQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ub0V2ZW50RGlzcGF0Y2hlckNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKFtcbiAgICAgIEFwcEV2ZW50VHlwZUVudW0uUFJPUEVSVFlfU0hBUkVfVVBEQVRFRCxcbiAgICAgIEFwcEV2ZW50VHlwZUVudW0uTE9BTl9QQVlPVVRfVVBEQVRFRCxcbiAgICAgIEFwcEV2ZW50VHlwZUVudW0uQkFOS19DT05ORUNUSU9OX0FEREVELFxuICAgICAgQXBwRXZlbnRUeXBlRW51bS5CQU5LX1RSQU5TQUNUSU9OU19BRERFRCxcbiAgICAgIEFwcEV2ZW50VHlwZUVudW0uQkFOS19UUkFOU0FDVElPTlNfREVMRVRFRFxuICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0Q2FjaGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1hY2NvdW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9iYW5rL2JhbmstYWNjb3VudC9iYW5rLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuSCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRWpEOztHQUVHO0FBSUgsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQWdFO0lBSHhHOztRQUlFLGdCQUFXLEdBQVcsZUFBZSxDQUFDO1FBQ3RDLGVBQVUsR0FBdUIsV0FBVyxDQUFDO1FBQzdDLG9CQUFlLEdBQWlDLHFCQUFxQixDQUFDO1FBQ3RFLG9CQUFlLEdBQWlCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FzQy9FO0lBcENDOztPQUVHO0lBQ0gsWUFBWTtRQUNWLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsb0JBQW9CLENBQUMsV0FBd0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQzthQUMxRSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sa0JBQWtCLEdBQWdCLFlBQVksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFakQsT0FBTyxrQkFBa0IsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ssOEJBQThCO1FBQ3BDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDN0IsZ0JBQWdCLENBQUMsbUJBQW1CO1NBQ3JDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2dIQXpDVSxrQkFBa0I7b0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYW5rQWNjb3VudCBhcyBCYW5rQWNjb3VudEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMnO1xuaW1wb3J0IHsgQXBwRXZlbnRUeXBlRW51bSwgQmFua0FjY291bnQsIEJhbmtDb25uZWN0aW9uLCBCYW5rVHJhbnNhY3Rpb24sIFByb3BlcnR5U2hhcmUgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgUmVzdE1ldGhvZCwgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9yZXN0JztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYW5rQWNjb3VudENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IGhhbmRsaW5nIHVzZXIncyBiYW5rIGFjY291bnRzIGxvZ2ljXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJhbmtBY2NvdW50U2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPEJhbmtBY2NvdW50QmFzZSwgQmFua0FjY291bnQsIEJhbmtBY2NvdW50Q29sbGVjdGlvbj4gaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIGVuZHBvaW50VXJpOiBzdHJpbmcgPSAnYmFuay1hY2NvdW50cyc7XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBCYW5rQWNjb3VudCA9IEJhbmtBY2NvdW50O1xuICBjb2xsZWN0aW9uQ2xhc3M6IHR5cGVvZiBCYW5rQWNjb3VudENvbGxlY3Rpb24gPSBCYW5rQWNjb3VudENvbGxlY3Rpb247XG4gIGRpc2FibGVkTWV0aG9kczogUmVzdE1ldGhvZFtdID0gWydwb3N0JywgJ3B1dEJhdGNoJywgJ2RlbGV0ZScsICdkZWxldGVCYXRjaCddO1xuXG4gIC8qKlxuICAgKiBMaXN0ZW4gc3lzdGVtIG5vdGlmaWNhdGlvbnMgYW5kIHVwZGF0ZSBjYWNoZSB3aGVuIGdvdCBiYXNpcSBub3RpZmljYXRpb24gcmVjZWl2ZWRcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlblRvRXZlbnREaXNwYXRjaGVyQ2hhbmdlcygpO1xuICAgIHRoaXMubGlzdGVuQ1NFKEJhbmtUcmFuc2FjdGlvbiwgWydwb3N0JywgJ2RlbGV0ZSddLCB0aGlzLnJlc2V0Q2FjaGUpO1xuICAgIHRoaXMubGlzdGVuQ1NFKFByb3BlcnR5U2hhcmUsIFsncHV0J10sIHRoaXMucmVzZXRDYWNoZSk7XG4gICAgdGhpcy5saXN0ZW5DU0UoQmFua0Nvbm5lY3Rpb24sIFsncG9zdCddLCB0aGlzLnJlc2V0Q2FjaGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBiYW5rIGFjY291bnQgY3VycmVudCBiYWxhbmNlXG4gICAqIEBUT0RPIFZpazogcmVmYWN0b3Igb25jZSBiYWNrZW5kIHVwZGF0ZWQgKHNob3VsZCBiZSBzZXBhcmF0ZWQgZW5kcG9pbnQgZm9yIEJhbmtBY2NvdW50QmFsYW5jZSBlbnRpdHkpXG4gICAqL1xuICB1cGRhdGVDdXJyZW50QmFsYW5jZShiYW5rQWNjb3VudDogQmFua0FjY291bnQpOiBPYnNlcnZhYmxlPEJhbmtBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5hcGlVcmx9LyR7YmFua0FjY291bnQuaWR9L2JhbGFuY2VgLCBiYW5rQWNjb3VudClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBvYmplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkQmFua0FjY291bnQ6IEJhbmtBY2NvdW50ID0gcGxhaW5Ub0NsYXNzKEJhbmtBY2NvdW50LCByZXNwb25zZSk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZShbdXBkYXRlZEJhbmtBY2NvdW50XSwgJ3B1dCcpO1xuXG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRCYW5rQWNjb3VudDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblRvRXZlbnREaXNwYXRjaGVyQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oW1xuICAgICAgQXBwRXZlbnRUeXBlRW51bS5MT0FOX1BBWU9VVF9VUERBVEVELFxuICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0Q2FjaGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,50 +1,50 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Inject, Injectable } from '@angular/core';
2
2
  import { catchError, map } from 'rxjs/operators';
3
3
  import { plainToClass } from 'class-transformer';
4
- import { BankConnection } from '../../../../models/bank/bank-connection';
5
- import { RestService } from '../../rest/rest-old.service';
6
- import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
7
- import cloneDeep from 'lodash/cloneDeep';
8
- import { replace } from '../../../../functions/array';
9
- import { AppEvent } from '../../../../models/event/app-event';
4
+ import { RestService } from '../../rest';
5
+ import { AppEvent, AppEventTypeEnum, BankConnection, BankAccount } from '../../../../models';
10
6
  import { UserEventTypeTypeEnum } from '../../../../db/Enums/user-event-type-type.enum';
11
7
  import { throwError as observableThrowError } from 'rxjs/internal/observable/throwError';
8
+ import { Collection } from '../../../../collections';
12
9
  import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/common/http";
11
+ import * as i2 from "../../../event";
12
+ import * as i3 from "../../../toast";
13
13
  /**
14
14
  * BankConnection means user account at specific bank (usually each user has only one at the same bank)
15
15
  * service handles BankConnection management
16
16
  */
17
17
  export class BankConnectionService extends RestService {
18
- constructor() {
19
- super(...arguments);
18
+ constructor(http, eventDispatcherService, environment, toastService) {
19
+ super(http, eventDispatcherService, environment);
20
+ this.http = http;
21
+ this.eventDispatcherService = eventDispatcherService;
22
+ this.environment = environment;
23
+ this.toastService = toastService;
20
24
  this.modelClass = BankConnection;
21
- this.url = 'bank-connections';
25
+ this.collectionClass = Collection;
26
+ this.endpointUri = 'bank-connections';
27
+ this.disabledMethods = ['postBatch', 'put', 'putBatch', 'delete', 'deleteBatch'];
22
28
  }
23
29
  listenEvents() {
24
- this.listenToAddedBankAccounts();
30
+ this.listenCSE(BankAccount, ['post'], this.resetCache);
25
31
  this.listenNotifications();
26
32
  this.listenBasiqLogin();
27
33
  }
28
- add(bankConnection) {
29
- return this.http.post(`${this.environment.apiV2}/${this.url}`, bankConnection)
30
- .pipe(map((bankConnectionBase) => {
31
- const connection = plainToClass(BankConnection, bankConnectionBase);
32
- // We use this endpoint for create and reconnect bank connections because of basiq logic.
33
- // So we try to replace bank connection in cache for reconnection case.
34
- if (this.cache) {
35
- if (bankConnection.id) {
36
- const tempCache = cloneDeep(this.cache);
37
- replace(tempCache, connection);
38
- this.cache = tempCache;
39
- this.cacheSubject.next(this.cache);
40
- }
41
- else {
42
- this.cache.push(connection);
43
- this.cacheSubject.next(cloneDeep(this.cache));
44
- }
34
+ /**
35
+ * POST endpoint is using for create and for update.
36
+ */
37
+ post(bankConnection) {
38
+ return this.http.post(this.apiUrl, bankConnection)
39
+ .pipe(map((response) => {
40
+ const result = plainToClass(BankConnection, response);
41
+ if (bankConnection.id) {
42
+ this.handleResponse([result], 'put');
43
+ }
44
+ else {
45
+ this.handleResponse([result], 'post');
45
46
  }
46
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_CONNECTION_ADDED, connection));
47
- return plainToClass(BankConnection, connection);
47
+ return result;
48
48
  }), catchError((error) => {
49
49
  // Show error when user provided wrong login data
50
50
  if (error.status === 401) {
@@ -57,11 +57,6 @@ export class BankConnectionService extends RestService {
57
57
  return observableThrowError(error);
58
58
  }));
59
59
  }
60
- listenToAddedBankAccounts() {
61
- this.eventDispatcherService.on(AppEventTypeEnum.BANK_ACCOUNT_CREATED).subscribe(() => {
62
- this.resetCache();
63
- });
64
- }
65
60
  /**
66
61
  * Update cache when basiq accounts were retrieved or login to basic was failed to get actual connections statuses
67
62
  */
@@ -82,8 +77,10 @@ export class BankConnectionService extends RestService {
82
77
  */
83
78
  listenBasiqLogin() {
84
79
  this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_LOGIN_SUCCESS).subscribe((data) => {
85
- this.add(plainToClass(BankConnection, { id: data.connectionId, basiqJob: { externalId: data.jobId } }))
86
- .subscribe(() => { },
80
+ this.post(plainToClass(BankConnection, { id: data.connectionId, basiqJob: { externalId: data.jobId } }))
81
+ .subscribe((connection) => {
82
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_CONNECTION_ADDED, connection));
83
+ },
87
84
  // When user already has some bank accounts in handling connection and trying to login with different credentials, backend can not save this connection.
88
85
  // So we should handle this case as failed login
89
86
  () => {
@@ -96,12 +93,15 @@ BankConnectionService.userEventTypes = [
96
93
  UserEventTypeTypeEnum.BASIQ_NEW_ACCOUNTS,
97
94
  UserEventTypeTypeEnum.BASIQ_AUTHORIZATION_FAIL
98
95
  ];
99
- BankConnectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankConnectionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
100
- BankConnectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankConnectionService, providedIn: 'root' });
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankConnectionService, decorators: [{
96
+ BankConnectionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankConnectionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
97
+ BankConnectionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankConnectionService, providedIn: 'root' });
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankConnectionService, decorators: [{
102
99
  type: Injectable,
103
100
  args: [{
104
101
  providedIn: 'root'
105
102
  }]
106
- }] });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1jb25uZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9iYW5rL2JhbmstY29ubmVjdGlvbi9iYW5rLWNvbm5lY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFaEYsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUd2RixPQUFPLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBRXpGOzs7R0FHRztBQUlILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUErQztJQUgxRjs7UUFTRSxlQUFVLEdBQUcsY0FBYyxDQUFDO1FBQzVCLFFBQUcsR0FBVyxrQkFBa0IsQ0FBQztLQXdGbEM7SUF0RkMsWUFBWTtRQUNWLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUks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LENBQUMsSUFBeUIsRUFBRSxFQUFFO1lBQzNHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNwRyxTQUFTLENBQ1IsR0FBRyxFQUFFLEdBQUcsQ0FBQztZQUNULHdKQUF3SjtZQUN4SixnREFBZ0Q7WUFDaEQsR0FBRyxFQUFFO2dCQUNILElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNoRyxDQUFDLENBQ0YsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7QUE3Rk0sb0NBQWMsR0FBNEI7SUFDL0MscUJBQXFCLENBQUMsa0JBQWtCO0lBQ3hDLHFCQUFxQixDQUFDLHdCQUF3QjtDQUMvQyxDQUFDO21IQUpTLHFCQUFxQjt1SEFBckIscUJBQXFCLGNBRnBCLE1BQU07NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJhbmtDb25uZWN0aW9uIGFzIEJhbmtDb25uZWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy9iYW5rL2JhbmstY29ubmVjdGlvbic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBCYW5rQ29ubmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9iYW5rL2JhbmstY29ubmVjdGlvbic7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC1vbGQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2V2ZW50LWxpc3RlbmVyLmludGVyZmFjZSc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IHsgcmVwbGFjZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Z1bmN0aW9ucy9hcnJheSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbic7XG5pbXBvcnQgeyBBcHBFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQnO1xuaW1wb3J0IHsgVXNlckV2ZW50VHlwZVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvRW51bXMvdXNlci1ldmVudC10eXBlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBCYXNpcUNvbm5lY3Rpb25EYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciB9IGZyb20gJ3J4anMvaW50ZXJuYWwvb2JzZXJ2YWJsZS90aHJvd0Vycm9yJztcblxuLyoqXG4gKiBCYW5rQ29ubmVjdGlvbiBtZWFucyB1c2VyIGFjY291bnQgYXQgc3BlY2lmaWMgYmFuayAodXN1YWxseSBlYWNoIHVzZXIgaGFzIG9ubHkgb25lIGF0IHRoZSBzYW1lIGJhbmspXG4gKiBzZXJ2aWNlIGhhbmRsZXMgQmFua0Nvbm5lY3Rpb24gbWFuYWdlbWVudFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYW5rQ29ubmVjdGlvblNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxCYW5rQ29ubmVjdGlvbkJhc2UsIEJhbmtDb25uZWN0aW9uPiBpbXBsZW1lbnRzIElFdmVudExpc3RlbmVyIHtcbiAgc3RhdGljIHVzZXJFdmVudFR5cGVzOiBVc2VyRXZlbnRUeXBlVHlwZUVudW1bXSA9IFtcbiAgICBVc2VyRXZlbnRUeXBlVHlwZUVudW0uQkFTSVFfTkVXX0FDQ09VTlRTLFxuICAgIFVzZXJFdmVudFR5cGVUeXBlRW51bS5CQVNJUV9BVVRIT1JJWkFUSU9OX0ZBSUxcbiAgXTtcblxuICBtb2RlbENsYXNzID0gQmFua0Nvbm5lY3Rpb247XG4gIHVybDogc3RyaW5nID0gJ2JhbmstY29ubmVjdGlvbnMnO1xuXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlblRvQWRkZWRCYW5rQWNjb3VudHMoKTtcbiAgICB0aGlzLmxpc3Rlbk5vdGlmaWNhdGlvbnMoKTtcbiAgICB0aGlzLmxpc3RlbkJhc2lxTG9naW4oKTtcbiAgfVxuXG4gIGFkZChiYW5rQ29ubmVjdGlvbjogQmFua0Nvbm5lY3Rpb24pOiBPYnNlcnZhYmxlPEJhbmtDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YCwgYmFua0Nvbm5lY3Rpb24pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChiYW5rQ29ubmVjdGlvbkJhc2U6IEJhbmtDb25uZWN0aW9uQmFzZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbm5lY3Rpb246IEJhbmtDb25uZWN0aW9uID0gcGxhaW5Ub0NsYXNzKEJhbmtDb25uZWN0aW9uLCBiYW5rQ29ubmVjdGlvbkJhc2UpO1xuXG4gICAgICAgICAgLy8gV2UgdXNlIHRoaXMgZW5kcG9pbnQgZm9yIGNyZWF0ZSBhbmQgcmVjb25uZWN0IGJhbmsgY29ubmVjdGlvbnMgYmVjYXVzZSBvZiBiYXNpcSBsb2dpYy5cbiAgICAgICAgICAvLyBTbyB3ZSB0cnkgdG8gcmVwbGFjZSBiYW5rIGNvbm5lY3Rpb24gaW4gY2FjaGUgZm9yIHJlY29ubmVjdGlvbiBjYXNlLlxuICAgICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgICBpZiAoYmFua0Nvbm5lY3Rpb24uaWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgdGVtcENhY2hlOiBCYW5rQ29ubmVjdGlvbltdID0gY2xvbmVEZWVwKHRoaXMuY2FjaGUpO1xuICAgICAgICAgICAgICByZXBsYWNlKHRlbXBDYWNoZSwgY29ubmVjdGlvbik7XG5cbiAgICAgICAgICAgICAgdGhpcy5jYWNoZSA9IHRlbXBDYWNoZTtcbiAgICAgICAgICAgICAgdGhpcy5jYWNoZVN1YmplY3QubmV4dCh0aGlzLmNhY2hlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FjaGUucHVzaChjb25uZWN0aW9uKVxuICAgICAgICAgICAgICB0aGlzLmNhY2hlU3ViamVjdC5uZXh0KGNsb25lRGVlcCh0aGlzLmNhY2hlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBTktfQ09OTkVDVElPTl9BRERFRCwgY29ubmVjdGlvbikpO1xuXG4gICAgICAgICAgcmV0dXJuIHBsYWluVG9DbGFzcyhCYW5rQ29ubmVjdGlvbiwgY29ubmVjdGlvbik7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAvLyBTaG93IGVycm9yIHdoZW4gdXNlciBwcm92aWRlZCB3cm9uZyBsb2dpbiBkYXRhXG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5lcnJvcignSW52YWxpZCBjcmVkZW50aWFscycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFNob3cgZXJyb3Igd2hlbiB1c2VyIHByb3ZpZGVkIGFub3RoZXIgbG9naW4gKG5vdCBsb2dpbiBoZSB1c2VkIGJlZm9yZSlcbiAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmVycm9yKCdQbGVhc2UgZW50ZXIgdGhlIGxvZ2luIHlvdSB1c2VkIGJlZm9yZScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgbGlzdGVuVG9BZGRlZEJhbmtBY2NvdW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5CQU5LX0FDQ09VTlRfQ1JFQVRFRCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVzZXRDYWNoZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjYWNoZSB3aGVuIGJhc2lxIGFjY291bnRzIHdlcmUgcmV0cmlldmVkIG9yIGxvZ2luIHRvIGJhc2ljIHdhcyBmYWlsZWQgdG8gZ2V0IGFjdHVhbCBjb25uZWN0aW9ucyBzdGF0dXNlc1xuICAgKi9cbiAgbGlzdGVuTm90aWZpY2F0aW9ucygpOiB2b2lkIHtcbiAgICAvLyBAVE9ETyB2aWsgbGlzdGVuIHNzZSB3aGVuIGJhY2tlbmQgdXBkYXRlZFxuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLk5PVElGSUNBVElPTl9BRERFRCkuc3Vic2NyaWJlKChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikgPT4ge1xuICAgICAgLy8gQFRvZG8gVFQtMjI4MCBBbGV4IHJlZmFjdG9yIFNlcnZpY2VOb3RpZmljYXRpb24gaXNSZWFkIGxvZ2ljLiBXZSBkb24ndCBuZWVkIHRvIGtub3cgaGVyZSB3aGV0aGVyIG5vdGlmaWNhdGlvbiB3YXMgcmVhZCBvciBub3RcbiAgICAgIGlmICghbm90aWZpY2F0aW9uLmlzUmVhZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChCYW5rQ29ubmVjdGlvblNlcnZpY2UudXNlckV2ZW50VHlwZXMuaW5jbHVkZXMobm90aWZpY2F0aW9uLmV2ZW50VHlwZSkpIHtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlL3JlY29ubmVjdCBiYW5rIGNvbm5lY3Rpb24gd2hlbiB1c2VyIHN1Y2Nlc3NmdWxseSBsb2dnZWQgaW4gdG8gYmFzaXFcbiAgICovXG4gIGxpc3RlbkJhc2lxTG9naW4oKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uQkFTSVFfTE9HSU5fU1VDQ0VTUykuc3Vic2NyaWJlKChkYXRhOiBCYXNpcUNvbm5lY3Rpb25EYXRhKSA9PiB7XG4gICAgICB0aGlzLmFkZChwbGFpblRvQ2xhc3MoQmFua0Nvbm5lY3Rpb24sIHsgaWQ6IGRhdGEuY29ubmVjdGlvbklkLCBiYXNpcUpvYjogeyBleHRlcm5hbElkOiBkYXRhLmpvYklkIH0gfSkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKCkgPT4geyB9LFxuICAgICAgICAgIC8vIFdoZW4gdXNlciBhbHJlYWR5IGhhcyBzb21lIGJhbmsgYWNjb3VudHMgaW4gaGFuZGxpbmcgY29ubmVjdGlvbiBhbmQgdHJ5aW5nIHRvIGxvZ2luIHdpdGggZGlmZmVyZW50IGNyZWRlbnRpYWxzLCBiYWNrZW5kIGNhbiBub3Qgc2F2ZSB0aGlzIGNvbm5lY3Rpb24uXG4gICAgICAgICAgLy8gU28gd2Ugc2hvdWxkIGhhbmRsZSB0aGlzIGNhc2UgYXMgZmFpbGVkIGxvZ2luXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBU0lRX0xPR0lOX0ZBSUxFRCwgbnVsbCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KVxuICB9XG59XG4iXX0=
103
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
104
+ type: Inject,
105
+ args: ['environment']
106
+ }] }, { type: i3.ToastService }]; } });
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay1jb25uZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9iYW5rL2JhbmstY29ubmVjdGlvbi9iYW5rLWNvbm5lY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBcUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVoSSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUV2RixPQUFPLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQUlyRDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsV0FBMkU7SUFXcEgsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0IsRUFDekMsWUFBMEI7UUFFbEMsS0FBSyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUx2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDekMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFUcEMsZUFBVSxHQUEwQixjQUFjLENBQUM7UUFDbkQsb0JBQWUsR0FBc0IsVUFBVSxDQUFDO1FBQ2hELGdCQUFXLEdBQVcsa0JBQWtCLENBQUM7UUFDekMsb0JBQWUsR0FBaUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFTMUYsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsY0FBOEI7UUFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQzthQUMvQyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBNEIsRUFBRSxFQUFFO1lBQ25DLE1BQU0sTUFBTSxHQUFtQixZQUFZLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3RFLElBQUksY0FBYyxDQUFDLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3RDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN2QztZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRTtZQUN0QyxpREFBaUQ7WUFDakQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUNoRDtZQUVELHlFQUF5RTtZQUN6RSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO2FBQ25FO1lBRUQsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFO1lBQzNHLGdJQUFnSTtZQUNoSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtnQkFDeEIsT0FBTzthQUNSO1lBRUQsSUFBSSxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDekUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBeUIsRUFBRSxFQUFFO1lBRTNHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNyRyxTQUFTLENBQ1IsQ0FBQyxVQUEwQixFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUN6RyxDQUFDO1lBQ0Qsd0pBQXdKO1lBQ3hKLGdEQUFnRDtZQUNoRCxHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLENBQUMsQ0FDRixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOztBQTVGTSxvQ0FBYyxHQUE0QjtJQUMvQyxxQkFBcUIsQ0FBQyxrQkFBa0I7SUFDeEMscUJBQXFCLENBQUMsd0JBQXdCO0NBQy9DLENBQUM7bUhBSlMscUJBQXFCLGtGQWN0QixhQUFhO3VIQWRaLHFCQUFxQixjQUZwQixNQUFNOzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWVJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFua0Nvbm5lY3Rpb24gYXMgQmFua0Nvbm5lY3Rpb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFJlc3RNZXRob2QsIFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdCc7XG5pbXBvcnQgeyBBcHBFdmVudCwgQXBwRXZlbnRUeXBlRW51bSwgQmFua0Nvbm5lY3Rpb24sIEJhbmtBY2NvdW50LCBCYXNpcUNvbm5lY3Rpb25EYXRhLCBOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFVzZXJFdmVudFR5cGVUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL0VudW1zL3VzZXItZXZlbnQtdHlwZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL3Rocm93RXJyb3InO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3RvYXN0JztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9ldmVudCc7XG5cbi8qKlxuICogQmFua0Nvbm5lY3Rpb24gbWVhbnMgdXNlciBhY2NvdW50IGF0IHNwZWNpZmljIGJhbmsgKHVzdWFsbHkgZWFjaCB1c2VyIGhhcyBvbmx5IG9uZSBhdCB0aGUgc2FtZSBiYW5rKVxuICogc2VydmljZSBoYW5kbGVzIEJhbmtDb25uZWN0aW9uIG1hbmFnZW1lbnRcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFua0Nvbm5lY3Rpb25TZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8QmFua0Nvbm5lY3Rpb25CYXNlLCBCYW5rQ29ubmVjdGlvbiwgQ29sbGVjdGlvbjxCYW5rQ29ubmVjdGlvbj4+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICBzdGF0aWMgdXNlckV2ZW50VHlwZXM6IFVzZXJFdmVudFR5cGVUeXBlRW51bVtdID0gW1xuICAgIFVzZXJFdmVudFR5cGVUeXBlRW51bS5CQVNJUV9ORVdfQUNDT1VOVFMsXG4gICAgVXNlckV2ZW50VHlwZVR5cGVFbnVtLkJBU0lRX0FVVEhPUklaQVRJT05fRkFJTFxuICBdO1xuXG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBCYW5rQ29ubmVjdGlvbiA9IEJhbmtDb25uZWN0aW9uO1xuICBjb2xsZWN0aW9uQ2xhc3M6IHR5cGVvZiBDb2xsZWN0aW9uID0gQ29sbGVjdGlvbjtcbiAgZW5kcG9pbnRVcmk6IHN0cmluZyA9ICdiYW5rLWNvbm5lY3Rpb25zJztcbiAgZGlzYWJsZWRNZXRob2RzOiBSZXN0TWV0aG9kW10gPSBbJ3Bvc3RCYXRjaCcsICdwdXQnLCAncHV0QmF0Y2gnLCAnZGVsZXRlJywgJ2RlbGV0ZUJhdGNoJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgfVxuXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbkNTRShCYW5rQWNjb3VudCwgWydwb3N0J10sIHRoaXMucmVzZXRDYWNoZSk7XG4gICAgdGhpcy5saXN0ZW5Ob3RpZmljYXRpb25zKCk7XG4gICAgdGhpcy5saXN0ZW5CYXNpcUxvZ2luKCk7XG4gIH1cblxuICAvKipcbiAgICogUE9TVCBlbmRwb2ludCBpcyB1c2luZyBmb3IgY3JlYXRlIGFuZCBmb3IgdXBkYXRlLlxuICAgKi9cbiAgcG9zdChiYW5rQ29ubmVjdGlvbjogQmFua0Nvbm5lY3Rpb24pOiBPYnNlcnZhYmxlPEJhbmtDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpVXJsLCBiYW5rQ29ubmVjdGlvbilcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBCYW5rQ29ubmVjdGlvbkJhc2UpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IEJhbmtDb25uZWN0aW9uID0gcGxhaW5Ub0NsYXNzKEJhbmtDb25uZWN0aW9uLCByZXNwb25zZSk7XG4gICAgICAgICAgaWYgKGJhbmtDb25uZWN0aW9uLmlkKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlc3BvbnNlKFtyZXN1bHRdLCAncHV0Jyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UoW3Jlc3VsdF0sICdwb3N0Jyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIC8vIFNob3cgZXJyb3Igd2hlbiB1c2VyIHByb3ZpZGVkIHdyb25nIGxvZ2luIGRhdGFcbiAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmVycm9yKCdJbnZhbGlkIGNyZWRlbnRpYWxzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU2hvdyBlcnJvciB3aGVuIHVzZXIgcHJvdmlkZWQgYW5vdGhlciBsb2dpbiAobm90IGxvZ2luIGhlIHVzZWQgYmVmb3JlKVxuICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZXJyb3IoJ1BsZWFzZSBlbnRlciB0aGUgbG9naW4geW91IHVzZWQgYmVmb3JlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY2FjaGUgd2hlbiBiYXNpcSBhY2NvdW50cyB3ZXJlIHJldHJpZXZlZCBvciBsb2dpbiB0byBiYXNpYyB3YXMgZmFpbGVkIHRvIGdldCBhY3R1YWwgY29ubmVjdGlvbnMgc3RhdHVzZXNcbiAgICovXG4gIGxpc3Rlbk5vdGlmaWNhdGlvbnMoKTogdm9pZCB7XG4gICAgLy8gQFRPRE8gdmlrIGxpc3RlbiBzc2Ugd2hlbiBiYWNrZW5kIHVwZGF0ZWRcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5OT1RJRklDQVRJT05fQURERUQpLnN1YnNjcmliZSgobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pID0+IHtcbiAgICAgIC8vIEBUb2RvIFRULTIyODAgQWxleCByZWZhY3RvciBTZXJ2aWNlTm90aWZpY2F0aW9uIGlzUmVhZCBsb2dpYy4gV2UgZG9uJ3QgbmVlZCB0byBrbm93IGhlcmUgd2hldGhlciBub3RpZmljYXRpb24gd2FzIHJlYWQgb3Igbm90XG4gICAgICBpZiAoIW5vdGlmaWNhdGlvbi5pc1JlYWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoQmFua0Nvbm5lY3Rpb25TZXJ2aWNlLnVzZXJFdmVudFR5cGVzLmluY2x1ZGVzKG5vdGlmaWNhdGlvbi5ldmVudFR5cGUpKSB7XG4gICAgICAgIHRoaXMucmVzZXRDYWNoZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZS9yZWNvbm5lY3QgYmFuayBjb25uZWN0aW9uIHdoZW4gdXNlciBzdWNjZXNzZnVsbHkgbG9nZ2VkIGluIHRvIGJhc2lxXG4gICAqL1xuICBsaXN0ZW5CYXNpcUxvZ2luKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLkJBU0lRX0xPR0lOX1NVQ0NFU1MpLnN1YnNjcmliZSgoZGF0YTogQmFzaXFDb25uZWN0aW9uRGF0YSkgPT4ge1xuXG4gICAgICB0aGlzLnBvc3QocGxhaW5Ub0NsYXNzKEJhbmtDb25uZWN0aW9uLCB7IGlkOiBkYXRhLmNvbm5lY3Rpb25JZCwgYmFzaXFKb2I6IHsgZXh0ZXJuYWxJZDogZGF0YS5qb2JJZCB9IH0pKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChjb25uZWN0aW9uOiBCYW5rQ29ubmVjdGlvbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBTktfQ09OTkVDVElPTl9BRERFRCwgY29ubmVjdGlvbikpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gV2hlbiB1c2VyIGFscmVhZHkgaGFzIHNvbWUgYmFuayBhY2NvdW50cyBpbiBoYW5kbGluZyBjb25uZWN0aW9uIGFuZCB0cnlpbmcgdG8gbG9naW4gd2l0aCBkaWZmZXJlbnQgY3JlZGVudGlhbHMsIGJhY2tlbmQgY2FuIG5vdCBzYXZlIHRoaXMgY29ubmVjdGlvbi5cbiAgICAgICAgICAvLyBTbyB3ZSBzaG91bGQgaGFuZGxlIHRoaXMgY2FzZSBhcyBmYWlsZWQgbG9naW5cbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uQkFTSVFfTE9HSU5fRkFJTEVELCBudWxsKSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pXG4gIH1cbn1cbiJdfQ==
@@ -1,12 +1,10 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { map } from 'rxjs/operators';
3
- import { RestService } from '../../rest/rest-old.service';
3
+ import { RestService } from '../../rest';
4
4
  import { plainToClass } from 'class-transformer';
5
- import { BankTransaction } from '../../../../models/bank/bank-transaction';
6
- import { FinancialYear } from '../../../../models/financial-year/financial-year';
7
- import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
5
+ import { AppEvent, AppEventTypeEnum, BankTransaction, FinancialYear } from '../../../../models';
8
6
  import { UserEventTypeTypeEnum } from '../../../../db/Enums/user-event-type-type.enum';
9
- import { AppEvent } from '../../../../models/event/app-event';
7
+ import { BankTransactionCollection } from '../../../../collections';
10
8
  import * as i0 from "@angular/core";
11
9
  /**
12
10
  * Service for bank transactions business logic
@@ -14,29 +12,20 @@ import * as i0 from "@angular/core";
14
12
  export class BankTransactionService extends RestService {
15
13
  constructor() {
16
14
  super(...arguments);
17
- // url part for BankTransaction API
18
- this.url = 'bank-transactions';
15
+ this.endpointUri = 'bank-transactions';
19
16
  this.modelClass = BankTransaction;
17
+ this.collectionClass = BankTransactionCollection;
18
+ this.disabledMethods = ['post', 'postBatch', 'put', 'putBatch', 'deleteBatch'];
20
19
  }
21
20
  listenEvents() {
22
21
  this.listenBankTransactionsImport();
23
22
  }
24
23
  ;
25
- /**
26
- * get list of bank transactions for passed bank account id
27
- * @param bankAccountId Id of bank account we search bank transactions for
28
- */
29
- getByBankAccountId(bankAccountId) {
30
- return this.get()
31
- .pipe(map((bankTransactions) => {
32
- return bankTransactions.filter((bankTransaction) => bankTransaction.bankAccount.id === bankAccountId);
33
- }));
34
- }
35
24
  /**
36
25
  * Get list of bank transactions for provided financial year
37
26
  * @TODO VIK/Alex: consider to use one endpoint to get bank transactions for 2 fin years
38
27
  */
39
- getTransactionsByYear(finYear) {
28
+ getByYear(finYear) {
40
29
  return this.http.get(`${this.environment.apiV2}/bank-transactions?financialYear=${finYear}`)
41
30
  .pipe(map((bankTransactionsBase) => {
42
31
  return bankTransactionsBase.map((bankTransaction) => plainToClass(BankTransaction, bankTransaction));
@@ -52,20 +41,15 @@ export class BankTransactionService extends RestService {
52
41
  formData.append('file', file);
53
42
  return this.http.post(`${this.environment.apiV2}/bank-accounts/${bankAccountId}/bank-transaction-imports`, formData)
54
43
  .pipe(map((response) => {
55
- const newBankTransactions = response.map((bankTransaction) => plainToClass(BankTransaction, bankTransaction));
44
+ const result = response
45
+ .map((baseTransaction) => plainToClass(BankTransaction, baseTransaction))
46
+ // we are interesting only current fin year bank transactions
47
+ .filter((bankTransaction) => new FinancialYear().includes(bankTransaction.date));
56
48
  // push new items to cache only if we already have cache. Otherwise cache will contain only new items.
57
49
  if (this.cache) {
58
- // just current year's transactions should be added
59
- this.cache.push(...newBankTransactions.filter((bt) => new FinancialYear().includes(bt.date)));
60
- this.updateCache();
50
+ this.handleResponse(result, 'post');
61
51
  }
62
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_TRANSACTIONS_ADDED, newBankTransactions));
63
- return newBankTransactions;
64
- }));
65
- }
66
- delete(model) {
67
- return super.delete(model).pipe(map(() => {
68
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_TRANSACTIONS_DELETED, model));
52
+ return result;
69
53
  }));
70
54
  }
71
55
  /**
@@ -80,12 +64,12 @@ export class BankTransactionService extends RestService {
80
64
  });
81
65
  }
82
66
  }
83
- BankTransactionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankTransactionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
84
- BankTransactionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankTransactionService, providedIn: 'root' });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: BankTransactionService, decorators: [{
67
+ BankTransactionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
68
+ BankTransactionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionService, providedIn: 'root' });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BankTransactionService, decorators: [{
86
70
  type: Injectable,
87
71
  args: [{
88
72
  providedIn: 'root'
89
73
  }]
90
74
  }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2FjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvYmFuay9iYW5rLXRyYW5zYWN0aW9uL2JhbmstdHJhbnNhY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFHaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdkYsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG9DQUFvQyxDQUFDOztBQUc1RDs7R0FFRztBQUlILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxXQUFpRDtJQUg3Rjs7UUFJRSxtQ0FBbUM7UUFDbkMsUUFBRyxHQUFXLG1CQUFtQixDQUFDO1FBQ2xDLGVBQVUsR0FBRyxlQUFlLENBQUM7S0E2RTlCO0lBM0VDLFlBQVk7UUFDVixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQUEsQ0FBQztJQUVGOzs7T0FHRztJQUNILGtCQUFrQixDQUFDLGFBQXFCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRTthQUNkLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxnQkFBbUMsRUFB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QUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNuQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7b0hBL0VVLHNCQUFzQjt3SEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhbmtUcmFuc2FjdGlvbiBhcyBCYW5rVHJhbnNhY3Rpb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL2JhbmsvYmFuay10cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC1vbGQuc2VydmljZSc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBVc2VyRXZlbnRUeXBlQ2xpZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9FbnVtcy91c2VyLWV2ZW50LXR5cGUtY2xpZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBCYW5rVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvYmFuay9iYW5rLXRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEZpbmFuY2lhbFllYXIgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmluYW5jaWFsLXllYXIvZmluYW5jaWFsLXllYXInO1xuaW1wb3J0IHsgQXBwRXZlbnRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQtdHlwZS5lbnVtJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9ldmVudC1saXN0ZW5lci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVXNlckV2ZW50VHlwZVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvRW51bXMvdXNlci1ldmVudC10eXBlLXR5cGUuZW51bSc7XG5pbXBvcnQge0FwcEV2ZW50fSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7QmFua0FjY291bnR9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgYmFuayB0cmFuc2FjdGlvbnMgYnVzaW5lc3MgbG9naWNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFua1RyYW5zYWN0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPEJhbmtUcmFuc2FjdGlvbkJhc2UsIEJhbmtUcmFuc2FjdGlvbj4gaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIC8vIHVybCBwYXJ0IGZvciBCYW5rVHJhbnNhY3Rpb24gQVBJXG4gIHVybDogc3RyaW5nID0gJ2JhbmstdHJhbnNhY3Rpb25zJztcbiAgbW9kZWxDbGFzcyA9IEJhbmtUcmFuc2FjdGlvbjtcblxuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5CYW5rVHJhbnNhY3Rpb25zSW1wb3J0KCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIGJhbmsgdHJhbnNhY3Rpb25zIGZvciBwYXNzZWQgYmFuayBhY2NvdW50IGlkXG4gICAqIEBwYXJhbSBiYW5rQWNjb3VudElkIElkIG9mIGJhbmsgYWNjb3VudCB3ZSBzZWFyY2ggYmFuayB0cmFuc2FjdGlvbnMgZm9yXG4gICAqL1xuICBnZXRCeUJhbmtBY2NvdW50SWQoYmFua0FjY291bnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxCYW5rVHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChiYW5rVHJhbnNhY3Rpb25zOiBCYW5rVHJhbnNhY3Rpb25bXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBiYW5rVHJhbnNhY3Rpb25zLmZpbHRlcigoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IGJhbmtUcmFuc2FjdGlvbi5iYW5rQWNjb3VudC5pZCA9PT0gYmFua0FjY291bnRJZCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsaXN0IG9mIGJhbmsgdHJhbnNhY3Rpb25zIGZvciBwcm92aWRlZCBmaW5hbmNpYWwgeWVhclxuICAgKiBAVE9ETyBWSUsvQWxleDogY29uc2lkZXIgdG8gdXNlIG9uZSBlbmRwb2ludCB0byBnZXQgYmFuayB0cmFuc2FjdGlvbnMgZm9yIDIgZmluIHllYXJzXG4gICAqL1xuICBnZXRUcmFuc2FjdGlvbnNCeVllYXIoZmluWWVhcjogbnVtYmVyKTogT2JzZXJ2YWJsZTxCYW5rVHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L2JhbmstdHJhbnNhY3Rpb25zP2ZpbmFuY2lhbFllYXI9JHtmaW5ZZWFyfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChiYW5rVHJhbnNhY3Rpb25zQmFzZTogQmFua1RyYW5zYWN0aW9uQmFzZVtdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGJhbmtUcmFuc2FjdGlvbnNCYXNlLm1hcCgoYmFua1RyYW5zYWN0aW9uOiBCYW5rVHJhbnNhY3Rpb24pID0+IHBsYWluVG9DbGFzcyhCYW5rVHJhbnNhY3Rpb24sIGJhbmtUcmFuc2FjdGlvbikpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBpbXBvcnQgYmFuayB0cmFuc2FjdGlvbnMgZnJvbSBjc3YgZmlsZVxuICAgKiBAcGFyYW0gYmFua0FjY291bnRJZCBCYW5rIGFjY291bnQgaWQgd2UgaW1wb3J0IGJhbmsgdHJhbnNhY3Rpb25zIGZvclxuICAgKiBAcGFyYW0gZmlsZSBGaWxlIHdpdGggYmFuayB0cmFuc2FjdGlvbnMgZm9yIGltcG9ydFxuICAgKi9cbiAgaW1wb3J0KGJhbmtBY2NvdW50SWQ6IG51bWJlciwgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8QmFua1RyYW5zYWN0aW9uW10+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9iYW5rLWFjY291bnRzLyR7YmFua0FjY291bnRJZH0vYmFuay10cmFuc2FjdGlvbi1pbXBvcnRzYCwgZm9ybURhdGEpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogQmFua1RyYW5zYWN0aW9uQmFzZVtdKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3QmFua1RyYW5zYWN0aW9uczogQmFua1RyYW5zYWN0aW9uW10gPSByZXNwb25zZS5tYXAoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uQmFzZSkgPT4gcGxhaW5Ub0NsYXNzKEJhbmtUcmFuc2FjdGlvbiwgYmFua1RyYW5zYWN0aW9uKSk7XG4gICAgICAgICAgLy8gcHVzaCBuZXcgaXRlbXMgdG8gY2FjaGUgb25seSBpZiB3ZSBhbHJlYWR5IGhhdmUgY2FjaGUuIE90aGVyd2lzZSBjYWNoZSB3aWxsIGNvbnRhaW4gb25seSBuZXcgaXRlbXMuXG4gICAgICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgICAgICAgIC8vIGp1c3QgY3VycmVudCB5ZWFyJ3MgdHJhbnNhY3Rpb25zIHNob3VsZCBiZSBhZGRlZFxuICAgICAgICAgICAgdGhpcy5jYWNoZS5wdXNoKC4uLm5ld0JhbmtUcmFuc2FjdGlvbnMuZmlsdGVyKChidDogQmFua1RyYW5zYWN0aW9uKSA9PiBuZXcgRmluYW5jaWFsWWVhcigpLmluY2x1ZGVzKGJ0LmRhdGUpKSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBTktfVFJBTlNBQ1RJT05TX0FEREVELCBuZXdCYW5rVHJhbnNhY3Rpb25zKSk7XG4gICAgICAgICAgcmV0dXJuIG5ld0JhbmtUcmFuc2FjdGlvbnM7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlKG1vZGVsOiBCYW5rVHJhbnNhY3Rpb24pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gc3VwZXIuZGVsZXRlKG1vZGVsKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBTktfVFJBTlNBQ1RJT05TX0RFTEVURUQsIG1vZGVsKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQFRPRE8gbW92ZSB0byBzc2Ugd2hlbiBiYWNrZW5kIHNlbmQgbWVyY3VyZSBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5CYW5rVHJhbnNhY3Rpb25zSW1wb3J0KCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLk5PVElGSUNBVElPTl9BRERFRCkuc3Vic2NyaWJlKChub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbikgPT4ge1xuICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNSZWFkICYmIG5vdGlmaWNhdGlvbi5ldmVudFR5cGUgPT09IFVzZXJFdmVudFR5cGVUeXBlRW51bS5CQVNJUV9GSVJTVF9JTVBPUlRfQ09NUExFVEUpIHtcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkJBTktfVFJBTlNBQ1RJT05TX0FEREVELCBbXSkpO1xuICAgICAgICB0aGlzLnJlc2V0Q2FjaGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2FjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvYmFuay9iYW5rLXRyYW5zYWN0aW9uL2JhbmstdHJhbnNhY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWdCLE1BQU0sb0JBQW9CLENBQUM7QUFFOUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRXBFOztHQUVHO0FBSUgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQTRFO0lBSHhIOztRQUlFLGdCQUFXLEdBQVcsbUJBQW1CLENBQUM7UUFDMUMsZUFBVSxHQUEyQixlQUFlLENBQUM7UUFDckQsb0JBQWUsR0FBcUMseUJBQXlCLENBQUM7UUFDOUUsb0JBQWUsR0FBaUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7S0F3RHpGO0lBdERDLFlBQVk7UUFDVixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQUEsQ0FBQztJQUVGOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxPQUFlO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssb0NBQW9DLE9BQU8sRUFBRSxDQUFDO2FBQ3pGLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxvQkFBMkMsRUFBRSxFQUFFO1lBQ2xELE9BQU8sb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBZ0MsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3hILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxhQUFxQixFQUFFLElBQVU7UUFDdEMsTUFBTSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMxQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLGtCQUFrQixhQUFhLDJCQUEyQixFQUFFLFFBQVEsQ0FBQzthQUNqSCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBK0IsRUFBRSxFQUFFO1lBQ3RDLE1BQU0sTUFBTSxHQUFzQixRQUFRO2lCQUN2QyxHQUFHLENBQUMsQ0FBQyxlQUFvQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUM5Riw2REFBNkQ7aUJBQzVELE1BQU0sQ0FBQyxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLHNHQUFzRztZQUN0RyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDckM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ssNEJBQTRCO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUEwQixFQUFFLEVBQUU7WUFDM0csSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxxQkFBcUIsQ0FBQywyQkFBMkIsRUFBRTtnQkFDeEcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbkI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O29IQTNEVSxzQkFBc0I7d0hBQXRCLHNCQUFzQixjQUZyQixNQUFNOzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYW5rVHJhbnNhY3Rpb24gYXMgQmFua1RyYW5zYWN0aW9uQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXN0TWV0aG9kLCBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgQXBwRXZlbnQsIEFwcEV2ZW50VHlwZUVudW0sIEJhbmtUcmFuc2FjdGlvbiwgRmluYW5jaWFsWWVhciwgTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBVc2VyRXZlbnRUeXBlVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9FbnVtcy91c2VyLWV2ZW50LXR5cGUtdHlwZS5lbnVtJztcbmltcG9ydCB7IEJhbmtUcmFuc2FjdGlvbkNvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jb2xsZWN0aW9ucyc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgYmFuayB0cmFuc2FjdGlvbnMgYnVzaW5lc3MgbG9naWNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFua1RyYW5zYWN0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPEJhbmtUcmFuc2FjdGlvbkJhc2UsIEJhbmtUcmFuc2FjdGlvbiwgQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbj4gaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIGVuZHBvaW50VXJpOiBzdHJpbmcgPSAnYmFuay10cmFuc2FjdGlvbnMnO1xuICBtb2RlbENsYXNzOiB0eXBlb2YgQmFua1RyYW5zYWN0aW9uID0gQmFua1RyYW5zYWN0aW9uO1xuICBjb2xsZWN0aW9uQ2xhc3M6IHR5cGVvZiBCYW5rVHJhbnNhY3Rpb25Db2xsZWN0aW9uID0gQmFua1RyYW5zYWN0aW9uQ29sbGVjdGlvbjtcbiAgZGlzYWJsZWRNZXRob2RzOiBSZXN0TWV0aG9kW10gPSBbJ3Bvc3QnLCAncG9zdEJhdGNoJywgJ3B1dCcsICdwdXRCYXRjaCcsICdkZWxldGVCYXRjaCddO1xuXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbkJhbmtUcmFuc2FjdGlvbnNJbXBvcnQoKTtcbiAgfTtcblxuICAvKipcbiAgICogR2V0IGxpc3Qgb2YgYmFuayB0cmFuc2FjdGlvbnMgZm9yIHByb3ZpZGVkIGZpbmFuY2lhbCB5ZWFyXG4gICAqIEBUT0RPIFZJSy9BbGV4OiBjb25zaWRlciB0byB1c2Ugb25lIGVuZHBvaW50IHRvIGdldCBiYW5rIHRyYW5zYWN0aW9ucyBmb3IgMiBmaW4geWVhcnNcbiAgICovXG4gIGdldEJ5WWVhcihmaW5ZZWFyOiBudW1iZXIpOiBPYnNlcnZhYmxlPEJhbmtUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vYmFuay10cmFuc2FjdGlvbnM/ZmluYW5jaWFsWWVhcj0ke2ZpblllYXJ9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGJhbmtUcmFuc2FjdGlvbnNCYXNlOiBCYW5rVHJhbnNhY3Rpb25CYXNlW10pID0+IHtcbiAgICAgICAgICByZXR1cm4gYmFua1RyYW5zYWN0aW9uc0Jhc2UubWFwKChiYW5rVHJhbnNhY3Rpb246IEJhbmtUcmFuc2FjdGlvbikgPT4gcGxhaW5Ub0NsYXNzKEJhbmtUcmFuc2FjdGlvbiwgYmFua1RyYW5zYWN0aW9uKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGltcG9ydCBiYW5rIHRyYW5zYWN0aW9ucyBmcm9tIGNzdiBmaWxlXG4gICAqIEBwYXJhbSBiYW5rQWNjb3VudElkIEJhbmsgYWNjb3VudCBpZCB3ZSBpbXBvcnQgYmFuayB0cmFuc2FjdGlvbnMgZm9yXG4gICAqIEBwYXJhbSBmaWxlIEZpbGUgd2l0aCBiYW5rIHRyYW5zYWN0aW9ucyBmb3IgaW1wb3J0XG4gICAqL1xuICBpbXBvcnQoYmFua0FjY291bnRJZDogbnVtYmVyLCBmaWxlOiBGaWxlKTogT2JzZXJ2YWJsZTxCYW5rVHJhbnNhY3Rpb25bXT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L2JhbmstYWNjb3VudHMvJHtiYW5rQWNjb3VudElkfS9iYW5rLXRyYW5zYWN0aW9uLWltcG9ydHNgLCBmb3JtRGF0YSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBCYW5rVHJhbnNhY3Rpb25CYXNlW10pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IEJhbmtUcmFuc2FjdGlvbltdID0gcmVzcG9uc2VcbiAgICAgICAgICAgIC5tYXAoKGJhc2VUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uQmFzZSkgPT4gcGxhaW5Ub0NsYXNzKEJhbmtUcmFuc2FjdGlvbiwgYmFzZVRyYW5zYWN0aW9uKSlcbiAgICAgICAgICAgIC8vIHdlIGFyZSBpbnRlcmVzdGluZyBvbmx5IGN1cnJlbnQgZmluIHllYXIgYmFuayB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGJhbmtUcmFuc2FjdGlvbjogQmFua1RyYW5zYWN0aW9uKSA9PiBuZXcgRmluYW5jaWFsWWVhcigpLmluY2x1ZGVzKGJhbmtUcmFuc2FjdGlvbi5kYXRlKSk7XG4gICAgICAgICAgLy8gcHVzaCBuZXcgaXRlbXMgdG8gY2FjaGUgb25seSBpZiB3ZSBhbHJlYWR5IGhhdmUgY2FjaGUuIE90aGVyd2lzZSBjYWNoZSB3aWxsIGNvbnRhaW4gb25seSBuZXcgaXRlbXMuXG4gICAgICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2UocmVzdWx0LCAncG9zdCcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBUT0RPIG1vdmUgdG8gc3NlIHdoZW4gYmFja2VuZCBzZW5kIG1lcmN1cmUgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuQmFua1RyYW5zYWN0aW9uc0ltcG9ydCgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5OT1RJRklDQVRJT05fQURERUQpLnN1YnNjcmliZSgobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb24pID0+IHtcbiAgICAgIGlmICghbm90aWZpY2F0aW9uLmlzUmVhZCAmJiBub3RpZmljYXRpb24uZXZlbnRUeXBlID09PSBVc2VyRXZlbnRUeXBlVHlwZUVudW0uQkFTSVFfRklSU1RfSU1QT1JUX0NPTVBMRVRFKSB7XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5CQU5LX1RSQU5TQUNUSU9OU19BRERFRCwgW10pKTtcbiAgICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==