mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-12-18 11:32:25 -05:00
58 lines
2.1 KiB
JavaScript
58 lines
2.1 KiB
JavaScript
|
// Script for changing prepaid start/end dates and propagating them to users.
|
||
|
|
||
|
/*
|
||
|
* Usage
|
||
|
* ---------------
|
||
|
* In mongo shell
|
||
|
*
|
||
|
* > db.loadServerScripts();
|
||
|
* > var prepaids = getPrepaidsFor('some@email.com'); // prints basic stats for prepaids found
|
||
|
* > prepaids.models // Raw prepaid data
|
||
|
* > prepaids.setStart(2001,1,1) // Set start date
|
||
|
* > prepaids.setEnd(2100,1,1) // Set end date
|
||
|
*/
|
||
|
|
||
|
|
||
|
function getPrepaidsFor(email) {
|
||
|
var user = db.users.findOne({emailLower: email.toLowerCase()});
|
||
|
if (!user) {
|
||
|
print('User not found');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var result = {};
|
||
|
result.models = db.prepaids.find({creator: user._id}).toArray();
|
||
|
result.setStart = function(year, month, day) {
|
||
|
var startDate = new Date(Date.UTC(year, month-1, day)).toISOString();
|
||
|
print('setting to', startDate);
|
||
|
for (var i in this.models) {
|
||
|
var prepaid = this.models[i];
|
||
|
print('Prepaid update', db.prepaids.update({_id: prepaid._id}, {$set: {startDate: startDate}}));
|
||
|
print('User update', db.users.update({'coursePrepaid._id': prepaid._id}, {$set: {'coursePrepaid.startDate': startDate}}, {multi: true}));
|
||
|
}
|
||
|
};
|
||
|
result.setEnd = function(year, month, day) {
|
||
|
var endDate = new Date(Date.UTC(year, month-1, day)).toISOString();
|
||
|
print('setting to', endDate);
|
||
|
for (var i in this.models) {
|
||
|
var prepaid = this.models[i];
|
||
|
print('Prepaid update', db.prepaids.update({_id: prepaid._id}, {$set: {endDate: endDate}}));
|
||
|
print('User update', db.users.update({'coursePrepaid._id': prepaid._id}, {$set: {'coursePrepaid.endDate': endDate}}, {multi: true}));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
for (var i in result.models) {
|
||
|
var prepaid = result.models[i];
|
||
|
print('Prepaid:', prepaid.startDate, 'to', prepaid.endDate, 'with', prepaid.redeemers.length, '/', prepaid.maxRedeemers, 'uses');
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
|
||
|
db.system.js.save(
|
||
|
{
|
||
|
_id: 'getPrepaidsFor',
|
||
|
value: getPrepaidsFor
|
||
|
}
|
||
|
);
|