import template from './price-availability.html';
export const PriceAvailabilityComponent: ng.IComponentOptions = {
bindings: {
priceAvailability: '<',
onComplete: '&',
order: '<',
},
template,
controller: class PriceAvailabilityController {
private onComplete: any;
private priceAvailability: any;
isLoading: boolean;
response: any;
order: any;
products: any;
$onInit() {
this.response = this.createResponse(this.priceAvailability);
this.products = this.getProducts(this.order.items);
}
complete() {
this.isLoading = true;
this.onComplete({ data: this.response });
}
createResponse(data: { [s: string]: unknown } | ArrayLike) {
return Object.fromEntries(
Object.entries(data).map((products) => {
const [, codes] = products;
products[1] = Object.fromEntries(
Object.entries(codes).map((code) => {
const [key, changes] = code;
const defaultActions = {
PA001: 'accepted',
PA002: 'changed',
PA003: 'removed',
};
code[1] = {
original:
changes.requestedQuantity ||
changes.originalPrice,
returned:
changes.requestedQuantity ||
changes.newPrice ||
0,
action: defaultActions[key],
};
return code;
})
);
return products;
})
);
}
getProducts(items: any[]) {
const products = {};
Object.values(items).forEach((item: any) => {
products[item.sku] = {
name: item.description,
};
});
return products;
}
},
};