Send Coins
This commit is contained in:
@@ -8,6 +8,8 @@ const tools = require('../tools/general');
|
||||
|
||||
const {ObjectID} = require('mongodb');
|
||||
|
||||
const i18n = require('i18n');
|
||||
|
||||
// Resolving error Unknown modifier: $pushAll
|
||||
mongoose.plugin(schema => {
|
||||
schema.options.usePushEach = true;
|
||||
@@ -60,6 +62,10 @@ const CircuitSchema = new Schema({
|
||||
symbol: {
|
||||
type: String,
|
||||
maxlength: 7,
|
||||
unique: true,
|
||||
},
|
||||
color: {
|
||||
type: String,
|
||||
},
|
||||
abbrev: {
|
||||
type: String,
|
||||
@@ -204,7 +210,6 @@ CircuitSchema.statics.executeQueryTable = function(idapp, params) {
|
||||
CircuitSchema.statics.getWhatToShow = function(idapp, username) {
|
||||
// FOR ME, PERMIT ALL
|
||||
return {
|
||||
Num: 1,
|
||||
circuitId: 1,
|
||||
groupnameId: 1,
|
||||
path: 1,
|
||||
@@ -217,7 +222,10 @@ CircuitSchema.statics.getWhatToShow = function(idapp, username) {
|
||||
date_created: 1,
|
||||
date_updated: 1,
|
||||
nome_valuta: 1,
|
||||
fido_scoperto_default: 1,
|
||||
qta_max_default: 1,
|
||||
symbol: 1,
|
||||
color: 1,
|
||||
abbrev: 1,
|
||||
data_costituz: 1,
|
||||
photos: 1,
|
||||
@@ -237,7 +245,6 @@ CircuitSchema.statics.removeAdminOfMyCircuit = async function(idapp, username, n
|
||||
|
||||
CircuitSchema.statics.getWhatToShow_Unknown = function(idapp, username) {
|
||||
return {
|
||||
Num: 1,
|
||||
circuitId: 1,
|
||||
groupnameId: 1,
|
||||
path: 1,
|
||||
@@ -248,7 +255,10 @@ CircuitSchema.statics.getWhatToShow_Unknown = function(idapp, username) {
|
||||
systemUserId: 1,
|
||||
founderUserId: 1,
|
||||
nome_valuta: 1,
|
||||
fido_scoperto_default: 1,
|
||||
qta_max_default: 1,
|
||||
symbol: 1,
|
||||
color: 1,
|
||||
abbrev: 1,
|
||||
data_costituz: 1,
|
||||
photos: 1,
|
||||
@@ -371,7 +381,7 @@ CircuitSchema.statics.getCircuitByName = async function(idapp, name) {
|
||||
CircuitSchema.statics.getCircuitById = async function(circuitId) {
|
||||
|
||||
const myfind = {
|
||||
circuitId
|
||||
circuitId,
|
||||
};
|
||||
|
||||
try {
|
||||
@@ -388,23 +398,100 @@ CircuitSchema.statics.deleteCircuit = async function(idapp, usernameOrig, name)
|
||||
return await Circuit.findOneAndRemove({idapp, name});
|
||||
};
|
||||
|
||||
CircuitSchema.statics.sendCoins = async function(idapp, usernameOrig, extrarec) {
|
||||
console.log('Aggiungi Monete');
|
||||
CircuitSchema.statics.getUserCircuits = async function(idapp, username) {
|
||||
|
||||
try {
|
||||
let aggr1 = [
|
||||
{
|
||||
$match: {idapp, username},
|
||||
},
|
||||
{
|
||||
$lookup: {
|
||||
from: 'circuits',
|
||||
localField: 'circuitId',
|
||||
foreignField: '_id',
|
||||
as: 'circuit',
|
||||
},
|
||||
},
|
||||
{
|
||||
'$replaceRoot': {
|
||||
'newRoot': {
|
||||
'$mergeObjects': [
|
||||
{
|
||||
'$arrayElemAt': [
|
||||
'$circuit',
|
||||
0,
|
||||
],
|
||||
},
|
||||
'$$ROOT',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
/*
|
||||
{
|
||||
$project: {
|
||||
"circuit.name": 1,
|
||||
},
|
||||
},
|
||||
|
||||
*/
|
||||
];
|
||||
|
||||
ris = await this.aggregate(aggr1);
|
||||
|
||||
return ris;
|
||||
} catch (e) {
|
||||
console.error('e', e);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
CircuitSchema.statics.sendCoins = async function(onlycheck, idapp, usernameOrig, extrarec) {
|
||||
|
||||
const {Movement} = require('../models/movement');
|
||||
const {Account} = require('../models/account');
|
||||
|
||||
let ris = {
|
||||
cansend: true,
|
||||
errormsg: '',
|
||||
};
|
||||
|
||||
try {
|
||||
const reccircuit = await Circuit.getCircuitByName(idapp, extrarec.circuitname);
|
||||
let reccircuit = null;
|
||||
if (extrarec.circuitname)
|
||||
reccircuit = await Circuit.getCircuitByName(idapp, extrarec.circuitname);
|
||||
if (extrarec.circuitId)
|
||||
reccircuit = await Circuit.getCircuitById(idapp, extrarec.circuitId);
|
||||
|
||||
if (reccircuit) {
|
||||
const myqty = extrarec.qty;
|
||||
|
||||
const accountdest = await Account.getAccountByUsernameAndCircuitId(idapp, extrarec.dest, reccircuit._id, true);
|
||||
const accountorig = await Account.getAccountByUsernameAndCircuitId(idapp, usernameOrig, reccircuit._id, true);
|
||||
const accountdest = await Account.getAccountByUsernameAndCircuitId(idapp, extrarec.dest, { circuitId: reccircuit._id }, true);
|
||||
const accountorig = await Account.getAccountByUsernameAndCircuitId(idapp, usernameOrig, { circuitId: reccircuit._id }, true);
|
||||
|
||||
// Add a Transaction !
|
||||
return await Movement.addMov(idapp, accountorig, accountdest, myqty, extrarec.causal);
|
||||
// Check if Sender has enough money
|
||||
if (accountorig.saldo - myqty < accountorig.fidoConcesso) {
|
||||
ris.cansend = false;
|
||||
ris.errormsg = i18n.__('CIRCUIT_AMOUNT_EXCEED_FIDO');
|
||||
}
|
||||
if (accountdest.saldo + myqty > accountorig.qta_maxConcessa) {
|
||||
ris.cansend = false;
|
||||
ris.errormsg = i18n.__('CIRCUIT_AMOUNT_EXCEED_QTAMAX');
|
||||
}
|
||||
|
||||
if (!onlycheck) {
|
||||
// Add a Transaction !
|
||||
ris.cansend = await Movement.addMov(idapp, accountorig, accountdest, myqty, extrarec.causal);
|
||||
|
||||
if (ris.cansend) {
|
||||
console.log('Invia Monete da', usernameOrig, extrarec.dest, extrarec.qty, extrarec.causal);
|
||||
} else {
|
||||
console.log('NON Inviate Monete da', usernameOrig, extrarec.dest, extrarec.qty, extrarec.causal);
|
||||
}
|
||||
}
|
||||
|
||||
return ris;
|
||||
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user