mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
Add Transaction log for gem and hourglass changes (#13589)
* Log all gem transactions to database * Also store hourglass transactions * Fix tests * Display transaction history in hall of heroes for admins * add tests to new API call * hide transaction settings tab for non admins * fix(lint): remove console * fix(lint): various automatic corrections * fix(transactions): use enum expected pluralizations * fix api unit tests * fix lint * fix failing test * Fix minor inconsistencies * Log all gem transactions to database * Also store hourglass transactions * Fix tests * Display transaction history in hall of heroes for admins * add tests to new API call * hide transaction settings tab for non admins * fix(lint): remove console * fix(lint): various automatic corrections * fix(transactions): use enum expected pluralizations * fix api unit tests * fix lint * Fix minor inconsistencies Co-authored-by: Sabe Jones <sabrecat@gmail.com>
This commit is contained in:
@@ -23,6 +23,7 @@ import amazonPayments from '../../libs/payments/amazon'; // eslint-disable-line
|
||||
import stripePayments from '../../libs/payments/stripe'; // eslint-disable-line import/no-cycle
|
||||
import paypalPayments from '../../libs/payments/paypal'; // eslint-disable-line import/no-cycle
|
||||
import { model as NewsPost } from '../newsPost';
|
||||
import { model as Transaction } from '../transaction';
|
||||
|
||||
const { daysSince } = common;
|
||||
|
||||
@@ -525,3 +526,30 @@ schema.methods.getSecretData = function getSecretData () {
|
||||
|
||||
return user.secret;
|
||||
};
|
||||
|
||||
schema.methods.updateBalance = async function updateBalance (amount,
|
||||
transactionType,
|
||||
reference,
|
||||
referenceText) {
|
||||
this.balance += amount;
|
||||
|
||||
if (transactionType === 'buy_gold') {
|
||||
// Bulk these together in case the user is not using the bulk-buy feature
|
||||
const lastTransaction = await Transaction.findOne({ userId: this._id },
|
||||
null,
|
||||
{ sort: { createdAt: -1 } });
|
||||
if (lastTransaction.transactionType === transactionType) {
|
||||
lastTransaction.amount += amount;
|
||||
await lastTransaction.save();
|
||||
}
|
||||
}
|
||||
|
||||
await Transaction.create({
|
||||
currency: 'gems',
|
||||
userId: this._id,
|
||||
transactionType,
|
||||
amount,
|
||||
reference,
|
||||
referenceText,
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user