@vendasta/store
Version:
Components and data for Store
84 lines (83 loc) • 3.35 kB
JavaScript
export var ActivationStatus;
(function (ActivationStatus) {
ActivationStatus[ActivationStatus["SUCCESS"] = 0] = "SUCCESS";
ActivationStatus[ActivationStatus["WARNING"] = 1] = "WARNING";
ActivationStatus[ActivationStatus["ERROR"] = 2] = "ERROR";
})(ActivationStatus || (ActivationStatus = {}));
export function buildSalesPackages(packages, products) {
if (!packages) {
return [];
}
return packages.map(function (pkg) { return buildSalesPackageFromPackage(pkg, products); });
}
function buildSalesPackageFromPackage(pkg, products) {
if (!pkg) {
return null;
}
var packageProducts = [];
if (products && pkg.products) {
var productsMap_1 = new Map();
products.forEach(function (product) { return productsMap_1.set(product.productId, product); });
pkg.products.forEach(function (productId) {
var productMatch = productsMap_1.get(productId);
if (productMatch) {
packageProducts = packageProducts.concat(productMatch);
}
});
}
var salesProducts = packageProducts.map(function (p) {
return {
productId: p.productId,
name: p.name,
tagline: p.tagline || null,
iconUrl: p.iconUrl
};
});
return {
formattedPrices: pkg.formattedPricingList.join(', '),
packageId: pkg.solution_id,
name: pkg.name,
icon: pkg.icon,
productIds: pkg.products,
products: salesProducts
};
}
export function addStatusesToSalesPackages(salesPackages, statuses) {
if (!statuses || statuses.length === 0) {
return salesPackages;
}
salesPackages.map(function (salesPackage) {
var packageStatus = ActivationStatus.SUCCESS;
salesPackage.products.forEach(function (productItem) {
var productActivationStatus = statuses.filter(function (productStatus) { return productStatus.productId === productItem.productId; });
if (productActivationStatus.length > 0) {
productItem.activationStatus = createStatusNotificationItemForProduct(productActivationStatus[0].status);
if (packageStatus < productActivationStatus[0].status) {
packageStatus = productActivationStatus[0].status;
}
}
});
salesPackage.activationStatus = createStatusNotificationItemForPackage(packageStatus);
});
return salesPackages;
}
function createStatusNotificationItemForProduct(status) {
switch (status) {
case ActivationStatus.SUCCESS:
return { icon: 'check_circle', status: status, text: 'Activated' };
case ActivationStatus.WARNING:
return { icon: 'warning', status: status, text: 'Already Activated' };
default:
return { icon: 'error', status: status, text: 'Activation Errors' };
}
}
function createStatusNotificationItemForPackage(status) {
switch (status) {
case ActivationStatus.SUCCESS:
return { icon: 'check_circle', status: status, text: 'Activated' };
case ActivationStatus.WARNING:
return { icon: 'warning', status: status, text: 'Activation Warnings' };
default:
return { icon: 'error', status: status, text: 'Activation Errors Occured' };
}
}