Merge branch 'sabrecat/panel-subscription' into release

This commit is contained in:
SabreCat
2022-09-30 14:46:10 -05:00
7 changed files with 229 additions and 7 deletions
+29
View File
@@ -273,6 +273,28 @@ api.updateHero = {
hero.balance = updateData.balance;
}
if (updateData.purchased && updateData.purchased.plan) {
if (updateData.purchased.plan.gemsBought) {
hero.purchased.plan.gemsBought = updateData.purchased.plan.gemsBought;
}
if (updateData.purchased.plan.consecutive) {
if (updateData.purchased.plan.consecutive.trinkets) {
await hero.updateHourglasses(
updateData.purchased.plan.consecutive.trinkets
- hero.purchased.plan.consecutive.trinkets,
'admin_update_hourglasses', '', 'Updated by Habitica staff',
);
hero.purchased.plan.consecutive.trinkets = updateData.purchased.plan.consecutive.trinkets;
}
if (updateData.purchased.plan.consecutive.gemCapExtra) {
hero.purchased.plan.consecutive.gemCapExtra = updateData.purchased.plan.consecutive.gemCapExtra; // eslint-disable-line max-len
}
if (updateData.purchased.plan.consecutive.count) {
hero.purchased.plan.consecutive.count = updateData.purchased.plan.consecutive.count; // eslint-disable-line max-len
}
}
}
// give them gems if they got an higher level
// tier = level in this context
let newTier = updateData.contributor && updateData.contributor.level;
@@ -331,6 +353,13 @@ api.updateHero = {
hero.apiToken = common.uuid();
}
if (updateData.resetCron) {
// Set last cron to yesterday. Quick approach so we don't need moment() for one line
const yesterday = new Date(new Date().setDate(new Date().getDate() - 1));
hero.lastCron = yesterday;
hero.auth.timestamps.loggedin = yesterday; // so admin panel doesn't gripe about mismatch
}
const savedHero = await hero.save();
const heroJSON = savedHero.toJSON();
heroJSON.secret = savedHero.getSecretData();
+1 -1
View File
@@ -5,7 +5,7 @@ import baseModel from '../libs/baseModel';
const { Schema } = mongoose;
export const currencies = ['gems', 'hourglasses'];
export const transactionTypes = ['buy_money', 'buy_gold', 'spend', 'gift_send', 'gift_receive', 'debug', 'create_challenge', 'create_bank_challenge', 'create_guild', 'change_class', 'rebirth', 'release_pets', 'release_mounts', 'reroll', 'contribution', 'subscription_perks', 'admin_update_balance'];
export const transactionTypes = ['buy_money', 'buy_gold', 'spend', 'gift_send', 'gift_receive', 'debug', 'create_challenge', 'create_bank_challenge', 'create_guild', 'change_class', 'rebirth', 'release_pets', 'release_mounts', 'reroll', 'contribution', 'subscription_perks', 'admin_update_balance', 'admin_update_hourglasses'];
export const schema = new Schema({
currency: { $type: String, enum: currencies, required: true },
+19
View File
@@ -577,3 +577,22 @@ schema.methods.updateBalance = async function updateBalance (amount,
currentAmount: this.balance,
});
};
schema.methods.updateHourglasses = async function updateHourglasses (
amount,
transactionType,
reference,
referenceText,
) {
this.purchased.plan.consecutive.trinkets += amount;
await Transaction.create({
currency: 'hourglasses',
userId: this._id,
transactionType,
amount,
reference,
referenceText,
currentAmount: this.purchased.plan.consecutive.trinkets,
});
};