2016-07-21 14:31:08 -04:00
|
|
|
|
|
|
|
// Update a prepaid document, and the denormalized data on user documents
|
|
|
|
// Limits the properties allowed to be set, but does not perform validation on them. Use carefully!
|
|
|
|
|
|
|
|
// Usage
|
|
|
|
// ---------------
|
|
|
|
// In mongo shell
|
|
|
|
//
|
|
|
|
// > db.loadServerScripts();
|
|
|
|
// > updatePrepaid('<prepaid id string>', { endDate: "2017-07-01T00:00:00.000Z", maxRedeemers: 10 });
|
|
|
|
|
|
|
|
var updatePrepaid = function updatePrepaid(stringID, originalUpdate) {
|
|
|
|
try {
|
|
|
|
load('./bower_components/lodash/dist/lodash.js')
|
|
|
|
}
|
|
|
|
catch (e) {
|
|
|
|
print('Lodash could not be loaded, ensure you are in codecombat project directory.')
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
var id = ObjectId(stringID);
|
|
|
|
}
|
|
|
|
catch (e) {
|
|
|
|
print('Invalid ObjectId given:', stringID);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var prepaid = db.prepaids.findOne({_id: id});
|
|
|
|
if (!prepaid) {
|
|
|
|
print('Prepaid not found');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2016-07-21 14:33:24 -04:00
|
|
|
print('Found prepaid', JSON.stringify(_.omit(prepaid, 'redeemers'), null, ' '));
|
|
|
|
print('-- has', prepaid.redeemers.length, 'redeemers.');
|
2016-07-21 14:31:08 -04:00
|
|
|
|
|
|
|
var prepaidUpdate = _.pick(originalUpdate, 'maxRedeemers', 'startDate', 'endDate' );
|
|
|
|
if (_.isEmpty(prepaidUpdate)) {
|
2016-07-21 14:33:24 -04:00
|
|
|
print('\nSkipping prepaid update, nothing to update.')
|
2016-07-21 14:31:08 -04:00
|
|
|
}
|
|
|
|
else {
|
2016-07-21 14:33:24 -04:00
|
|
|
print('\nUpdate prepaid',
|
2016-07-21 14:31:08 -04:00
|
|
|
JSON.stringify(prepaidUpdate, null, ' '),
|
|
|
|
db.prepaids.update(
|
|
|
|
{_id: id},
|
|
|
|
{ $set: prepaidUpdate }
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
var userUpdate = _.pick(originalUpdate, 'startDate', 'endDate' );
|
|
|
|
if (_.isEmpty(userUpdate)) {
|
2016-07-21 14:33:24 -04:00
|
|
|
print('\nSkipping user update, nothing to update.')
|
2016-07-21 14:31:08 -04:00
|
|
|
}
|
|
|
|
else {
|
2016-07-21 14:33:24 -04:00
|
|
|
print('\nUpdate users',
|
2016-07-21 14:31:08 -04:00
|
|
|
JSON.stringify(userUpdate, null, ' '),
|
|
|
|
db.users.update(
|
|
|
|
{'coursePrepaid._id': id},
|
|
|
|
{$set: userUpdate},
|
|
|
|
{multi: true}
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
db.system.js.save(
|
|
|
|
{
|
|
|
|
_id: 'updatePrepaid',
|
|
|
|
value: updatePrepaid
|
|
|
|
}
|
|
|
|
);
|