Version 1.0.1 with RIS Circuit Money Exchange !
This commit is contained in:
@@ -65,7 +65,6 @@ const CircuitSchema = new Schema({
|
||||
symbol: {
|
||||
type: String,
|
||||
maxlength: 7,
|
||||
unique: true,
|
||||
},
|
||||
color: {
|
||||
type: String,
|
||||
@@ -211,6 +210,8 @@ CircuitSchema.statics.getWhatToShow = function(idapp, username) {
|
||||
subname: 1,
|
||||
longdescr: 1,
|
||||
regulation: 1,
|
||||
totCircolante: 1,
|
||||
totTransato: 1,
|
||||
systemUserId: 1,
|
||||
createdBy: 1,
|
||||
date_created: 1,
|
||||
@@ -248,6 +249,8 @@ CircuitSchema.statics.getWhatToShow_Unknown = function(idapp, username) {
|
||||
systemUserId: 1,
|
||||
founderUserId: 1,
|
||||
nome_valuta: 1,
|
||||
totCircolante: 1,
|
||||
totTransato: 1,
|
||||
fido_scoperto_default: 1,
|
||||
qta_max_default: 1,
|
||||
symbol: 1,
|
||||
@@ -363,7 +366,7 @@ CircuitSchema.statics.getCircuitByName = async function(idapp, name) {
|
||||
};
|
||||
|
||||
try {
|
||||
return await Circuit.findOne(myfind).lean();
|
||||
return await Circuit.findOne(myfind);
|
||||
|
||||
} catch (e) {
|
||||
return null;
|
||||
@@ -378,7 +381,7 @@ CircuitSchema.statics.getCircuitById = async function(circuitId) {
|
||||
};
|
||||
|
||||
try {
|
||||
return await Circuit.findOne(myfind).lean();
|
||||
return await Circuit.findOne(myfind);
|
||||
|
||||
} catch (e) {
|
||||
return null;
|
||||
@@ -440,12 +443,24 @@ CircuitSchema.statics.getUserCircuits = async function(idapp, username) {
|
||||
|
||||
};
|
||||
|
||||
CircuitSchema.statics.getCircolanteSingolaTransaz = function(accountorigTable, accountdestTable) {
|
||||
|
||||
let circolante = 0;
|
||||
if (accountdestTable.saldo > 0)
|
||||
circolante += accountdestTable.saldo;
|
||||
if (accountorigTable.saldo > 0)
|
||||
circolante += accountorigTable.saldo;
|
||||
|
||||
return circolante;
|
||||
};
|
||||
|
||||
CircuitSchema.statics.sendCoins = async function(onlycheck, idapp, usernameOrig, extrarec) {
|
||||
|
||||
const {Movement} = require('../models/movement');
|
||||
const {Account} = require('../models/account');
|
||||
|
||||
let ris = {
|
||||
result: false,
|
||||
cansend: true,
|
||||
errormsg: '',
|
||||
rec: null,
|
||||
@@ -453,47 +468,61 @@ CircuitSchema.statics.sendCoins = async function(onlycheck, idapp, usernameOrig,
|
||||
};
|
||||
|
||||
try {
|
||||
let reccircuit = null;
|
||||
let circuittable = null;
|
||||
if (extrarec.circuitname)
|
||||
reccircuit = await Circuit.getCircuitByName(idapp, extrarec.circuitname);
|
||||
circuittable = await Circuit.getCircuitByName(idapp, extrarec.circuitname);
|
||||
if (extrarec.circuitId)
|
||||
reccircuit = await Circuit.getCircuitById(idapp, extrarec.circuitId);
|
||||
circuittable = await Circuit.getCircuitById(idapp, extrarec.circuitId);
|
||||
|
||||
if (reccircuit) {
|
||||
const myqty = extrarec.qty;
|
||||
if (circuittable) {
|
||||
const myqty = Math.abs(extrarec.qty);
|
||||
|
||||
const accountdest = await Account.getAccountByUsernameAndCircuitId(idapp, extrarec.dest, { circuitId: reccircuit._id }, true);
|
||||
const accountorig = await Account.getAccountByUsernameAndCircuitId(idapp, usernameOrig, { circuitId: reccircuit._id }, true);
|
||||
const accountdestTable = await Account.getAccountByUsernameAndCircuitId(idapp, extrarec.dest, { circuitId: circuittable._id }, true);
|
||||
const accountorigTable = await Account.getAccountByUsernameAndCircuitId(idapp, usernameOrig, { circuitId: circuittable._id }, true);
|
||||
|
||||
const circolantePrec = this.getCircolanteSingolaTransaz(accountorigTable, accountdestTable);
|
||||
|
||||
// Check if Sender has enough money
|
||||
if (accountorig.saldo - myqty < -accountorig.fidoConcesso) {
|
||||
if (accountorigTable.saldo - myqty < -accountorigTable.fidoConcesso) {
|
||||
ris.cansend = false;
|
||||
ris.errormsg = i18n.__('CIRCUIT_AMOUNT_EXCEED_FIDO');
|
||||
}
|
||||
if (accountdest.saldo + myqty > accountorig.qta_maxConcessa) {
|
||||
if (accountdestTable.saldo + myqty > accountorigTable.qta_maxConcessa) {
|
||||
ris.cansend = false;
|
||||
ris.errormsg = i18n.__('CIRCUIT_AMOUNT_EXCEED_QTAMAX');
|
||||
}
|
||||
|
||||
if (!onlycheck) {
|
||||
// Add a Transaction !
|
||||
ris.rec = await Movement.addMov(idapp, accountorig, accountdest, myqty, extrarec.causal);
|
||||
ris.rec = await Movement.addMov(idapp, accountorigTable, accountdestTable, myqty, extrarec.causal);
|
||||
|
||||
ris.useraccounts = await Account.getUserAccounts(idapp, usernameOrig);
|
||||
if (ris.cansend && ris.rec) {
|
||||
|
||||
const circolanteAtt = this.getCircolanteSingolaTransaz(accountorigTable, accountdestTable);
|
||||
|
||||
// Somma di tutte le transazioni
|
||||
circuittable.totTransato += myqty;
|
||||
circuittable.totCircolante = circuittable.totCircolante + (circolanteAtt - circolantePrec);
|
||||
await circuittable.save();
|
||||
|
||||
ris.result = true;
|
||||
console.log('Inviate Monete da', usernameOrig, extrarec.dest, myqty, extrarec.causal);
|
||||
|
||||
ris.useraccounts = await Account.getUserAccounts(idapp, usernameOrig);
|
||||
|
||||
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);
|
||||
console.log('NON Inviate Monete da', usernameOrig, extrarec.dest, myqty, extrarec.causal);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return ris;
|
||||
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Err sendCoins', e);
|
||||
return false;
|
||||
ris.result = false;
|
||||
return ris;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user