in source/api/services/cart/lib/cart.js [92:183]
let getCartItemDetails = function(ticket, cart, index, cb) {
let accessValidator = new AccessValidator();
accessValidator.getUserGroups(ticket.userid, function(err, data) {
if (err) {
console.log(err);
cb({error: {message: 'No valid permission.'}}, null);
return;
}
let _results = {
Items: []
};
if (index < cart.Items.length) {
let params = {
TableName: 'data-lake-packages',
KeyConditionExpression: 'package_id = :pid',
ExpressionAttributeValues: {
':pid': cart.Items[index].package_id
}
};
docClient.query(params, function(err, resp) {
if (err) {
console.log(err);
return cb(err, null);
}
for (let i = 0; i < resp.Items.length; i++) {
// Skip if the package is deleted
if (resp.Items[i].deleted) {
continue;
}
// Skip if the user does not have access to the package
if (ticket.role.toLowerCase() != 'admin') {
let user_groups = [];
data.Groups.map(group => {user_groups.push(group.GroupName);});
if (ticket.userid != resp.Items[i].owner && _.intersection(user_groups, resp.Items[i].groups).length == 0) {
continue;
}
}
if (moment(cart.Items[index].expires) > moment.utc() ||
cart.Items[index].cart_item_status == 'pending' ||
cart.Items[index].cart_item_status == 'unable_to_process') {
_results.Items.push({
user_id: cart.Items[index].user_id,
package_id: cart.Items[index].package_id,
cart_item_status: cart.Items[index].cart_item_status,
created_at: cart.Items[index].created_at,
item_id: cart.Items[index].item_id,
status_details: cart.Items[index].status_details,
expires: cart.Items[index].expires,
url: cart.Items[index].url,
name: resp.Items[i].name,
format: cart.Items[index].format,
description: resp.Items[i].description
});
}
}
let _index = index + 1;
if (_index < cart.Items.length) {
getCartItemDetails(ticket, cart, _index, function(err, data) {
if (err) {
console.log(err);
return cb(err, null);
}
for (let i = 0; i < data.Items.length; i++) {
_results.Items.push(data.Items[i]);
}
return cb(null, _results);
});
} else {
return cb(null, _results);
}
});
} else {
return cb(null, _results);
}
});
};