taxtank-core 0.8.3 → 0.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taxtank-core.umd.js +145 -140
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/collections/collection.js +2 -2
- package/esm2015/lib/collections/depreciation.collection.js +3 -3
- package/esm2015/lib/collections/tax-summary/report-item.collection.js +141 -0
- package/esm2015/lib/db/Models/transaction-base.js +2 -1
- package/esm2015/lib/models/property/property.js +7 -4
- package/esm2015/lib/models/tax-summary/report-item-details.js +9 -0
- package/esm2015/lib/models/tax-summary/report-item.js +15 -0
- package/esm2015/lib/models/tax-summary/tax-summary-section.js +5 -5
- package/esm2015/lib/services/http/address/address.service.js +39 -0
- package/esm2015/lib/services/http/bank/bank-account/bank-account.service.js +118 -0
- package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +52 -0
- package/esm2015/lib/services/http/bank/bank-transaction/bank-transaction.service.js +89 -0
- package/esm2015/lib/services/http/bank/bank.service.js +24 -0
- package/esm2015/lib/services/http/bank/basiq/basiq.service.js +94 -0
- package/esm2015/lib/services/http/chart-accounts/chart-accounts-depreciations/chart-accounts-depreciations.service.js +38 -0
- package/esm2015/lib/services/http/chart-accounts/chart-accounts.service.js +89 -0
- package/esm2015/lib/services/http/chat/chat.service.js +77 -0
- package/esm2015/lib/services/http/chat/message/message.service.js +65 -0
- package/esm2015/lib/services/http/chat/message-document/message-document.service.js +118 -0
- package/esm2015/lib/services/{depreciation/capital-project.service.js → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.js} +7 -7
- package/esm2015/lib/services/http/depreciation/depreciation.service.js +146 -0
- package/esm2015/lib/services/http/document/document-folder/document-folder.service.js +84 -0
- package/esm2015/lib/services/{client → http/firm/client-invite}/client-invite.service.js +7 -7
- package/esm2015/lib/services/http/firm/client-movement/client-movement.service.js +98 -0
- package/esm2015/lib/services/http/firm/employee/employee.service.js +39 -0
- package/esm2015/lib/services/http/firm/employee-invite/employee-invite.service.js +53 -0
- package/esm2015/lib/services/http/firm/firm.service.js +79 -0
- package/esm2015/lib/services/http/firm/portfolio-report/client-portfolio-report.service.js +37 -0
- package/esm2015/lib/services/http/income-source/income-source-forecast/income-source-forecast.service.js +90 -0
- package/esm2015/lib/services/http/income-source/income-source.service.js +109 -0
- package/esm2015/lib/services/http/income-source/salary-forecast/salary-forecast.service.js +90 -0
- package/esm2015/lib/services/http/income-source/sole-forecast/sole-forecast.service.js +87 -0
- package/esm2015/lib/services/http/loan/borrowing-expense/borrowing-expense.service.js +73 -0
- package/esm2015/lib/services/http/loan/loan.service.js +145 -0
- package/esm2015/lib/services/http/property/property-category/property-category.service.js +23 -0
- package/esm2015/lib/services/http/property/property-category-movement/property-category-movement.service.js +47 -0
- package/esm2015/lib/services/http/property/property-document/property-document.service.js +70 -0
- package/esm2015/lib/services/http/property/property-sale/property-sale.service.js +20 -0
- package/esm2015/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.js +21 -0
- package/esm2015/lib/services/http/property/property-share/property-share.service.js +115 -0
- package/esm2015/lib/services/http/property/property.service.js +126 -0
- package/esm2015/lib/services/http/rest/rest.service.js +190 -0
- package/esm2015/lib/services/http/service-notification/service-notification.service.js +65 -0
- package/esm2015/lib/services/http/subscription/subscription.service.js +157 -0
- package/esm2015/lib/services/http/tax-review/tax-review-history/tax-review-history.service.js +41 -0
- package/esm2015/lib/services/http/tax-review/tax-review.service.js +103 -0
- package/esm2015/lib/services/http/tax-summary/tax-summary.service.js +71 -0
- package/esm2015/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.js +85 -0
- package/esm2015/lib/services/http/transaction/transaction.service.js +319 -0
- package/esm2015/lib/services/http/user/occupation/occupation.service.js +45 -0
- package/esm2015/lib/services/http/user/user-event-setting/user-event-setting.service.js +59 -0
- package/esm2015/lib/services/http/user/user-event-type/user-event-type.service.js +29 -0
- package/esm2015/lib/services/http/user/user.service.js +124 -0
- package/esm2015/lib/services/http/vehicle/vehicle.service.js +237 -0
- package/esm2015/lib/services/property/equity-position-chart/equity-position-chart.service.js +45 -0
- package/esm2015/public-api.js +51 -51
- package/fesm2015/taxtank-core.js +67 -62
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/collections/collection.d.ts +1 -1
- package/lib/collections/{tax-return-category-item.collection.d.ts → tax-summary/report-item.collection.d.ts} +5 -5
- package/lib/models/property/property.d.ts +1 -0
- package/lib/models/tax-summary/{tax-return-category-item-details.d.ts → report-item-details.d.ts} +2 -2
- package/lib/models/tax-summary/{tax-return-category-item.d.ts → report-item.d.ts} +4 -4
- package/lib/models/tax-summary/tax-summary-section.d.ts +2 -2
- package/lib/services/{address → http/address}/address.service.d.ts +1 -1
- package/lib/services/{bank → http/bank/bank-account}/bank-account.service.d.ts +5 -5
- package/lib/services/{bank → http/bank/bank-connection}/bank-connection.service.d.ts +5 -5
- package/lib/services/{bank → http/bank/bank-transaction}/bank-transaction.service.d.ts +5 -5
- package/lib/services/{bank → http/bank}/bank.service.d.ts +4 -4
- package/lib/services/{bank → http/bank/basiq}/basiq.service.d.ts +7 -7
- package/lib/services/{chart-accounts → http/chart-accounts/chart-accounts-depreciations}/chart-accounts-depreciations.service.d.ts +4 -4
- package/lib/services/{chart-accounts → http/chart-accounts}/chart-accounts.service.d.ts +3 -3
- package/lib/services/{chat → http/chat}/chat.service.d.ts +7 -7
- package/lib/services/{chat → http/chat/message}/message.service.d.ts +7 -7
- package/lib/services/{chat → http/chat/message-document}/message-document.service.d.ts +3 -3
- package/lib/services/{depreciation/capital-project.service.d.ts → http/depreciation/depreciation-capital-project/depreciation-capital-project.service.d.ts} +4 -4
- package/lib/services/{depreciation → http/depreciation}/depreciation.service.d.ts +5 -5
- package/lib/services/{document → http/document/document-folder}/document-folder.service.d.ts +6 -6
- package/lib/services/{client → http/firm/client-invite}/client-invite.service.d.ts +4 -4
- package/lib/services/{client → http/firm/client-movement}/client-movement.service.d.ts +7 -7
- package/lib/services/{employee → http/firm/employee}/employee.service.d.ts +4 -4
- package/lib/services/{employee → http/firm/employee-invite}/employee-invite.service.d.ts +4 -4
- package/lib/services/{firm → http/firm}/firm.service.d.ts +2 -2
- package/lib/services/{client → http/firm/portfolio-report}/client-portfolio-report.service.d.ts +1 -1
- package/lib/services/{income-source → http/income-source/income-source-forecast}/income-source-forecast.service.d.ts +5 -5
- package/lib/services/{income-source → http/income-source}/income-source.service.d.ts +8 -8
- package/lib/services/{income-source → http/income-source/salary-forecast}/salary-forecast.service.d.ts +6 -6
- package/lib/services/{income-source → http/income-source/sole-forecast}/sole-forecast.service.d.ts +5 -5
- package/lib/services/{borrowing-expense → http/loan/borrowing-expense}/borrowing-expense.service.d.ts +2 -2
- package/lib/services/{loan → http/loan}/loan.service.d.ts +6 -6
- package/lib/services/{property → http/property}/property-category/property-category.service.d.ts +4 -4
- package/lib/services/{property → http/property/property-category-movement}/property-category-movement.service.d.ts +4 -4
- package/lib/services/{property → http/property}/property-document/property-document.service.d.ts +5 -5
- package/lib/services/http/property/property-sale/property-sale.service.d.ts +10 -0
- package/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.d.ts +11 -0
- package/lib/services/{property → http/property}/property-share/property-share.service.d.ts +5 -5
- package/lib/services/{property → http/property}/property.service.d.ts +5 -5
- package/lib/services/{base-rest.service.d.ts → http/rest/rest.service.d.ts} +4 -4
- package/lib/services/http/service-notification/service-notification.service.d.ts +31 -0
- package/lib/services/{subscription → http/subscription}/subscription.service.d.ts +6 -6
- package/lib/services/{tax-review → http/tax-review/tax-review-history}/tax-review-history.service.d.ts +5 -5
- package/lib/services/{tax-review → http/tax-review}/tax-review.service.d.ts +6 -6
- package/lib/services/{tax-summary → http/tax-summary}/tax-summary.service.d.ts +2 -2
- package/lib/services/{transaction → http/transaction/transaction-allocation}/transaction-allocation.service.d.ts +6 -6
- package/lib/services/{transaction → http/transaction}/transaction.service.d.ts +7 -7
- package/lib/services/{user → http/user/occupation}/occupation.service.d.ts +1 -1
- package/lib/services/{user-event → http/user/user-event-setting}/user-event-setting.service.d.ts +5 -5
- package/lib/services/{user-event → http/user/user-event-type}/user-event-type.service.d.ts +5 -5
- package/lib/services/{user → http/user}/user.service.d.ts +3 -3
- package/lib/services/{work/work-tank.service.d.ts → http/vehicle/vehicle.service.d.ts} +9 -8
- package/lib/services/property/{equity-position-chart.service.d.ts → equity-position-chart/equity-position-chart.service.d.ts} +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +50 -50
- package/esm2015/lib/collections/tax-return-category-item.collection.js +0 -141
- package/esm2015/lib/models/tax-summary/tax-return-category-item-details.js +0 -9
- package/esm2015/lib/models/tax-summary/tax-return-category-item.js +0 -15
- package/esm2015/lib/services/address/address.service.js +0 -39
- package/esm2015/lib/services/bank/bank-account.service.js +0 -118
- package/esm2015/lib/services/bank/bank-connection.service.js +0 -52
- package/esm2015/lib/services/bank/bank-transaction.service.js +0 -89
- package/esm2015/lib/services/bank/bank.service.js +0 -24
- package/esm2015/lib/services/bank/basiq.service.js +0 -94
- package/esm2015/lib/services/base-rest.service.js +0 -190
- package/esm2015/lib/services/borrowing-expense/borrowing-expense.service.js +0 -73
- package/esm2015/lib/services/chart-accounts/chart-accounts-depreciations.service.js +0 -38
- package/esm2015/lib/services/chart-accounts/chart-accounts.service.js +0 -89
- package/esm2015/lib/services/chat/chat.service.js +0 -77
- package/esm2015/lib/services/chat/message-document.service.js +0 -118
- package/esm2015/lib/services/chat/message.service.js +0 -65
- package/esm2015/lib/services/client/client-movement.service.js +0 -98
- package/esm2015/lib/services/client/client-portfolio-report.service.js +0 -37
- package/esm2015/lib/services/depreciation/depreciation.service.js +0 -146
- package/esm2015/lib/services/document/document-folder.service.js +0 -84
- package/esm2015/lib/services/employee/employee-invite.service.js +0 -53
- package/esm2015/lib/services/employee/employee.service.js +0 -39
- package/esm2015/lib/services/firm/firm.service.js +0 -79
- package/esm2015/lib/services/income-source/income-source-forecast.service.js +0 -90
- package/esm2015/lib/services/income-source/income-source.service.js +0 -109
- package/esm2015/lib/services/income-source/salary-forecast.service.js +0 -90
- package/esm2015/lib/services/income-source/sole-forecast.service.js +0 -87
- package/esm2015/lib/services/loan/loan.service.js +0 -145
- package/esm2015/lib/services/notification/notification.service.js +0 -65
- package/esm2015/lib/services/property/equity-position-chart.service.js +0 -45
- package/esm2015/lib/services/property/property-category/property-category.service.js +0 -23
- package/esm2015/lib/services/property/property-category-movement.service.js +0 -47
- package/esm2015/lib/services/property/property-document/property-document.service.js +0 -70
- package/esm2015/lib/services/property/property-sale/property-sale.service.js +0 -20
- package/esm2015/lib/services/property/property-sale/tax-exemption/tax-exemption.service.js +0 -21
- package/esm2015/lib/services/property/property-share/property-share.service.js +0 -115
- package/esm2015/lib/services/property/property.service.js +0 -126
- package/esm2015/lib/services/subscription/subscription.service.js +0 -157
- package/esm2015/lib/services/tax-review/tax-review-history.service.js +0 -41
- package/esm2015/lib/services/tax-review/tax-review.service.js +0 -103
- package/esm2015/lib/services/tax-summary/tax-summary.service.js +0 -71
- package/esm2015/lib/services/transaction/transaction-allocation.service.js +0 -85
- package/esm2015/lib/services/transaction/transaction.service.js +0 -319
- package/esm2015/lib/services/user/occupation.service.js +0 -45
- package/esm2015/lib/services/user/user.service.js +0 -124
- package/esm2015/lib/services/user-event/user-event-setting.service.js +0 -59
- package/esm2015/lib/services/user-event/user-event-type.service.js +0 -29
- package/esm2015/lib/services/work/work-tank.service.js +0 -236
- package/lib/services/notification/notification.service.d.ts +0 -31
- package/lib/services/property/property-sale/property-sale.service.d.ts +0 -10
- package/lib/services/property/property-sale/tax-exemption/tax-exemption.service.d.ts +0 -11
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { replace } from '../../../functions/array';
|
|
4
|
+
import { RestService } from '../rest/rest.service';
|
|
5
|
+
import { plainToClass } from 'class-transformer';
|
|
6
|
+
import { Loan } from '../../../models/loan/loan';
|
|
7
|
+
import { AppEventTypeEnum } from '../../../models/event/app-event-type.enum';
|
|
8
|
+
import { AppEvent } from '../../../models/event/app-event';
|
|
9
|
+
import { LoanPayout } from '../../../models/loan/loan-payout';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/common/http";
|
|
12
|
+
import * as i2 from "../../event/event-dispatcher.service";
|
|
13
|
+
/**
|
|
14
|
+
* Service that handling loans logic
|
|
15
|
+
*/
|
|
16
|
+
export class LoanService extends RestService {
|
|
17
|
+
constructor(http, eventDispatcherService, environment) {
|
|
18
|
+
super(http, eventDispatcherService, environment);
|
|
19
|
+
this.http = http;
|
|
20
|
+
this.eventDispatcherService = eventDispatcherService;
|
|
21
|
+
this.environment = environment;
|
|
22
|
+
this.url = 'bank-accounts/loans';
|
|
23
|
+
this.modelClass = Loan;
|
|
24
|
+
this.listenEvents();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Listen to Loans events
|
|
28
|
+
*/
|
|
29
|
+
listenEvents() {
|
|
30
|
+
this.listenToAddedLoans();
|
|
31
|
+
this.listenToUpdatedBankAccounts();
|
|
32
|
+
}
|
|
33
|
+
listenToAddedLoans() {
|
|
34
|
+
this.eventDispatcherService.on(AppEventTypeEnum.BANK_ACCOUNT_CREATED)
|
|
35
|
+
.subscribe((bankAccounts) => {
|
|
36
|
+
// fetch loans when loan bank account created
|
|
37
|
+
if (bankAccounts.find(ba => !!ba.loan)) {
|
|
38
|
+
this.resetCache();
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
listenToUpdatedBankAccounts() {
|
|
43
|
+
this.eventDispatcherService.on(AppEventTypeEnum.BANK_ACCOUNT_UPDATED)
|
|
44
|
+
.subscribe((updatedBankAccount) => {
|
|
45
|
+
if (!!updatedBankAccount.loan) {
|
|
46
|
+
this.resetCache();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create Loan
|
|
52
|
+
*/
|
|
53
|
+
add(model) {
|
|
54
|
+
return this.addBatch([model])
|
|
55
|
+
.pipe(map((newLoan) => {
|
|
56
|
+
return newLoan[0];
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Updated loan
|
|
61
|
+
* @param loan
|
|
62
|
+
*/
|
|
63
|
+
update(loan) {
|
|
64
|
+
return this.http.put(`${this.environment.apiV2}/${this.url}/${loan.id}`, loan)
|
|
65
|
+
.pipe(map((updatedLoanBase) => {
|
|
66
|
+
const updatedLoan = plainToClass(Loan, updatedLoanBase);
|
|
67
|
+
// if loan type is NOT vehicle - fire EventDispatcher event
|
|
68
|
+
if (!updatedLoan.isVehicle()) {
|
|
69
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.LOAN_UPDATED, null));
|
|
70
|
+
}
|
|
71
|
+
replace(this.cache, updatedLoan);
|
|
72
|
+
this.updateCache();
|
|
73
|
+
return updatedLoan;
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get list of vehicle loans
|
|
78
|
+
*/
|
|
79
|
+
getVehicleLoans() {
|
|
80
|
+
return this.get()
|
|
81
|
+
.pipe(map((loans) => {
|
|
82
|
+
return loans.filter((loan) => loan.isVehicle());
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Calculate loan payments
|
|
87
|
+
* @param loan
|
|
88
|
+
*/
|
|
89
|
+
calculateLoanPayments(loan) {
|
|
90
|
+
return this.http.post(`${this.environment.apiV2}/${this.url}/calculation`, loan).pipe(map((response) => {
|
|
91
|
+
return plainToClass(Loan, response);
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Add new loan payout
|
|
96
|
+
* @param loan
|
|
97
|
+
* @param paidOutLoan
|
|
98
|
+
*/
|
|
99
|
+
addPayoutLoan(loan, paidOutLoan) {
|
|
100
|
+
return this.http.post(`${this.environment.apiV2}/loans/${loan.id}/payout`, paidOutLoan).pipe(map((response) => {
|
|
101
|
+
loan.payout = plainToClass(LoanPayout, response);
|
|
102
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.LOAN_PAYOUT_UPDATED, null));
|
|
103
|
+
// reset cache to fetch loans with updated data
|
|
104
|
+
this.resetCache();
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Delete loan payout
|
|
109
|
+
* @param loan
|
|
110
|
+
* @param payout
|
|
111
|
+
*/
|
|
112
|
+
deletePayoutLoan(loan, payout) {
|
|
113
|
+
return this.http.delete(`${this.environment.apiV2}/loans/${loan.id}/payout/${payout.id}`).pipe(map(() => {
|
|
114
|
+
loan.payout = null;
|
|
115
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.LOAN_PAYOUT_UPDATED, null));
|
|
116
|
+
// reset cache to fetch loans with updated data
|
|
117
|
+
this.resetCache();
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Update loan payout
|
|
122
|
+
* @param loan
|
|
123
|
+
* @param paidOutLoan
|
|
124
|
+
*/
|
|
125
|
+
updatePayoutLoan(loan, paidOutLoan) {
|
|
126
|
+
return this.http.put(`${this.environment.apiV2}/loans/${loan.id}/payout/${paidOutLoan.id}`, paidOutLoan).pipe(map((response) => {
|
|
127
|
+
loan.payout = plainToClass(LoanPayout, response);
|
|
128
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.LOAN_PAYOUT_UPDATED, null));
|
|
129
|
+
// reset cache to fetch loans with updated data
|
|
130
|
+
this.resetCache();
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
LoanService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: LoanService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
135
|
+
LoanService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: LoanService, providedIn: 'root' });
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: LoanService, decorators: [{
|
|
137
|
+
type: Injectable,
|
|
138
|
+
args: [{
|
|
139
|
+
providedIn: 'root'
|
|
140
|
+
}]
|
|
141
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
142
|
+
type: Inject,
|
|
143
|
+
args: ['environment']
|
|
144
|
+
}] }]; } });
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvbG9hbi9sb2FuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBRTlEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUEyQjtJQUkxRCxZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQjtRQUVqRCxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBSnZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQU5uRCxRQUFHLEdBQVcscUJBQXFCLENBQUM7UUFDcEMsZUFBVSxHQUFnQixJQUFJLENBQUM7UUFRN0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FF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T0FJRztJQUNILGdCQUFnQixDQUFDLElBQVUsRUFBRSxXQUF1QjtRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLFVBQVUsSUFBSSxDQUFDLEVBQUUsV0FBVyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUMzRyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQy9GLCtDQUErQztZQUMvQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7O3lHQS9JVSxXQUFXLGtGQU9aLGFBQWE7NkdBUFosV0FBVyxjQUZWLE1BQU07NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVFJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9hbiBhcyBMb2FuQmFzZSB9IGZyb20gJy4uLy4uLy4uL2RiL01vZGVscy9sb2FuJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHJlcGxhY2UgfSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMvYXJyYXknO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzdC9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgTG9hbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9sb2FuL2xvYW4nO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQmFua0FjY291bnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFuay9iYW5rLWFjY291bnQnO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IExvYW5QYXlvdXQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbG9hbi9sb2FuLXBheW91dCc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IGhhbmRsaW5nIGxvYW5zIGxvZ2ljXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvYW5TZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8TG9hbkJhc2UsIExvYW4+IHtcbiAgdXJsOiBzdHJpbmcgPSAnYmFuay1hY2NvdW50cy9sb2Fucyc7XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBMb2FuID0gTG9hbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBMb2FucyBldmVudHNcbiAgICovXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlblRvQWRkZWRMb2FucygpO1xuICAgIHRoaXMubGlzdGVuVG9VcGRhdGVkQmFua0FjY291bnRzKCk7XG4gIH1cblxuICBsaXN0ZW5Ub0FkZGVkTG9hbnMoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uQkFOS19BQ0NPVU5UX0NSRUFURUQpXG4gICAgICAuc3Vic2NyaWJlKChiYW5rQWNjb3VudHM6IEJhbmtBY2NvdW50W10pID0+IHtcbiAgICAgICAgLy8gZmV0Y2ggbG9hbnMgd2hlbiBsb2FuIGJhbmsgYWNjb3VudCBjcmVhdGVkXG4gICAgICAgIGlmIChiYW5rQWNjb3VudHMuZmluZChiYSA9PiAhIWJhLmxvYW4pKSB7XG4gICAgICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbGlzdGVuVG9VcGRhdGVkQmFua0FjY291bnRzKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLkJBTktfQUNDT1VOVF9VUERBVEVEKVxuICAgICAgLnN1YnNjcmliZSgodXBkYXRlZEJhbmtBY2NvdW50OiBCYW5rQWNjb3VudCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoISF1cGRhdGVkQmFua0FjY291bnQubG9hbikge1xuICAgICAgICAgIHRoaXMucmVzZXRDYWNoZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgTG9hblxuICAgKi9cbiAgYWRkKG1vZGVsOiBMb2FuKTogT2JzZXJ2YWJsZTxMb2FuPiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQmF0Y2goW21vZGVsXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKG5ld0xvYW46IExvYW5bXSk6IExvYW4gPT4ge1xuICAgICAgICAgIHJldHVybiBuZXdMb2FuWzBdO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVkIGxvYW5cbiAgICogQHBhcmFtIGxvYW5cbiAgICovXG4gIHVwZGF0ZShsb2FuOiBMb2FuKTogT2JzZXJ2YWJsZTxMb2FuPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0vJHtsb2FuLmlkfWAsIGxvYW4pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh1cGRhdGVkTG9hbkJhc2U6IExvYW5CYXNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZExvYW46IExvYW4gPSBwbGFpblRvQ2xhc3MoTG9hbiwgdXBkYXRlZExvYW5CYXNlKTtcbiAgICAgICAgICAvLyBpZiBsb2FuIHR5cGUgaXMgTk9UIHZlaGljbGUgLSBmaXJlIEV2ZW50RGlzcGF0Y2hlciBldmVudFxuICAgICAgICAgIGlmICghdXBkYXRlZExvYW4uaXNWZWhpY2xlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5MT0FOX1VQREFURUQsIG51bGwpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXBsYWNlKHRoaXMuY2FjaGUsIHVwZGF0ZWRMb2FuKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRMb2FuO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiB2ZWhpY2xlIGxvYW5zXG4gICAqL1xuICBnZXRWZWhpY2xlTG9hbnMoKTogT2JzZXJ2YWJsZTxMb2FuW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobG9hbnM6IExvYW5bXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBsb2Fucy5maWx0ZXIoKGxvYW46IExvYW4pID0+IGxvYW4uaXNWZWhpY2xlKCkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgbG9hbiBwYXltZW50c1xuICAgKiBAcGFyYW0gbG9hblxuICAgKi9cbiAgY2FsY3VsYXRlTG9hblBheW1lbnRzKGxvYW46IExvYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS9jYWxjdWxhdGlvbmAsIGxvYW4pLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHBsYWluVG9DbGFzcyhMb2FuLCByZXNwb25zZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG5ldyBsb2FuIHBheW91dFxuICAgKiBAcGFyYW0gbG9hblxuICAgKiBAcGFyYW0gcGFpZE91dExvYW5cbiAgICovXG4gIGFkZFBheW91dExvYW4obG9hbjogTG9hbiwgcGFpZE91dExvYW46IExvYW5QYXlvdXQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9sb2Fucy8ke2xvYW4uaWR9L3BheW91dGAsIHBhaWRPdXRMb2FuKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgbG9hbi5wYXlvdXQgPSBwbGFpblRvQ2xhc3MoTG9hblBheW91dCwgcmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5MT0FOX1BBWU9VVF9VUERBVEVELCBudWxsKSk7XG4gICAgICAgICAgLy8gcmVzZXQgY2FjaGUgdG8gZmV0Y2ggbG9hbnMgd2l0aCB1cGRhdGVkIGRhdGFcbiAgICAgICAgICB0aGlzLnJlc2V0Q2FjaGUoKTtcbiAgICAgICAgfVxuICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGxvYW4gcGF5b3V0XG4gICAqIEBwYXJhbSBsb2FuXG4gICAqIEBwYXJhbSBwYXlvdXRcbiAgICovXG4gIGRlbGV0ZVBheW91dExvYW4obG9hbjogTG9hbiwgcGF5b3V0OiBMb2FuUGF5b3V0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9sb2Fucy8ke2xvYW4uaWR9L3BheW91dC8ke3BheW91dC5pZH1gKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICBsb2FuLnBheW91dCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLkxPQU5fUEFZT1VUX1VQREFURUQsIG51bGwpKTtcbiAgICAgICAgICAvLyByZXNldCBjYWNoZSB0byBmZXRjaCBsb2FucyB3aXRoIHVwZGF0ZWQgZGF0YVxuICAgICAgICAgIHRoaXMucmVzZXRDYWNoZSgpO1xuICAgICAgICB9XG4gICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbG9hbiBwYXlvdXRcbiAgICogQHBhcmFtIGxvYW5cbiAgICogQHBhcmFtIHBhaWRPdXRMb2FuXG4gICAqL1xuICB1cGRhdGVQYXlvdXRMb2FuKGxvYW46IExvYW4sIHBhaWRPdXRMb2FuOiBMb2FuUGF5b3V0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9sb2Fucy8ke2xvYW4uaWR9L3BheW91dC8ke3BhaWRPdXRMb2FuLmlkfWAsIHBhaWRPdXRMb2FuKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgbG9hbi5wYXlvdXQgPSBwbGFpblRvQ2xhc3MoTG9hblBheW91dCwgcmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5MT0FOX1BBWU9VVF9VUERBVEVELCBudWxsKSk7XG4gICAgICAgICAgLy8gcmVzZXQgY2FjaGUgdG8gZmV0Y2ggbG9hbnMgd2l0aCB1cGRhdGVkIGRhdGFcbiAgICAgICAgICB0aGlzLnJlc2V0Q2FjaGUoKTtcbiAgICAgICAgfVxuICAgICAgKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { RestService } from '../../rest/rest.service';
|
|
3
|
+
import { PropertyCategory } from '../../../../models/property/property-category';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Service for work with Property Categories
|
|
7
|
+
*/
|
|
8
|
+
export class PropertyCategoryService extends RestService {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.modelClass = PropertyCategory;
|
|
12
|
+
this.url = 'properties/categories';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
PropertyCategoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyCategoryService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
16
|
+
PropertyCategoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyCategoryService, providedIn: 'root' });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyCategoryService, decorators: [{
|
|
18
|
+
type: Injectable,
|
|
19
|
+
args: [{
|
|
20
|
+
providedIn: 'root'
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktY2F0ZWdvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL3Byb3BlcnR5L3Byb3BlcnR5LWNhdGVnb3J5L3Byb3BlcnR5LWNhdGVnb3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBRWpGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFdBQW1EO0lBSGhHOztRQUlFLGVBQVUsR0FBNEIsZ0JBQWdCLENBQUM7UUFDdkQsUUFBRyxHQUFXLHVCQUF1QixDQUFDO0tBQ3ZDOztxSEFIWSx1QkFBdUI7eUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9wZXJ0eUNhdGVnb3J5IGFzIFByb3BlcnR5Q2F0ZWdvcnlCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LWNhdGVnb3J5JztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvcGVydHlDYXRlZ29yeSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9wcm9wZXJ0eS9wcm9wZXJ0eS1jYXRlZ29yeSc7XG5cbi8qKlxuICogU2VydmljZSBmb3Igd29yayB3aXRoIFByb3BlcnR5IENhdGVnb3JpZXNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydHlDYXRlZ29yeVNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxQcm9wZXJ0eUNhdGVnb3J5QmFzZSwgUHJvcGVydHlDYXRlZ29yeT57XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBQcm9wZXJ0eUNhdGVnb3J5ID0gUHJvcGVydHlDYXRlZ29yeTtcbiAgdXJsOiBzdHJpbmcgPSAncHJvcGVydGllcy9jYXRlZ29yaWVzJztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { PropertyCategoryMovement } from '../../../../models/property/property-category-movement';
|
|
3
|
+
import { RestService } from '../../rest/rest.service';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import { AppEvent } from '../../../../models/event/app-event';
|
|
6
|
+
import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class PropertyCategoryMovementService extends RestService {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.modelClass = PropertyCategoryMovement;
|
|
12
|
+
this.url = 'properties/category-movements';
|
|
13
|
+
}
|
|
14
|
+
add(model) {
|
|
15
|
+
return super.add(model).pipe(map((newMovement) => {
|
|
16
|
+
// @TODO Alex: we need to teach restService to dispatch events + limit list of methods (not all services have all 4 or even more considering batch requests) + collections
|
|
17
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.PROPERTY_MOVEMENT_CREATED, null));
|
|
18
|
+
return newMovement;
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
update(model) {
|
|
22
|
+
return super.update(model).pipe(map((updatedMovement) => {
|
|
23
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.PROPERTY_MOVEMENT_CREATED, null));
|
|
24
|
+
return updatedMovement;
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
delete(model) {
|
|
28
|
+
return super.delete(model).pipe(map(() => {
|
|
29
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.PROPERTY_MOVEMENT_CREATED, null));
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
// @TODO Alex: Move to collection
|
|
33
|
+
getByPropertyId(id) {
|
|
34
|
+
return this.get().pipe(map((movements) => {
|
|
35
|
+
return movements.filter((movement) => movement.property.id === id);
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
PropertyCategoryMovementService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyCategoryMovementService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
40
|
+
PropertyCategoryMovementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyCategoryMovementService, providedIn: 'root' });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyCategoryMovementService, decorators: [{
|
|
42
|
+
type: Injectable,
|
|
43
|
+
args: [{
|
|
44
|
+
providedIn: 'root'
|
|
45
|
+
}]
|
|
46
|
+
}] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktY2F0ZWdvcnktbW92ZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL3Byb3BlcnR5L3Byb3BlcnR5LWNhdGVnb3J5LW1vdmVtZW50L3Byb3BlcnR5LWNhdGVnb3J5LW1vdmVtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUVsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFLaEYsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLFdBQW1FO0lBSHhIOztRQUlFLGVBQVUsR0FBb0Msd0JBQXdCLENBQUM7UUFDdkUsUUFBRyxHQUFXLCtCQUErQixDQUFDO0tBcUMvQztJQW5DQyxHQUFHLENBQUMsS0FBK0I7UUFDakMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDMUIsR0FBRyxDQUFDLENBQUMsV0FBcUMsRUFBNEIsRUFBRTtZQUN0RSwwS0FBMEs7WUFDMUssSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ3BHLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQStCO1FBQ3BDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxDQUFDLGVBQXlDLEVBQTRCLEVBQUU7WUFDMUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3JHLE9BQU8sZUFBZSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQStCO1FBQ3BDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxHQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsZUFBZSxDQUFDLEVBQVU7UUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUNwQixHQUFHLENBQUMsQ0FBQyxTQUFxQyxFQUE4QixFQUFFO1lBQ3hFLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQWtDLEVBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZHLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs2SEF0Q1UsK0JBQStCO2lJQUEvQiwrQkFBK0IsY0FGOUIsTUFBTTs0RkFFUCwrQkFBK0I7a0JBSDNDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvcGVydHlDYXRlZ29yeU1vdmVtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LWNhdGVnb3J5LW1vdmVtZW50JztcbmltcG9ydCB7IFByb3BlcnR5Q2F0ZWdvcnlNb3ZlbWVudCBhcyBQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LWNhdGVnb3J5LW1vdmVtZW50JztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFByb3BlcnR5Q2F0ZWdvcnlNb3ZlbWVudFNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnRCYXNlLCBQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnQ+IHtcbiAgbW9kZWxDbGFzczogdHlwZW9mIFByb3BlcnR5Q2F0ZWdvcnlNb3ZlbWVudCA9IFByb3BlcnR5Q2F0ZWdvcnlNb3ZlbWVudDtcbiAgdXJsOiBzdHJpbmcgPSAncHJvcGVydGllcy9jYXRlZ29yeS1tb3ZlbWVudHMnO1xuXG4gIGFkZChtb2RlbDogUHJvcGVydHlDYXRlZ29yeU1vdmVtZW50KTogT2JzZXJ2YWJsZTxQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnQ+IHtcbiAgICByZXR1cm4gc3VwZXIuYWRkKG1vZGVsKS5waXBlKFxuICAgICAgbWFwKChuZXdNb3ZlbWVudDogUHJvcGVydHlDYXRlZ29yeU1vdmVtZW50KTogUHJvcGVydHlDYXRlZ29yeU1vdmVtZW50ID0+IHtcbiAgICAgICAgLy8gQFRPRE8gQWxleDogd2UgbmVlZCB0byB0ZWFjaCByZXN0U2VydmljZSB0byBkaXNwYXRjaCBldmVudHMgKyBsaW1pdCBsaXN0IG9mIG1ldGhvZHMgKG5vdCBhbGwgc2VydmljZXMgaGF2ZSBhbGwgNCBvciBldmVuIG1vcmUgY29uc2lkZXJpbmcgYmF0Y2ggcmVxdWVzdHMpICsgY29sbGVjdGlvbnNcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlBST1BFUlRZX01PVkVNRU5UX0NSRUFURUQsIG51bGwpKVxuICAgICAgICByZXR1cm4gbmV3TW92ZW1lbnQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB1cGRhdGUobW9kZWw6IFByb3BlcnR5Q2F0ZWdvcnlNb3ZlbWVudCk6IE9ic2VydmFibGU8UHJvcGVydHlDYXRlZ29yeU1vdmVtZW50PiB7XG4gICAgcmV0dXJuIHN1cGVyLnVwZGF0ZShtb2RlbCkucGlwZShcbiAgICAgIG1hcCgodXBkYXRlZE1vdmVtZW50OiBQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnQpOiBQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uUFJPUEVSVFlfTU9WRU1FTlRfQ1JFQVRFRCwgbnVsbCkpO1xuICAgICAgICByZXR1cm4gdXBkYXRlZE1vdmVtZW50O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZGVsZXRlKG1vZGVsOiBQcm9wZXJ0eUNhdGVnb3J5TW92ZW1lbnQpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gc3VwZXIuZGVsZXRlKG1vZGVsKS5waXBlKFxuICAgICAgbWFwKCgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlBST1BFUlRZX01PVkVNRU5UX0NSRUFURUQsIG51bGwpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8vIEBUT0RPIEFsZXg6IE1vdmUgdG8gY29sbGVjdGlvblxuICBnZXRCeVByb3BlcnR5SWQoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8UHJvcGVydHlDYXRlZ29yeU1vdmVtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChtb3ZlbWVudHM6IFByb3BlcnR5Q2F0ZWdvcnlNb3ZlbWVudFtdKTogUHJvcGVydHlDYXRlZ29yeU1vdmVtZW50W10gPT4ge1xuICAgICAgICByZXR1cm4gbW92ZW1lbnRzLmZpbHRlcigobW92ZW1lbnQ6IFByb3BlcnR5Q2F0ZWdvcnlNb3ZlbWVudCk6IGJvb2xlYW4gPT4gbW92ZW1lbnQucHJvcGVydHkuaWQgPT09IGlkKVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { plainToClass } from 'class-transformer';
|
|
4
|
+
import { PropertyDocument } from '../../../../models/property/property-document';
|
|
5
|
+
import { RestService } from '../../rest/rest.service';
|
|
6
|
+
import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common/http";
|
|
9
|
+
import * as i2 from "../../../event/event-dispatcher.service";
|
|
10
|
+
/**
|
|
11
|
+
* Class for work with Property Documents
|
|
12
|
+
*/
|
|
13
|
+
export class PropertyDocumentService extends RestService {
|
|
14
|
+
constructor(http, eventDispatcherService, environment) {
|
|
15
|
+
super(http, eventDispatcherService, environment);
|
|
16
|
+
this.http = http;
|
|
17
|
+
this.eventDispatcherService = eventDispatcherService;
|
|
18
|
+
this.environment = environment;
|
|
19
|
+
this.modelClass = PropertyDocument;
|
|
20
|
+
this.url = 'properties/documents';
|
|
21
|
+
this.listenEvents();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Add new Property Document
|
|
25
|
+
*/
|
|
26
|
+
upload(file, propertyId) {
|
|
27
|
+
// create formData object with provided file
|
|
28
|
+
const formDataDocument = new FormData();
|
|
29
|
+
formDataDocument.append('file', file);
|
|
30
|
+
return this.http.post(`${this.environment.apiV2}/properties/${propertyId}/documents`, formDataDocument).pipe(map((documentBase) => {
|
|
31
|
+
const newDocument = plainToClass(PropertyDocument, documentBase);
|
|
32
|
+
if (this.cache) {
|
|
33
|
+
this.cache.push(newDocument);
|
|
34
|
+
this.updateCache();
|
|
35
|
+
}
|
|
36
|
+
return newDocument;
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get documents by property id
|
|
41
|
+
* @param propertyId to get desired documents
|
|
42
|
+
*/
|
|
43
|
+
getByPropertyId(propertyId) {
|
|
44
|
+
return this.get()
|
|
45
|
+
.pipe(map((documents) => {
|
|
46
|
+
return documents
|
|
47
|
+
.filter((document) => document.property.id === propertyId);
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
listenEvents() {
|
|
51
|
+
this.listenPropertyUpdateWithDocument();
|
|
52
|
+
}
|
|
53
|
+
listenPropertyUpdateWithDocument() {
|
|
54
|
+
this.eventDispatcherService.on(AppEventTypeEnum.PROPERTY_UPDATED_WITH_DOCUMENT).subscribe((property) => {
|
|
55
|
+
this.upload(property.documentFile, property.id).subscribe();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
PropertyDocumentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyDocumentService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
60
|
+
PropertyDocumentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyDocumentService, providedIn: 'root' });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyDocumentService, decorators: [{
|
|
62
|
+
type: Injectable,
|
|
63
|
+
args: [{
|
|
64
|
+
providedIn: 'root'
|
|
65
|
+
}]
|
|
66
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
67
|
+
type: Inject,
|
|
68
|
+
args: ['environment']
|
|
69
|
+
}] }]; } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZG9jdW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL3Byb3BlcnR5L3Byb3BlcnR5LWRvY3VtZW50L3Byb3BlcnR5LWRvY3VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFHaEY7O0dBRUc7QUFJSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsV0FBbUQ7SUFJN0YsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0I7UUFFakQsS0FBSyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUp2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFOcEQsZUFBVSxHQUE0QixnQkFBZ0IsQ0FBQztRQUN2RCxRQUFHLEdBQVcsc0JBQXNCLENBQUM7UUFRbEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRjs7T0FFRztJQUNILE1BQU0sQ0FBQyxJQUFVLEVBQUUsVUFBa0I7UUFDbkMsNENBQTRDO1FBQzVDLE1BQU0sZ0JBQWdCLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNsRCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssZUFBZSxVQUFVLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDMUcsR0FBRyxDQUFDLENBQUMsWUFBa0MsRUFBb0IsRUFBRTtZQUMzRCxNQUFNLFdBQVcsR0FBcUIsWUFBWSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRW5GLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BCO1lBRUQsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsVUFBa0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFO2FBQ2QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFNBQTZCLEVBQUUsRUFBRTtZQUNwQyxPQUFPLFNBQVM7aUJBQ2IsTUFBTSxDQUFDLENBQUMsUUFBMEIsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTyxnQ0FBZ0M7UUFDdEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWtCLEVBQVEsRUFBRTtZQUNySCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7cUhBekRVLHVCQUF1QixrRkFPdkIsYUFBYTt5SEFQYix1QkFBdUIsY0FGdEIsTUFBTTs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFRSyxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb3BlcnR5RG9jdW1lbnQgYXMgUHJvcGVydHlEb2N1bWVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvcHJvcGVydHkvcHJvcGVydHktZG9jdW1lbnQnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvcGVydHlEb2N1bWVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9wcm9wZXJ0eS9wcm9wZXJ0eS1kb2N1bWVudCc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9wcm9wZXJ0eS9wcm9wZXJ0eSc7XG5cbi8qKlxuICogQ2xhc3MgZm9yIHdvcmsgd2l0aCBQcm9wZXJ0eSBEb2N1bWVudHNcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydHlEb2N1bWVudFNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxQcm9wZXJ0eURvY3VtZW50QmFzZSwgUHJvcGVydHlEb2N1bWVudD4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgUHJvcGVydHlEb2N1bWVudCA9IFByb3BlcnR5RG9jdW1lbnQ7XG4gIHVybDogc3RyaW5nID0gJ3Byb3BlcnRpZXMvZG9jdW1lbnRzJztcblxuICAgY29uc3RydWN0b3IoXG4gICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueVxuICAgKSB7XG4gICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50KTtcbiAgICAgdGhpcy5saXN0ZW5FdmVudHMoKTtcbiAgIH1cblxuICAvKipcbiAgICogQWRkIG5ldyBQcm9wZXJ0eSBEb2N1bWVudFxuICAgKi9cbiAgdXBsb2FkKGZpbGU6IEZpbGUsIHByb3BlcnR5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8UHJvcGVydHlEb2N1bWVudD4ge1xuICAgIC8vIGNyZWF0ZSBmb3JtRGF0YSBvYmplY3Qgd2l0aCBwcm92aWRlZCBmaWxlXG4gICAgY29uc3QgZm9ybURhdGFEb2N1bWVudDogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YURvY3VtZW50LmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3Byb3BlcnRpZXMvJHtwcm9wZXJ0eUlkfS9kb2N1bWVudHNgLCBmb3JtRGF0YURvY3VtZW50KS5waXBlKFxuICAgICAgbWFwKChkb2N1bWVudEJhc2U6IFByb3BlcnR5RG9jdW1lbnRCYXNlKTogUHJvcGVydHlEb2N1bWVudCA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0RvY3VtZW50OiBQcm9wZXJ0eURvY3VtZW50ID0gcGxhaW5Ub0NsYXNzKFByb3BlcnR5RG9jdW1lbnQsIGRvY3VtZW50QmFzZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgICAgICB0aGlzLmNhY2hlLnB1c2gobmV3RG9jdW1lbnQpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdEb2N1bWVudDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZG9jdW1lbnRzIGJ5IHByb3BlcnR5IGlkXG4gICAqIEBwYXJhbSBwcm9wZXJ0eUlkIHRvIGdldCBkZXNpcmVkIGRvY3VtZW50c1xuICAgKi9cbiAgZ2V0QnlQcm9wZXJ0eUlkKHByb3BlcnR5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8UHJvcGVydHlEb2N1bWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGRvY3VtZW50czogUHJvcGVydHlEb2N1bWVudFtdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRvY3VtZW50c1xuICAgICAgICAgICAgLmZpbHRlcigoZG9jdW1lbnQ6IFByb3BlcnR5RG9jdW1lbnQpID0+IGRvY3VtZW50LnByb3BlcnR5LmlkID09PSBwcm9wZXJ0eUlkKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlblByb3BlcnR5VXBkYXRlV2l0aERvY3VtZW50KCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblByb3BlcnR5VXBkYXRlV2l0aERvY3VtZW50KCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLlBST1BFUlRZX1VQREFURURfV0lUSF9ET0NVTUVOVCkuc3Vic2NyaWJlKChwcm9wZXJ0eTogUHJvcGVydHkpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMudXBsb2FkKHByb3BlcnR5LmRvY3VtZW50RmlsZSwgcHJvcGVydHkuaWQpLnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { PropertySale } from '../../../../models/property/property-sale/property-sale';
|
|
3
|
+
import { RestService } from '../../rest/rest.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class PropertySaleService extends RestService {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.modelClass = PropertySale;
|
|
9
|
+
this.url = 'properties/sales';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
PropertySaleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertySaleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
13
|
+
PropertySaleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertySaleService, providedIn: 'root' });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertySaleService, decorators: [{
|
|
15
|
+
type: Injectable,
|
|
16
|
+
args: [{
|
|
17
|
+
providedIn: 'root'
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktc2FsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvcHJvcGVydHkvcHJvcGVydHktc2FsZS9wcm9wZXJ0eS1zYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUt0RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsV0FBMkM7SUFIcEY7O1FBSUUsZUFBVSxHQUF3QixZQUFZLENBQUM7UUFDL0MsUUFBRyxHQUFXLGtCQUFrQixDQUFDO0tBQ2xDOztpSEFIWSxtQkFBbUI7cUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9wZXJ0eVNhbGUgYXMgUHJvcGVydHlTYWxlQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy9wcm9wZXJ0eS9wcm9wZXJ0eS1zYWxlL3Byb3BlcnR5LXNhbGUnO1xuaW1wb3J0IHsgUHJvcGVydHlTYWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LXNhbGUvcHJvcGVydHktc2FsZSc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydHlTYWxlU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPFByb3BlcnR5U2FsZUJhc2UsIFByb3BlcnR5U2FsZT4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgUHJvcGVydHlTYWxlID0gUHJvcGVydHlTYWxlO1xuICB1cmw6IHN0cmluZyA9ICdwcm9wZXJ0aWVzL3NhbGVzJztcbn1cbiJdfQ==
|
package/esm2015/lib/services/http/property/property-sale/tax-exemption/tax-exemption.service.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { RestService } from '../../../rest/rest.service';
|
|
3
|
+
import { TaxExemption } from '../../../../../models/property/property-sale/tax-exemption';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class TaxExemptionService extends RestService {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.modelClass = TaxExemption;
|
|
9
|
+
this.url = 'tax-exemptions';
|
|
10
|
+
this.isHydra = true;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
TaxExemptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TaxExemptionService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
14
|
+
TaxExemptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TaxExemptionService, providedIn: 'root' });
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TaxExemptionService, decorators: [{
|
|
16
|
+
type: Injectable,
|
|
17
|
+
args: [{
|
|
18
|
+
providedIn: 'root'
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWV4ZW1wdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvcHJvcGVydHkvcHJvcGVydHktc2FsZS90YXgtZXhlbXB0aW9uL3RheC1leGVtcHRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNERBQTRELENBQUM7O0FBSzFGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUEyQztJQUhwRjs7UUFJRSxlQUFVLEdBQXdCLFlBQVksQ0FBQztRQUMvQyxRQUFHLEdBQVcsZ0JBQWdCLENBQUM7UUFDL0IsWUFBTyxHQUFZLElBQUksQ0FBQztLQUN6Qjs7aUhBSlksbUJBQW1CO3FIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBUYXhFeGVtcHRpb24gYXMgQmFzZVRheEV4ZW1wdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RiL01vZGVscy9wcm9wZXJ0eS9wcm9wZXJ0eS1zYWxlL3RheC1leGVtcHRpb24nO1xuaW1wb3J0IHsgVGF4RXhlbXB0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LXNhbGUvdGF4LWV4ZW1wdGlvbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRheEV4ZW1wdGlvblNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxCYXNlVGF4RXhlbXB0aW9uLCBUYXhFeGVtcHRpb24+IHtcbiAgbW9kZWxDbGFzczogdHlwZW9mIFRheEV4ZW1wdGlvbiA9IFRheEV4ZW1wdGlvbjtcbiAgdXJsOiBzdHJpbmcgPSAndGF4LWV4ZW1wdGlvbnMnO1xuICBpc0h5ZHJhOiBib29sZWFuID0gdHJ1ZTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { replace } from '../../../../functions/array';
|
|
4
|
+
import { plainToClass } from 'class-transformer';
|
|
5
|
+
import { PropertyShare } from '../../../../models/property/property-share';
|
|
6
|
+
import { RestService } from '../../rest/rest.service';
|
|
7
|
+
import { AppEvent } from '../../../../models/event/app-event';
|
|
8
|
+
import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common/http";
|
|
11
|
+
import * as i2 from "../../../event/event-dispatcher.service";
|
|
12
|
+
// @TODO check and improve logic during refactoring
|
|
13
|
+
export class PropertyShareService extends RestService {
|
|
14
|
+
constructor(http, eventDispatcherService, environment) {
|
|
15
|
+
super(http, eventDispatcherService, environment);
|
|
16
|
+
this.http = http;
|
|
17
|
+
this.eventDispatcherService = eventDispatcherService;
|
|
18
|
+
this.environment = environment;
|
|
19
|
+
// api url parameter for properties shares
|
|
20
|
+
this.url = 'properties/shares';
|
|
21
|
+
this.modelClass = PropertyShare;
|
|
22
|
+
this.listenEvents();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Listen to Event Dispatcher events
|
|
26
|
+
*/
|
|
27
|
+
listenEvents() {
|
|
28
|
+
this.listenUserUpdated();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Updated loan
|
|
32
|
+
*/
|
|
33
|
+
update(propertyShare) {
|
|
34
|
+
return this.http.put(`${this.environment.apiV2}/${this.url}/${propertyShare.id}`, propertyShare)
|
|
35
|
+
.pipe(map((updatedPropertyShareBase) => {
|
|
36
|
+
const updatedPropertyShare = plainToClass(PropertyShare, updatedPropertyShareBase);
|
|
37
|
+
// if loan type is NOT vehicle - fire EventDispatcher event
|
|
38
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.PROPERTY_SHARE_UPDATED, null));
|
|
39
|
+
replace(this.cache, updatedPropertyShare);
|
|
40
|
+
this.updateCache();
|
|
41
|
+
return updatedPropertyShare;
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Re-invite property share
|
|
46
|
+
* @param share user to share property
|
|
47
|
+
*/
|
|
48
|
+
reinvite(share) {
|
|
49
|
+
return this.http.post(`${this.environment.apiV2}/${this.url}/${share.id}/reinvite`, {});
|
|
50
|
+
}
|
|
51
|
+
getIncoming() {
|
|
52
|
+
return this.get()
|
|
53
|
+
.pipe(map((propertyShares) => {
|
|
54
|
+
const propertySharesIncoming = [];
|
|
55
|
+
propertyShares.forEach((propertyShare) => {
|
|
56
|
+
var _a;
|
|
57
|
+
if (((_a = propertyShare.user) === null || _a === void 0 ? void 0 : _a.isLoggedIn()) && propertyShare.isPending() && propertyShare.property.user.id !== +localStorage.getItem('userId')) {
|
|
58
|
+
propertySharesIncoming.push(propertyShare);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return propertySharesIncoming;
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get outcoming property shares list
|
|
66
|
+
*/
|
|
67
|
+
getOutcoming() {
|
|
68
|
+
return this.get().pipe(map((propertyShares) => {
|
|
69
|
+
return this.filterOutcoming(propertyShares);
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Filter outcoming property shares
|
|
74
|
+
*/
|
|
75
|
+
filterOutcoming(propertyShares) {
|
|
76
|
+
const propertySharesOutcoming = [];
|
|
77
|
+
propertyShares.forEach((propertyShare) => {
|
|
78
|
+
var _a;
|
|
79
|
+
if (!((_a = propertyShare.user) === null || _a === void 0 ? void 0 : _a.isLoggedIn())) {
|
|
80
|
+
propertySharesOutcoming.push(propertyShare);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return propertySharesOutcoming;
|
|
84
|
+
}
|
|
85
|
+
getByPropertyId(propertyId) {
|
|
86
|
+
return this.get()
|
|
87
|
+
.pipe(map((propertyShares) => {
|
|
88
|
+
return propertyShares.filter((propertyShare) => propertyShare.property.id === propertyId);
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Listen to User updated event
|
|
93
|
+
*/
|
|
94
|
+
listenUserUpdated() {
|
|
95
|
+
this.eventDispatcherService.on(AppEventTypeEnum.USER_UPDATED)
|
|
96
|
+
.subscribe(() => {
|
|
97
|
+
this.fetch().subscribe((propertyShares) => {
|
|
98
|
+
this.cache = propertyShares;
|
|
99
|
+
this.updateCache();
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
PropertyShareService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyShareService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
105
|
+
PropertyShareService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyShareService, providedIn: 'root' });
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyShareService, decorators: [{
|
|
107
|
+
type: Injectable,
|
|
108
|
+
args: [{
|
|
109
|
+
providedIn: 'root'
|
|
110
|
+
}]
|
|
111
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
112
|
+
type: Inject,
|
|
113
|
+
args: ['environment']
|
|
114
|
+
}] }]; } });
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktc2hhcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL3Byb3BlcnR5L3Byb3BlcnR5LXNoYXJlL3Byb3BlcnR5LXNoYXJlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFFaEYsbURBQW1EO0FBSW5ELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxXQUE2QztJQUtyRixZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQjtRQUVqRCxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBSnZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQVBuRCwwQ0FBMEM7UUFDMUMsUUFBRyxHQUFXLG1CQUFtQixDQUFDO1FBQ2xDLGVBQVUsR0FBRyxhQUFhLENBQUM7UUFRekIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RC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Q3hDLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQTRCLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7YUFDMUQsU0FBUyxDQUFDLEdBQVMsRUFBRTtZQUNwQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBK0IsRUFBRSxFQUFFO2dCQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztrSEEzR1Usb0JBQW9CLGtGQVFyQixhQUFhO3NIQVJaLG9CQUFvQixjQUZuQixNQUFNOzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVNJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvcGVydHlTaGFyZSBhcyBQcm9wZXJ0eVNoYXJlQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy9wcm9wZXJ0eS9wcm9wZXJ0eS1zaGFyZSc7XG5pbXBvcnQgeyByZXBsYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnVuY3Rpb25zL2FycmF5JztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFByb3BlcnR5U2hhcmUgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcHJvcGVydHkvcHJvcGVydHktc2hhcmUnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQnO1xuaW1wb3J0IHsgQXBwRXZlbnRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQtdHlwZS5lbnVtJztcblxuLy8gQFRPRE8gY2hlY2sgYW5kIGltcHJvdmUgbG9naWMgZHVyaW5nIHJlZmFjdG9yaW5nXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eVNoYXJlU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPFByb3BlcnR5U2hhcmVCYXNlLCBQcm9wZXJ0eVNoYXJlPiB7XG4gIC8vIGFwaSB1cmwgcGFyYW1ldGVyIGZvciBwcm9wZXJ0aWVzIHNoYXJlc1xuICB1cmw6IHN0cmluZyA9ICdwcm9wZXJ0aWVzL3NoYXJlcyc7XG4gIG1vZGVsQ2xhc3MgPSBQcm9wZXJ0eVNoYXJlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnlcbiAgKSB7XG4gICAgc3VwZXIoaHR0cCwgZXZlbnREaXNwYXRjaGVyU2VydmljZSwgZW52aXJvbm1lbnQpO1xuICAgIHRoaXMubGlzdGVuRXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIEV2ZW50IERpc3BhdGNoZXIgZXZlbnRzXG4gICAqL1xuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Vc2VyVXBkYXRlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZWQgbG9hblxuICAgKi9cbiAgdXBkYXRlKHByb3BlcnR5U2hhcmU6IFByb3BlcnR5U2hhcmUpOiBPYnNlcnZhYmxlPFByb3BlcnR5U2hhcmU+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke3Byb3BlcnR5U2hhcmUuaWR9YCwgcHJvcGVydHlTaGFyZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHVwZGF0ZWRQcm9wZXJ0eVNoYXJlQmFzZTogUHJvcGVydHlTaGFyZUJhc2UpID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkUHJvcGVydHlTaGFyZTogUHJvcGVydHlTaGFyZSA9IHBsYWluVG9DbGFzcyhQcm9wZXJ0eVNoYXJlLCB1cGRhdGVkUHJvcGVydHlTaGFyZUJhc2UpO1xuICAgICAgICAgIC8vIGlmIGxvYW4gdHlwZSBpcyBOT1QgdmVoaWNsZSAtIGZpcmUgRXZlbnREaXNwYXRjaGVyIGV2ZW50XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlBST1BFUlRZX1NIQVJFX1VQREFURUQsIG51bGwpKTtcblxuICAgICAgICAgIHJlcGxhY2UodGhpcy5jYWNoZSwgdXBkYXRlZFByb3BlcnR5U2hhcmUpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlZFByb3BlcnR5U2hhcmU7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLWludml0ZSBwcm9wZXJ0eSBzaGFyZVxuICAgKiBAcGFyYW0gc2hhcmUgdXNlciB0byBzaGFyZSBwcm9wZXJ0eVxuICAgKi9cbiAgcmVpbnZpdGUoc2hhcmU6IFByb3BlcnR5U2hhcmUpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke3NoYXJlLmlkfS9yZWludml0ZWAsIHt9KTtcbiAgfVxuXG4gIGdldEluY29taW5nKCk6IE9ic2VydmFibGU8UHJvcGVydHlTaGFyZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KClcbiAgICAgIC5waXBlKG1hcCgocHJvcGVydHlTaGFyZXM6IFByb3BlcnR5U2hhcmVbXSkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVNoYXJlc0luY29taW5nOiBQcm9wZXJ0eVNoYXJlW10gPSBbXTtcblxuICAgICAgICBwcm9wZXJ0eVNoYXJlcy5mb3JFYWNoKChwcm9wZXJ0eVNoYXJlOiBQcm9wZXJ0eVNoYXJlKSA9PiB7XG4gICAgICAgICAgaWYgKHByb3BlcnR5U2hhcmUudXNlcj8uaXNMb2dnZWRJbigpICYmIHByb3BlcnR5U2hhcmUuaXNQZW5kaW5nKCkgJiYgcHJvcGVydHlTaGFyZS5wcm9wZXJ0eS51c2VyLmlkICE9PSArbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJJZCcpKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eVNoYXJlc0luY29taW5nLnB1c2gocHJvcGVydHlTaGFyZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcHJvcGVydHlTaGFyZXNJbmNvbWluZztcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb3V0Y29taW5nIHByb3BlcnR5IHNoYXJlcyBsaXN0XG4gICAqL1xuICBnZXRPdXRjb21pbmcoKTogT2JzZXJ2YWJsZTxQcm9wZXJ0eVNoYXJlW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChwcm9wZXJ0eVNoYXJlczogUHJvcGVydHlTaGFyZVtdKTogUHJvcGVydHlTaGFyZVtdID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyT3V0Y29taW5nKHByb3BlcnR5U2hhcmVzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgb3V0Y29taW5nIHByb3BlcnR5IHNoYXJlc1xuICAgKi9cbiAgZmlsdGVyT3V0Y29taW5nKHByb3BlcnR5U2hhcmVzOiBQcm9wZXJ0eVNoYXJlW10pOiBQcm9wZXJ0eVNoYXJlW10ge1xuICAgIGNvbnN0IHByb3BlcnR5U2hhcmVzT3V0Y29taW5nOiBQcm9wZXJ0eVNoYXJlW10gPSBbXTtcblxuICAgIHByb3BlcnR5U2hhcmVzLmZvckVhY2goKHByb3BlcnR5U2hhcmU6IFByb3BlcnR5U2hhcmUpID0+IHtcbiAgICAgIGlmICghcHJvcGVydHlTaGFyZS51c2VyPy5pc0xvZ2dlZEluKCkpIHtcbiAgICAgICAgcHJvcGVydHlTaGFyZXNPdXRjb21pbmcucHVzaChwcm9wZXJ0eVNoYXJlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0eVNoYXJlc091dGNvbWluZztcbiAgfVxuXG4gIGdldEJ5UHJvcGVydHlJZChwcm9wZXJ0eUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFByb3BlcnR5U2hhcmVbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChwcm9wZXJ0eVNoYXJlczogUHJvcGVydHlTaGFyZVtdKSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eVNoYXJlcy5maWx0ZXIoKHByb3BlcnR5U2hhcmU6IFByb3BlcnR5U2hhcmUpID0+IHByb3BlcnR5U2hhcmUucHJvcGVydHkuaWQgPT09IHByb3BlcnR5SWQpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBVc2VyIHVwZGF0ZWQgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVXNlclVwZGF0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uVVNFUl9VUERBVEVEKVxuICAgICAgLnN1YnNjcmliZSgoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuZmV0Y2goKS5zdWJzY3JpYmUoKHByb3BlcnR5U2hhcmVzOiBQcm9wZXJ0eVNoYXJlW10pID0+IHtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gcHJvcGVydHlTaGFyZXM7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
|