protected loadPageData(params : Params) {
this.loaded = false;
let clientPromise : Promise = null;
let subsPromise : Promise = null;
let cardsPromise : Promise = null;
let activeBookingsPromise : Promise> = null;
if (!this.client || this.client.id != parseInt(params['id'])) {
clientPromise = this.apiClient.getResource(ClientResource, params['id']);
if (params['id'] !== 'new') {
subsPromise = this.apiClient.getResources(ClubSubscriptionResource, {
order: 'start DESC',
extras: 'orderInfo'
}, [`clientId = ${params['id']};`])
.then(result => {
return result.items;
});
activeBookingsPromise = this.fetchClientBookings(+params['id']);
cardsPromise = this.fetchClientCards(+params['id']);
} else {
subsPromise = Promise.resolve([]);
activeBookingsPromise = Promise.resolve(null);
cardsPromise = Promise.resolve([]);
}
} else {
clientPromise = Promise.resolve(this.client);
subsPromise = Promise.resolve(this.clubSubscriptions);
activeBookingsPromise = Promise.resolve(this.activeBookings);
cardsPromise = Promise.resolve(this.cards);
}
return Promise.all, KeycardResource[]>([
clientPromise,
subsPromise,
activeBookingsPromise,
cardsPromise
])
.then(result => {
this.client = result[0];
this.editing = this.client.id <= 0;
this.client.password = 'dummy123456';
this.clubSubscriptions = result[1];
this.activeBookings = result[2];
this.cards = result[3];
// use last ending subscription's date as default card activation end date
this.cardActivatorDefaultEndDate = '';
let lastSubscriptionEndDate : Date = null;
this.clubSubscriptions.forEach(item => {
if (item.cancelled)
return;
let subscriptonDate = DateUtils.textToDate(item.end);
if (!lastSubscriptionEndDate || subscriptonDate > lastSubscriptionEndDate) {
lastSubscriptionEndDate = subscriptonDate;
}
});
if (lastSubscriptionEndDate) {
this.cardActivatorDefaultEndDate = DateUtils.dateToText(lastSubscriptionEndDate);
}
this.updateTitle();
return this.loadInvoiceReceivers();
})
.then(result => {
this.loaded = true;
return Promise.resolve(true);
})
.catch(error => {
this.updateTitle();
this.handleError(error);
});
}