This commit is contained in:
paoloar77
2022-02-03 00:33:15 +01:00
parent c391ca85c3
commit daf872fe55
20 changed files with 651 additions and 4831 deletions

View File

@@ -1,362 +0,0 @@
const mongoose = require('mongoose').set('debug', false)
const _ = require('lodash');
const tools = require('../tools/general');
const { ListaIngresso } = require('./listaingresso');
const { Settings } = require('./settings');
const { User } = require('./user');
const { ObjectID } = require('mongodb');
const shared_consts = require('../tools/shared_nodejs');
mongoose.Promise = global.Promise;
mongoose.level = "F";
// Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => {
schema.options.usePushEach = true
});
mongoose.set('debug', process.env.DEBUG);
const FlottaSchema = new mongoose.Schema({
idapp: {
type: String,
required: true,
},
index: {
type: Number
},
riga: {
type: Number,
},
col_prima: {
type: Number,
},
col_ultima: {
type: Number,
},
date_start: {
type: Date
},
date_close: {
type: Date
},
provvisoria: {
type: Boolean,
},
DoniAttesaDiConferma: {
type: Number,
},
DoniMancanti: {
type: Number,
},
DoniConfermati: {
type: Number,
},
DoniTotali: {
type: Number,
},
note_interne: {
type: String
},
sognatore: {
type: String
},
sognatore_nomecognome: {
type: String
},
link_superchat: {
type: String,
},
link_payment: {
type: String,
},
email_paypal: {
type: String,
},
revolut: {
type: String,
},
payeer_id: {
type: String,
},
advcash_id: {
type: String,
},
note_payment: {
type: String,
},
tutor1: {
type: String,
},
tutor2: {
type: String,
},
tutor3: {
type: String,
},
tutorslo: {
type: String,
},
msg_inviato: {
type: Boolean,
},
});
function getQueryProj(myfilter) {
myobjField = {
_id: 1,
idapp: 1,
lang: 1,
ind_order: 1,
name: 1,
surname: 1,
username: 1,
'profile.paymenttypes': 1,
'profile.email_paypal': 1,
'profile.payeer_id': 1,
'profile.advcash_id': 1,
'profile.revolut': 1,
'profile.cell': 1,
made_gift: 1,
commento_al_sognatore: 1,
sent_msg_howto_make_gift: 1,
date_made_gift: 1,
note: 1,
received_gift: 1,
date_received_gift: 1,
num_tess: 1,
parent_id: 1,
riga: 1,
col: 1,
created: 1,
// date_start: 1,
// date_gift_chat_open: 1,
// link_chat: 1,
// provvisoria: 1,
// note_bot: 1,
// note_interne: 1,
// tutor: 1,
// tutor_namesurname: 1,
};
const query = [
{ $match: myfilter },
{
$lookup: {
from: "listaingressos",
localField: "ind_order",
foreignField: "ind_order", // field in the user collection
as: "mylista"
}
},
{
$replaceRoot: { newRoot: { $mergeObjects: [ { $arrayElemAt: [ "$mylista", 0 ] }, "$$ROOT" ] } }
},
{
$lookup: {
from: "users",
as: "user",
let: {username: '$username' },
pipeline: [
{
$match: {
$expr: {
$and: [
{ $eq: ['$username', '$$username'] },
{ $eq: ['$idapp', myfilter.idapp] },
]
}
}
}
]
}
},
{
$replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$user", 0] }, "$$ROOT"] } }
// $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$user", 0] },] } }
},
{ $project: myobjField }
];
return query;
}
FlottaSchema.statics.findById = function (idapp, id) {
const Flotta = this;
const myquery = getQueryProj({ idapp, '_id': ObjectID(id) });
return Flotta.aggregate(myquery);
};
FlottaSchema.statics.getFieldsForSearch = function () {
return [{ field: 'ind_order', type: tools.FieldType.number },
{ field: 'col', type: tools.FieldType.number }]
};
FlottaSchema.statics.executeQueryTable = function (idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
return tools.executeQueryTable(this, idapp, params);
};
FlottaSchema.statics.findAllIdApp = async function (idapp) {
const Flotta = this;
const myfind = { idapp };
return Flotta.find(myfind).sort({ riga: 1, col: 1 });
};
FlottaSchema.statics.getListaFlotta = function (idapp) {
const Flotta = this;
const myfind = { idapp };
return Flotta.find(myfind).sort({ riga: 1, col_prima: 1 });
};
FlottaSchema.statics.getLastFlotta = function (idapp) {
const Flotta = this;
const myfind = { idapp, date_start: { $lte: tools.IncDateNow(0) }, provvisoria: false };
return Flotta.findOne(myfind).sort({ riga: -1, col_prima: -1 }).limit(1);
};
FlottaSchema.statics.findByRigaColByDonatore = function (idapp, riga, col, offset) {
const Flotta = this;
mypos = {
riga,
col,
numup: 3 + offset,
};
tools.getRigaColByPosUp(mypos);
return Flotta.findOne({ idapp, riga: mypos.riga, col_prima: mypos.col });
};
FlottaSchema.statics.findByRigaCol = function (idapp, riga, col) {
const Flotta = this;
return Flotta.findOne({ idapp, riga, col });
};
FlottaSchema.statics.getLastRigaCol = async function (idapp) {
return Flotta.findOne({ idapp }).sort({ riga: -1, col_prima: -1 });
};
FlottaSchema.statics.getLastRigaColDefinitiva = async function (idapp) {
return Flotta.findOne({ idapp, provvisoria: false }).sort({ riga: -1, col_prima: -1 });
};
FlottaSchema.pre('save', async function (next) {
if (this.isNew) {
const myrec = await Flotta.findOne().limit(1).sort({ _id: -1 });
if (!!myrec) {
this.index = myrec._doc.index + 1;
} else {
this.index = 1;
}
}
next();
});
FlottaSchema.statics.addRecordFlottaByParams = async function (params) {
// Check if Exist:
const giapresente = await Flotta.findOne({
idapp: params.idapp,
riga: params.riga,
col: params.col
});
if (!giapresente) {
// Prende la nave prima:
const lastnave = await Flotta.findOne({idapp}).sort({riga: -1, col: -1});
let nextgiftchat = null;
if (((params.col - 1) % 8 === 0)) {
nextgiftchat = getNextDayNave(lastnave.date_gift_chat_open);
} else {
nextgiftchat = lastnave.date_gift_chat_open;
}
const next_date_start = tools.AddDate(nextgiftchat, 7);
let myFlotta = new Flotta({
idapp: params.idapp,
riga: params.riga,
col: params.col,
riga1don: params.riga1don,
col1don: params.col1don,
date_gift_chat_open: nextgiftchat,
date_start: next_date_start,
provvisoria: true,
});
return await myFlotta.save();
}
return false;
};
FlottaSchema.statics.getFlottaByNavePersistente = async function (idapp, navepers) {
const Flotta = this;
// const indcolflottaprima = tools.getPrimaColFlotta(navepers.col1don + 7);
const myflotta = await Flotta.findOne({ idapp, riga: navepers.riga,
$and: [
{ col_prima: { $lte: navepers.col1don } },
{ col_ultima: { $gte: navepers.col1don } } ]
});
return myflotta;
};
FlottaSchema.statics.getStrFlotta = function (flotta) {
return `Flotta ${flotta.riga}.${Math.ceil(flotta.col_prima / 8)} - ${flotta.riga}.${Math.ceil(flotta.col_ultima / 8)}: Sognatore: ${flotta.sognatore_nomecognome}`;
};
FlottaSchema.statics.getFlottaByRigaColDonatore = async function (idapp, riga, col) {
const Flotta = this;
let mypos = {
idapp,
riga,
col,
numup: 3
};
tools.getRigaColByPosUp(mypos);
const myflotta = await Flotta.findOne({ idapp, riga: mypos.riga,
$and: [
{ col_prima: { $lte: col } },
{ col_ultima: { $gte: col } } ]
});
return myflotta;
};
const Flotta = mongoose.model('Flotta', FlottaSchema);
module.exports = { Flotta };

View File

@@ -8,7 +8,6 @@ const tools = require('../tools/general');
const { ObjectID } = require('mongodb');
const { Nave } = require('./nave');
const { Settings } = require('./settings');
const shared_consts = require('../tools/shared_nodejs');
@@ -192,7 +191,7 @@ GraduatoriaSchema.statics.getFirstUserGradFree = async function (idapp) {
};
/*
GraduatoriaSchema.statics.addSingoloInGraduatoria_InFondo = async function (idapp, recingr) {
const Graduatoria = this;
@@ -200,8 +199,6 @@ GraduatoriaSchema.statics.addSingoloInGraduatoria_InFondo = async function (idap
const arrindex = [];
const { ListaIngresso } = require('../models/listaingresso');
if (!!lastimbarco) {
arrindex[recingr.username] = lastimbarco.indimbarco;
} else {
@@ -223,6 +220,8 @@ GraduatoriaSchema.statics.addSingoloInGraduatoria_InFondo = async function (idap
};
*/
function addRecGraduatoria(idapp, ingr, index) {
try {

File diff suppressed because it is too large Load Diff

253
src/server/models/mygroup.js Executable file
View File

@@ -0,0 +1,253 @@
const mongoose = require('mongoose').set('debug', false);
const Schema = mongoose.Schema;
const tools = require('../tools/general');
mongoose.Promise = global.Promise;
mongoose.level = 'F';
// Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => {
schema.options.usePushEach = true;
});
const MyGroupSchema = new Schema({
idapp: {
type: String,
},
groupname: {
type: String,
},
title: {
type: String,
},
descr: {
type: String,
},
idSector: {
type: Number,
},
userId: {
type: String,
},
photos: [
{
imagefile: {
type: String,
},
alt: {
type: String,
},
description: {
type: String,
},
}],
idCity: [
{
type: Number,
}],
website: {
type: String,
},
link_telegram: {
type: String,
},
visibility: {
type: Number,
},
admins: [
{
_id: false,
username: {type: String},
date: {type: Date},
},
],
blocked: {
type: Boolean,
},
username_who_block: {
type: String,
},
date_created: {
type: Date,
default: Date.now,
},
date_blocked: {
type: Date,
},
req_users: [
{
_id: false,
username: {type: String},
date: {type: Date},
}], // username
deleted: {
type: Boolean,
default: false,
},
});
MyGroupSchema.statics.getFieldsForSearch = function() {
return [{field: 'descr', type: tools.FieldType.string}];
};
MyGroupSchema.statics.executeQueryTable = function(idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
return tools.executeQueryTable(this, idapp, params);
};
MyGroupSchema.statics.findAllIdApp = async function(idapp) {
const myfind = {idapp};
return await MyGroup.find(myfind);
};
// Rimuovo la Richiesta del Gruppo
MyGroupSchema.statics.removeReqGroup = async function(
idapp, username, groupnameDest) {
const {User} = require('../models/user');
return User.updateOne({idapp, username: username},
{$pull: {'profile.req_groups': {groupname: {$in: [groupnameDest]}}}});
};
function getWhatToShow(idapp, username) {
// ++Todo: MyGroup what to show
return {
groupname: 1,
title: 1,
descr: 1,
visibility: 1,
idSector: 1,
userId: 1,
photos: 1,
idCity: 1,
website: 1,
link_telegram: 1,
admins: 1,
blocked: 1,
};
}
function getWhatToShow_Unknown(idapp, username) {
return {
groupname: 1,
title: 1,
descr: 1,
photos: 1,
visibility: 1,
idSector: 1,
idCity: 1,
};
}
MyGroupSchema.statics.getArrUsernameFromFieldByGroupname = async function(
idapp, groupname, field) {
const {User} = require('../models/user');
const myobj = {};
myobj[field + '.' + subfield] = 1;
let arrrec = await User.findOne({
idapp,
groupname,
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
}, myobj).then((ris) => ris ? ris._doc[field] : []);
if (arrrec.length > 0) {
return arrrec.map(m => m.username);
}
return [];
};
MyGroupSchema.statics.getUsernameReqGroupsByGroupname = async function(
idapp, groupname) {
return this.getArrUsernameFromFieldByGroupname(idapp, groupname, 'req_users');
};
MyGroupSchema.statics.getInfoGroupByGroupname = async function(
idapp, groupname) {
const whatToShow = getWhatToShow(idapp, groupname);
return MyGroup.findOne({
idapp,
groupname,
}, whatToShow).then((rec) => !!rec ? rec._doc : null);
};
MyGroupSchema.statics.getGroupsByUsername = async function(idapp, username) {
try {
const {User} = require('../models/user');
const whatToShow = getWhatToShow(idapp, username);
const whatToShow_Unknown = getWhatToShow_Unknown(idapp, username);
const arrUsernameGroups = await User.getUsernameGroupsByUsername(idapp,
username);
// const arrUsernameReqGroups = await MyGroup.getUsernameReqGroupsByGroupname(idapp, username);
let listUsersGroup = await User.find({
idapp,
username: {$in: arrUsernameGroups},
$or: [
{deleted: {$exists: false}},
{deleted: {$exists: true, $eq: false}}],
}, whatToShow);
let listgroups = await MyGroup.find({
idapp,
$or: [
{deleted: {$exists: false}},
{deleted: {$exists: true, $eq: false}}],
}, whatToShow_Unknown);
/*let listRequestUsersGroup = await User.find({
idapp,
username: {$in: arrUsernameReqGroups},
$or: [
{deleted: {$exists: false}},
{deleted: {$exists: true, $eq: false}}],
}, whatToShow_Unknown);
*/
let listSentRequestGroups = await MyGroup.find({
idapp,
'req_users': {
$elemMatch: {username: {$eq: username}},
},
$or: [
{deleted: {$exists: false}},
{deleted: {$exists: true, $eq: false}}],
}, whatToShow_Unknown);
return {
listUsersGroup,
listgroups,
//listRequestUsersGroup,
listSentRequestGroups,
};
} catch (e) {
console.log('Error', e);
}
return {
listUsersGroup: [],
listRequestUsersGroup: [],
listTrusted: [],
listSentRequestGroups: [],
};
};
const MyGroup = mongoose.model('MyGroup', MyGroupSchema);
module.exports = {MyGroup};

File diff suppressed because it is too large Load Diff

View File

@@ -1,511 +0,0 @@
const mongoose = require('mongoose').set('debug', false)
const _ = require('lodash');
const tools = require('../tools/general');
const { ListaIngresso } = require('./listaingresso');
const { Settings } = require('./settings');
const { User } = require('./user');
const { Flotta } = require('./flotta');
const { ObjectID } = require('mongodb');
const shared_consts = require('../tools/shared_nodejs');
mongoose.Promise = global.Promise;
mongoose.level = "F";
// Resolving error Unknown modifier: $pushAll
mongoose.plugin(schema => {
schema.options.usePushEach = true
});
mongoose.set('debug', process.env.DEBUG);
const NavePersistenteSchema = new mongoose.Schema({
idapp: {
type: String,
required: true,
},
index: {
type: Number
},
riga: {
type: Number,
},
col: {
type: Number,
},
riga1don: {
type: Number,
},
col1don: {
type: Number,
},
date_start: {
type: Date
},
date_gift_chat_open: {
type: Date
},
link_chat: {
type: String,
},
provvisoria: {
type: Boolean,
},
DoniAttesaDiConferma: {
type: Number,
},
DoniMancanti: {
type: Number,
},
DoniConfermati: {
type: Number,
},
DoniTotali: {
type: Number,
},
note_bot: {
type: String
},
note_interne: {
type: String
},
tutor: {
type: String
},
tutor_namesurname: {
type: String
}
});
function getQueryProj(myfilter) {
myobjField = {
_id: 1,
idapp: 1,
lang: 1,
ind_order: 1,
name: 1,
surname: 1,
username: 1,
'profile.paymenttypes': 1,
'profile.email_paypal': 1,
'profile.revolut': 1,
'profile.link_payment': 1,
'profile.note_payment': 1,
'profile.cell': 1,
made_gift: 1,
sent_msg_howto_make_gift: 1,
date_made_gift: 1,
note: 1,
received_gift: 1,
date_received_gift: 1,
num_tess: 1,
parent_id: 1,
riga: 1,
col: 1,
created: 1,
// date_start: 1,
// date_gift_chat_open: 1,
// link_chat: 1,
// provvisoria: 1,
// note_bot: 1,
// note_interne: 1,
// tutor: 1,
// tutor_namesurname: 1,
};
const query = [
{ $match: myfilter },
{
$lookup: {
from: "listaingressos",
localField: "ind_order",
foreignField: "ind_order", // field in the user collection
as: "mylista"
}
},
{
$replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$mylista", 0] }, "$$ROOT"] } }
},
{
$lookup: {
from: "users",
as: "user",
let: { username: '$username' },
pipeline: [
{
$match: {
$expr: {
$and: [
{ $eq: ['$username', '$$username'] },
{ $eq: ['$idapp', myfilter.idapp] },
]
}
}
}
]
}
},
{
$replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$user", 0] }, "$$ROOT"] } }
// $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$user", 0] },] } }
},
{ $project: myobjField }
];
return query;
}
NavePersistenteSchema.statics.findById = function (idapp, id) {
const NavePersistente = this;
const myquery = getQueryProj({ idapp, '_id': ObjectID(id) });
return NavePersistente.aggregate(myquery);
};
NavePersistenteSchema.statics.getFieldsForSearch = function () {
return [{ field: 'ind_order', type: tools.FieldType.number },
{ field: 'col', type: tools.FieldType.number }]
};
NavePersistenteSchema.statics.executeQueryTable = function (idapp, params) {
params.fieldsearch = this.getFieldsForSearch();
return tools.executeQueryTable(this, idapp, params);
};
NavePersistenteSchema.statics.findAllIdApp = async function (idapp) {
const NavePersistente = this;
const myfind = { idapp };
return NavePersistente.find(myfind).sort({ riga: 1, col: 1 });
};
NavePersistenteSchema.statics.getListaNavi = function (idapp) {
const NavePersistente = this;
const myfind = { idapp };
return NavePersistente.find(myfind,
{
index: 1,
riga: 1,
col: 1,
riga1don: 1,
col1don: 1,
date_gift_chat_open: 1,
date_start: 1,
provvisoria: 1,
DoniConfermati: 1,
DoniTotali: 1,
DoniMancanti: 1,
}
).sort({ riga: 1, col: 1 });
};
NavePersistenteSchema.statics.getLastNave = function (idapp) {
const NavePersistente = this;
const myfind = { idapp, date_start: { $lte: tools.IncDateNow(0) }, provvisoria: false };
return NavePersistente.findOne(myfind,
{
index: 1,
riga: 1,
col: 1,
riga1don: 1,
col1don: 1,
date_start: 1,
provvisoria: 1,
DoniConfermati: 1,
DoniTotali: 1,
DoniMancanti: 1,
}
).sort({ riga: -1, col: -1 }).limit(1);
};
NavePersistenteSchema.statics.findByRigaColByDonatore = function (idapp, riga, col, offset) {
const NavePersistente = this;
mypos = {
riga,
col,
numup: 3 + offset,
};
tools.getRigaColByPosUp(mypos);
return NavePersistente.findOne({ idapp, riga: mypos.riga, col: mypos.col });
};
NavePersistenteSchema.statics.findByRigaCol = function (idapp, riga, col) {
const NavePersistente = this;
return NavePersistente.findOne({ idapp, riga, col });
};
NavePersistenteSchema.statics.getLastRigaCol = async function (idapp) {
const NavePersistente = this;
return NavePersistente.findOne({ idapp }).sort({ riga: -1, col: -1 });
};
NavePersistenteSchema.statics.getLastRigaColDefinitiva = async function (idapp) {
const NavePersistente = this;
return NavePersistente.findOne({ idapp, provvisoria: false }).sort({ riga: -1, col: -1 });
};
NavePersistenteSchema.pre('save', async function (next) {
if (this.isNew) {
const myrec = await NavePersistente.findOne().limit(1).sort({ _id: -1 });
if (!!myrec) {
this.index = myrec._doc.index + 1;
} else {
this.index = 1;
}
}
next();
});
function getNextDayNave(miadata) {
// const dayofweek = [1, 2, 4, 5]; // LUNEDI, MARTEDI', GIOVEDI, VENERDI
const dayofweek = [1, 4]; // LUNEDI, GIOVEDI
let mydate = tools.AddDate(miadata, 1);
while (!dayofweek.includes(mydate.getDay())) {
mydate = tools.AddDate(mydate, 1);
}
return mydate
}
NavePersistenteSchema.statics.addRecordNavePersistenteByParams = async function (params) {
const NavePersistente = this;
// Check if Exist:
const giapresente = await NavePersistente.findOne({
idapp: params.idapp,
riga: params.riga,
col: params.col
});
if (!giapresente) {
// Prende la nave prima:
const lastnave = await NavePersistente.findOne({ idapp: params.idapp }).sort({ riga: -1, col: -1 });
let nextgiftchat = null;
if (((params.col - 1) % 8 === 0)) {
nextgiftchat = getNextDayNave(lastnave.date_gift_chat_open);
} else {
nextgiftchat = lastnave.date_gift_chat_open;
}
const next_date_start = tools.AddDate(nextgiftchat, 7);
let myNavePersistente = new NavePersistente({
idapp: params.idapp,
riga: params.riga,
col: params.col,
riga1don: params.riga1don,
col1don: params.col1don,
date_gift_chat_open: nextgiftchat,
date_start: next_date_start,
provvisoria: true,
});
return await myNavePersistente.save();
}
return false;
};
NavePersistenteSchema.statics.generaFlotte = async function (idapp) {
const NavePersistente = this;
// await Flotta.deleteMany({ idapp });
const arrnavi = await NavePersistente.find({ idapp, col: { $mod: [8, 1] } }).sort({ riga: 1, col: 1 });
let num = 0;
for (const navepers of arrnavi) {
const ris = await NavePersistente.aggiornaFlottaByNavePersistente(idapp, navepers);
if (ris)
num++;
}
return { num }
};
NavePersistenteSchema.statics.changeField = async function (idapp, flotta, fieldvalue) {
let myval = {};
if ('date_close' in fieldvalue) {
myval['date_start'] = fieldvalue['date_close'];
} else if ('date_start' in fieldvalue) {
myval['date_gift_chat_open'] = fieldvalue['date_start'];
} else {
myval = fieldvalue;
}
const ris = await NavePersistente.updateMany({
idapp,
riga: flotta.riga,
$and: [
{ col1don: { $gte: flotta.col_prima } },
{ col1don: { $lte: flotta.col_ultima } },
]
}, { $set: myval });
return ris;
};
NavePersistenteSchema.statics.aggiornaFlottaByNavePersistente = async function (idapp, naveinput) {
const { Nave } = require('../models/nave');
const { User } = require('./user');
const { Flotta } = require('./flotta');
let num = 0;
try {
let nuovo = false;
// let primacol = false;
indcolflottaprima = tools.getPrimaColFlotta(naveinput.col1don + 7);
console.log(num, ' -> [', naveinput.riga, '.', naveinput.col1don, '] indcolflottaprima=', indcolflottaprima);
let ini = Math.ceil(indcolflottaprima / 8);
let fine = ini + 7;
const arrnavi = await NavePersistente.find({
idapp,
riga: naveinput.riga,
$and: [{ col: { $gte: ini } }, { col: { $lte: fine } }]
}).sort({ riga: 1, col: 1 });
let primogiro = true;
let myflotta = await Flotta.findOne({ idapp, riga: naveinput.riga, col_prima: indcolflottaprima });
if (!myflotta) {
myflotta = new Flotta({
_id: new ObjectID(),
idapp,
});
nuovo = true;
}
for (const navepers of arrnavi) {
if (primogiro) {
myflotta.DoniAttesaDiConferma = 0;
myflotta.DoniMancanti = 0;
myflotta.DoniConfermati = 0;
myflotta.DoniTotali = 0;
primogiro = false;
}
if (nuovo) {
myflotta.riga = navepers.riga;
myflotta.col_prima = indcolflottaprima;
myflotta.col_ultima = indcolflottaprima + 63;
myflotta.sognatore = '';
myflotta.sognatore_nomecognome = '';
myflotta.link_superchat = '';
myflotta.msg_inviato = false;
}
myflotta.date_start = navepers.date_gift_chat_open;
myflotta.date_close = navepers.date_start;
let sognatore = await Nave.getSognatoreByRigaColMediatore(idapp, { riga: navepers.riga, col: navepers.col });
if (myflotta.sognatore_nomecognome === '') {
myflotta.sognatore = sognatore.username;
if (!!sognatore.username)
myflotta.sognatore_nomecognome = await User.getNameSurnameByUsername(idapp, sognatore.username);
}
if (nuovo) {
myflotta.email_paypal = '';
myflotta.payeer_id = '';
myflotta.advcash_id = '';
myflotta.revolut = '';
myflotta.link_payment = '';
myflotta.note_payment = '';
if (!!sognatore) {
myflotta.email_paypal = sognatore.profile.email_paypal;
myflotta.payeer_id = sognatore.profile.payeer_id;
myflotta.advcash_id = sognatore.profile.advcash_id;
myflotta.revolut = sognatore.profile.revolut;
myflotta.link_payment = sognatore.profile.link_payment;
myflotta.note_payment = sognatore.profile.note_payment;
}
}
if (!!sognatore) {
if (!myflotta.email_paypal)
myflotta.email_paypal = sognatore.profile.email_paypal;
if (!myflotta.payeer_id)
myflotta.payeer_id = sognatore.profile.payeer_id;
if (!myflotta.advcash_id)
myflotta.advcash_id = sognatore.profile.advcash_id;
if (!myflotta.revolut)
myflotta.revolut = sognatore.profile.revolut;
if (!myflotta.link_payment)
myflotta.link_payment = sognatore.profile.link_payment;
if (!myflotta.note_payment)
myflotta.note_payment = sognatore.profile.note_payment;
}
myflotta.provvisoria = navepers.provvisoria;
if (!!navepers.DoniAttesaDiConferma && !isNaN(navepers.DoniAttesaDiConferma))
myflotta.DoniAttesaDiConferma += navepers.DoniAttesaDiConferma;
if (!!navepers.DoniMancanti && !isNaN(navepers.DoniMancanti))
myflotta.DoniMancanti += navepers.DoniMancanti;
if (!!navepers.DoniConfermati && !isNaN(navepers.DoniConfermati))
myflotta.DoniConfermati += navepers.DoniConfermati;
if (!!navepers.DoniTotali && !isNaN(navepers.DoniTotali))
myflotta.DoniTotali += navepers.DoniTotali;
}
await myflotta.save();
return true;
} catch (e) {
console.log(e.message);
return false;
}
};
const NavePersistente = mongoose.model('NavePersistente', NavePersistenteSchema);
module.exports = { NavePersistente };

View File

@@ -6,14 +6,15 @@ const _ = require('lodash');
const tools = require('../tools/general');
const {Flotta} = require('../models/flotta');
const {Settings} = require('../models/settings');
const {ListaIngresso} = require('../models/listaingresso');
// const {ListaIngresso} = require('../models/listaingresso');
const {Graduatoria} = require('../models/graduatoria');
const {Nave} = require('../models/nave');
const {NavePersistente} = require('../models/navepersistente');
// const {Nave} = require('../models/nave');
// const {NavePersistente} = require('../models/navepersistente');
// const { ExtraList } = require('../models/extralist');
const {MyGroup} = require('../models/mygroup');
const {ObjectID} = require('mongodb');
const shared_consts = require('../tools/shared_nodejs');
@@ -341,6 +342,12 @@ const UserSchema = new mongoose.Schema({
username: {type: String},
date: {type: Date},
}], // username
groups: [
{
_id: false,
groupname: {type: String},
date: {type: Date},
}], // username
},
})
;
@@ -657,12 +664,9 @@ UserSchema.statics.getUserShortDataByUsername = async function(
if (myrec) {
myrec.qualified = await User.isUserQualified7(idapp, myrec.username);
myrec.numNaviEntrato = await Nave.getnumNaviByUsername(idapp,
myrec.username);
myrec.numinvitati = await ListaIngresso.getnumInvitati(idapp,
myrec.username);
myrec.numinvitatiattivi = await ListaIngresso.getnumInvitatiAttivi(idapp,
myrec.username);
myrec.numNaviEntrato = 0;
// myrec.numinvitati = await ListaIngresso.getnumInvitati(idapp, myrec.username);
// myrec.numinvitatiattivi = await ListaIngresso.getnumInvitatiAttivi(idapp, myrec.username);
}
return myrec;
@@ -674,37 +678,7 @@ UserSchema.statics.getDownlineByUsername = async function(
if (username === undefined)
return null;
let arrrec = await ListaIngresso.getInvitati(idapp, username, includemyself,
{
index: 1,
lang: 1,
invitante_username: 1,
ind_order: 1,
username: 1,
name: 1,
surname: 1,
verified_email: 1,
'profile.teleg_id': 1,
// 'profile.saw_zoom_presentation': 1,
'profile.ask_zoom_partecipato': 1,
'profile.qualified': 1,
'profile.qualified_2invitati': 1,
'profile.saw_and_accepted': 1,
'profile.email_paypal': 1,
'profile.payeer_id': 1,
'profile.advcash_id': 1,
'profile.revolut': 1,
'profile.link_payment': 1,
'profile.note_payment': 1,
// 'profile.my_dream': 1,
'profile.paymenttypes': 1,
'profile.cell': 1,
made_gift: 1,
email: 1,
date_reg: 1,
img: 1,
},
);
let arrrec = [];
let myq = {
idapp,
@@ -716,44 +690,6 @@ UserSchema.statics.getDownlineByUsername = async function(
myq = {...myq, username: {$ne: username}};
}
// Ottieni gli invitati che ancora non hanno un'imbarco
const arrinv = await User.find(myq);
for (const inv of arrinv) {
if (!arrrec.find((rec) => rec.username === inv.username))
arrrec.push(inv._doc);
}
const arrusername = [];
for (const inv of arrrec) {
const rectrovato = arrusername.find((rec) => inv.username === rec.username);
if (!!rectrovato) {
rectrovato.quanti++;
} else {
const myrec = {...inv};
myrec.quanti = 1;
arrusername.push(myrec);
}
}
arrrec = arrusername;
if (!onlynumber) {
if (!!arrrec) {
for (const rec of arrrec) {
rec.qualified = await User.isUserQualified7(idapp, rec.username);
rec.numNaviEntrato = await Nave.getnumNaviByUsername(idapp,
rec.username);
rec.numinvitati = await ListaIngresso.getnumInvitati(idapp,
rec.username);
rec.numinvitatiattivi = await ListaIngresso.getnumInvitatiAttivi(idapp,
rec.username);
}
}
}
return arrrec;
};
@@ -961,6 +897,7 @@ UserSchema.statics.setUserQualified_2Invitati = async function(
return !!myrec;
};
/*
UserSchema.statics.isUserQualified9 = async function(idapp, username) {
const User = this;
@@ -968,11 +905,12 @@ UserSchema.statics.isUserQualified9 = async function(idapp, username) {
return false;
qualified = await User.isUserQualified7(idapp, username);
numinvitatiattivi = await ListaIngresso.getnumInvitatiAttivi(idapp, username);
// numinvitatiattivi = await ListaIngresso.getnumInvitatiAttivi(idapp, username);
return qualified && (numinvitatiattivi >= 2);
};
*/
/*
UserSchema.statics.getnumPaymentOk = function (idapp) {
@@ -1201,6 +1139,16 @@ UserSchema.statics.getUserById = function(idapp, id) {
});
};
UserSchema.statics.getUserByUsername = function(idapp, username) {
const User = this;
return User.findOne({
idapp,
username,
$or: [{deleted: {$exists: false}}, {deleted: {$exists: true, $eq: false}}],
});
};
UserSchema.statics.isMyFriend = async function(idapp, username, myusername) {
const myfriends = await User.getUsernameFriendsByUsername(idapp, myusername);
@@ -1337,11 +1285,11 @@ UserSchema.statics.getArrUsernameFromFieldByUsername = async function(
UserSchema.statics.getUsernameReqFriendsByUsername = async function(
idapp, username) {
return this.getArrUsernameFromFieldByUsername(idapp, username, 'profile',
'req_friends');
return this.getArrUsernameFromFieldByUsername(idapp, username, 'profile', 'req_friends');
};
UserSchema.statics.getUsernameFriendsByUsername = async function(
idapp, username) {
@@ -1350,12 +1298,25 @@ UserSchema.statics.getUsernameFriendsByUsername = async function(
};
UserSchema.statics.getUsernameGroupsByUsername = async function(
idapp, username) {
return this.getArrUsernameFromFieldByUsername(idapp, username, 'profile', 'groups');
};
// Rimuovo l'Amicizia
UserSchema.statics.removeFriend = async function(idapp, username, usernameDest) {
return User.updateOne({idapp, username},
{$pull: {'profile.friends': {username: {$in: [usernameDest]}}}});
};
// Rimuovo il Gruppo
UserSchema.statics.removeFromMyGroups = async function(idapp, username, groupnameDest) {
return User.updateOne({idapp, username},
{$pull: {'profile.groups': {groupname: {$in: [groupnameDest]}}}});
};
// Rimuovo la Richiesta di Amicizia
UserSchema.statics.removeReqFriend = async function(idapp, username, usernameDest) {
return User.updateOne({idapp, username: username},
@@ -1496,8 +1457,106 @@ UserSchema.statics.setFriendsCmd = async function(
return ris;
};
UserSchema.statics.setGroupsCmd = async function(idapp, usernameOrig, groupnameDest, cmd, value) {
let ris = null;
let update = {};
try {
if (cmd === shared_consts.GROUPSCMD.SETGROUP) {
// Aggiungo l'Amicizia a me
const foundIfAlreadyGroup = await User.findOne({
idapp,
username: usernameOrig,
'profile.groups': {
$elemMatch: {groupname: {$eq: groupnameDest}},
},
});
if (!foundIfAlreadyGroup) {
update = {
$push: {
'profile.groups': {
groupname: groupnameDest,
date: new Date(),
},
},
};
ris = await User.updateOne({idapp, username: usernameOrig}, update);
update = {$pull: {'profile.req_groups': {groupname: {$in: [groupnameDest]}}}};
ris = await User.updateOne({idapp, username: usernameOrig}, update);
}
if (ris) {
ris = await MyGroup.getInfoGroupByGroupname(idapp, groupnameDest);
}
} else if (cmd === shared_consts.GROUPSCMD.REQGROUP) {
// Aggiungo la richiesta di Amicizia a me
const foundIfAlreadyAskGroup = await MyGroup.findOne({
idapp,
groupname: groupnameDest,
'req_groups': {
$elemMatch: { username: {$eq: usernameOrig}},
},
});
if (value) {
if (!foundIfAlreadyAskGroup) {
update = {
$push: {
'profile.req_groups': {
username: usernameOrig,
date: new Date(),
},
},
};
ris = await User.updateOne({idapp, username: groupnameDest}, update);
}
if (ris) {
// Invia una notifica alla persona
tools.sendNotificationByGroupName(idapp, groupnameDest, cmd, true);
}
} else {
if (foundIfAlreadyAskGroup) {
ris = await this.removeFromMyGroups(idapp, groupnameDest, usernameOrig); // Rimuovo l'Amicizia da me
}
}
if (ris) {
ris = await User.getInfoAskGroupByUsername(idapp, groupnameDest);
}
} else if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUPS) {
ris = await this.removeFromMyGroups(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me
} else if (cmd === shared_consts.GROUPSCMD.CANCEL_REQ_GROUP) {
ris = await MyGroup.removeReqGroup(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me
} else if (cmd === shared_consts.GROUPSCMD.BLOCK_GROUP) {
await this.removeFromMyGroups(idapp, usernameOrig, groupnameDest); // Rimuovo l'Amicizia da me
// Blocco il Gruppo
ris = await MyGroup.updateOne({idapp, username: groupnameDest}, {
$set: {
blocked: true,
username_who_block: usernameOrig,
date_blocked: new Date(),
},
});
//++Todo: Send Notification to Admin and Group's manager
}
} catch (e) {
console.error('Error: ', e);
}
return ris;
};
function getWhatToShow(idapp, username) {
//++Todo: check which data to show
return {
username: 1,
aportador_solidario: 1,
@@ -1841,6 +1900,8 @@ UserSchema.statics.getNameSurnameById = async function(idapp, userId) {
UserSchema.statics.getSmallRecByIndOrder = async function(idapp, ind_order) {
try {
const rec = {};
/*
const rec = await ListaIngresso.getarray(idapp,
{
idapp,
@@ -1864,6 +1925,8 @@ UserSchema.statics.getSmallRecByIndOrder = async function(idapp, ind_order) {
if (!!rec)
return rec[0];
*/
return null;
} catch (e) {
@@ -1889,7 +1952,7 @@ UserSchema.statics.getRecByIndOrder = async function(idapp, ind_order) {
const User = this;
try {
/*
let filters = {
idapp: 1,
index: 1,
@@ -1920,6 +1983,8 @@ UserSchema.statics.getRecByIndOrder = async function(idapp, ind_order) {
if (!!rec)
return rec[0];
*/
return null;
} catch (e) {
@@ -2147,99 +2212,6 @@ UserSchema.statics.getDashboard = async function(
if (!!arrap)
dashboard.numpeople_aportador = arrap.length;
dashboard.arrimbarchi = await ListaIngresso.findAllByUsername(idapp,
username);
// dashboard.arrprofili = await Nave.getArrProfiliByIndOrder(idapp, dashboard.myself.ind_order);
dashboard.arrposizioni = await Nave.getArrPosizioniByUsername(idapp,
username);
/* let arrrec = [];
if (dashboard.arrimbarchi.length > 0) {
arrrec = await ListaIngresso.getProssimiInLista(idapp, true);
}*/
for (let myimbarco of dashboard.arrimbarchi) {
if (!!myimbarco.invitante_username)
dashboard.arrusers[myimbarco.invitante_username] = await User.getUserShortDataByUsername(
idapp, myimbarco.invitante_username);
myimbarco._doc.posiz = await Graduatoria.getPosizioneInGraduatoria(idapp,
myimbarco.ind_order, myimbarco.username, myimbarco.num_tess);
}
dashboard.navi_partenza = await NavePersistente.getListaNavi(idapp);
dashboard.lastnave = await NavePersistente.getLastNave(idapp);
for (let mypos of dashboard.arrposizioni) {
mypos.rec = await Nave.getNaveByRigaCol(idapp, mypos.riga, mypos.col);
mypos.nave_partenza = await NavePersistente.findByRigaColByDonatore(idapp,
mypos.riga, mypos.col, 0);
if (!!mypos.nave_partenza)
mypos.flotta = await Flotta.getFlottaByNavePersistente(idapp,
mypos.nave_partenza);
}
//for (let indriga = 0; indriga < 10; indriga++) {
// dashboard.navi_partenza.push(await Nave.getPrimaNaveByRiga(idapp, indriga));
//}
const arrnew = [];
try {
for (let mypos of dashboard.arrposizioni) {
// Controlla se è presente la Nave con il num_tess pari
let trovato = false;
if (mypos.num_tess % 2 !== 0) {
for (let myrec of dashboard.arrposizioni) {
if (myrec.num_tess === mypos.num_tess + 1 &&
(myrec.ind_order === mypos.ind_order)) {
// La Nave di Ritorno (numtess = 2) esiste nella lista !
trovato = true;
break;
}
}
} else {
trovato = true;
}
if (!trovato) {
let myr = null;
if (!!mypos._doc)
myr = mypos._doc;
else
myr = mypos;
if (!!myr && !!myr.rec.mediatore) {
const mymediatore = myr.rec.mediatore.arrdonatori[7];
if (!!mymediatore) {
const myrec = {
riga: mymediatore.riga,
col: mymediatore.col,
name: myr.rec.mediatore.recmediatore.name,
surname: myr.rec.mediatore.recmediatore.surname,
username: myr.rec.mediatore.recmediatore.username,
num_tess: myr.rec.mediatore.recmediatore.num_tess + 1,
rec: await Nave.getNaveByRigaCol(idapp, mymediatore.riga,
mymediatore.col),
nave_partenza: {},
};
myrec.nave_partenza = await NavePersistente.findByRigaColByDonatore(
idapp, myrec.riga, myrec.col, 0);
arrnew.push(myrec);
}
}
}
}
} catch (e) {
console.error(e.message);
}
dashboard.arrposizioni = [...dashboard.arrposizioni, ...arrnew];
// console.table(dashboard.arrnavi);
return dashboard;
@@ -2377,131 +2349,6 @@ UserSchema.statics.getUsersQualified = async function (idapp, numinvitati) {
};
*/
UserSchema.statics.visuUtentiNonInNavi = async function(idapp) {
const User = this;
const arrusers = await User.find({
idapp,
$and: User.getQueryQualified(),
}, {
name: 1,
surname: 1,
username: 1,
ind_order: 1,
deleted: 1,
sospeso: 1,
});
let num = 0;
let innave = 0;
let noninnave = 0;
let mystr = 'visuUtentiNonInNavi: ' + tools.ACAPO;
let reg = 0;
let num0inv = 0;
let num1inv = 0;
let num2inv = 0;
let numnoinlista = 0;
let numeliminati = 0;
let numsospesi = 0;
let strnavidoppie = '';
let esiste = false;
for (const user of arrusers) {
esiste = true;
if (!!user.deleted) {
if (user.deleted) {
numeliminati++;
esiste = false;
}
}
if (esiste) {
let visualizza = false;
// Controlla se ho un doppione nelle Navi !
let mienavi = await Nave.find({idapp, ind_order: user.ind_order},
{num_tess: 1});
let strnavidoppie = [];
if (!!mienavi) {
strnavidoppie = mienavi.reduce((acc, currentValue, index, array) => {
if (array.indexOf(currentValue.num_tess) > -1 &&
!acc.includes(currentValue.num_tess))
acc.push(currentValue.num_tess);
return acc;
}, []);
}
if (strnavidoppie.length > 1) {
visualizza = true;
}
user.numinvitati = await ListaIngresso.getnumInvitati(idapp,
user.username);
reg++;
let mianave = await Nave.findOne({idapp, ind_order: user.ind_order});
let mialistaingresso = await ListaIngresso.findOne(
{idapp, ind_order: user.ind_order});
let trovato = false;
if (!mianave)
visualizza = true;
if (visualizza) {
mystr += user.username + ' ' + user.name + ' ' + user.surname + ' [' +
user.index + '] [inv=' + user.numinvitati + ']';
trovato = true;
}
if (strnavidoppie.length > 1) {
mystr += ' NAVI DUPLICATE! ' + strnavidoppie.join(',');
}
if (!mianave)
noninnave++;
else
innave++;
if (user.sospeso) {
numsospesi++;
}
if (!mialistaingresso) {
mystr += ' NO IN LISTA INGRESSO!';
trovato = true;
numnoinlista++;
}
if (trovato)
mystr += tools.ACAPO;
if (user.numinvitati === 0) {
num0inv++;
}
if (user.numinvitati === 1) {
num1inv++;
}
if (user.numinvitati >= 2) {
num2inv++;
}
}
}
mystrstart = 'Registrati: ' + reg + tools.ACAPO;
mystrstart += '0 Invitati: ' + num0inv + tools.ACAPO;
mystrstart += '1 Invitato: ' + num1inv + tools.ACAPO;
mystrstart += '2 o più Invitati: ' + num2inv + tools.ACAPO;
mystrstart += 'Presente in Nave: ' + innave + tools.ACAPO;
mystrstart += 'Non in Nave: ' + noninnave + tools.ACAPO;
mystrstart += 'Non in Lista Imbarco: ' + numnoinlista + tools.ACAPO;
mystrstart += 'Usciti (Nascosti): ' + numeliminati + tools.ACAPO;
mystrstart += 'Sospesi: ' + numsospesi + tools.ACAPO;
mystrstart += tools.ACAPO;
mystr = mystrstart + mystr;
return {num, mystr};
};
// UserSchema.statics.getNumUsersQualified = async function (idapp, numinvitati) {
//
@@ -2639,12 +2486,15 @@ UserSchema.statics.checkUser = async function(idapp, username) {
UserSchema.statics.calculateStat = async function(idapp, username) {
const User = this;
/*
return calcstat = {
numinvitati: await ListaIngresso.getnumInvitati(idapp, username),
numinvitati_attivi: await ListaIngresso.getnumInvitatiAttivi(idapp,
username),
};
*/
};
UserSchema.statics.getDistinctNationalityQuery = function(idapp) {
@@ -2804,44 +2654,6 @@ if (tools.INITDB_FIRSTIME) {
// UserSchema.index({ surname: 1 });
}
async function addUtentiInLista(idapp, mode, arrusers) {
let num = 0;
for (const rec of arrusers) {
let ok = false;
let qualified = await User.isUserQualified7(idapp, rec.username);
let numinvitatiattivi = await ListaIngresso.getnumInvitatiAttivi(idapp,
rec.username);
let numinvitati = await ListaIngresso.getnumInvitati(idapp, rec.username);
if (rec.profile.special_req) {
numinvitatiattivi = 2;
}
if (mode === 1) {
// 9 punti qualificati
ok = qualified && (numinvitatiattivi >= 2);
} else if (mode === 2) {
// 8 punti qualificati ( 1 Invitato)
ok = qualified && (numinvitati === 2);
} else if (mode === 3) {
ok = qualified && (numinvitatiattivi === 1);
} else if (mode === 4) {
ok = qualified && (numinvitati === 1);
} else if (mode === 5) {
ok = qualified;
}
if (ok) {
ris = await ListaIngresso.addUserInListaIngresso(idapp, rec.username,
rec.aportador_solidario, rec.lang, false, true);
if (!!ris)
num++;
}
}
return num;
}
UserSchema.statics.getUsernameByIndOrder = async function(idapp, ind_order) {
@@ -2886,85 +2698,11 @@ UserSchema.statics.ricalcolaIndex = async function(idapp) {
};
UserSchema.statics.changeInvitante = async function(
idapp, username, invitante_username, ind_order_ingr) {
const User = this;
const rec_ind_order_prima = await ListaIngresso.findOne({idapp, username});
let modif_aportador = false;
// cambia aportador_solidario solo se è la prima nave!
// Oppure se ancora non sono in Lista!
if (!rec_ind_order_prima) {
modif_aportador = true;
} else {
if (rec_ind_order_prima.ind_order === ind_order_ingr) {
modif_aportador = true;
}
}
if (modif_aportador) {
await User.findOneAndUpdate({idapp, username},
{$set: {aportador_solidario: invitante_username}});
}
// **
// ** Cambia invitante_username e ind_order di LISTAINGRESSO
// **
const rec_ingr = await ListaIngresso.findOne({idapp, username: username});
if (!!rec_ingr) {
// await ListaIngresso.findByIdAndUpdate(rec_ingr._id, { $set: { invitante_username, ind_order: ind_order_ingr } });
await ListaIngresso.findByIdAndUpdate(rec_ingr._id,
{$set: {invitante_username}});
}
};
UserSchema.statics.NessunaNavePresenteByUsername = async function(
idapp, username) {
const User = this;
const rec = await User.findOne({idapp, username},
{username: 1, ind_order: 1});
if (!!rec) {
// Controlla se è qualificato!
const qualified = await User.isUserQualified7(idapp, rec.username);
if (qualified) {
// Ha un'imbarco almeno?
const arrimbarchi = await ListaIngresso.findOne({
idapp, username: rec.username,
$or: [
{deleted: {$exists: false}},
{deleted: {$exists: true, $eq: false}}],
});
const arrnavi = await Nave.findOne({
idapp, ind_order: rec.old_order,
});
if (!arrimbarchi && !arrnavi) {
// NEANCHE 1 !
const recout = await User.findOneAndUpdate({
idapp,
username,
}, {$set: {navinonpresenti: true}}, {new: false});
return (!!recout);
}
}
}
return false;
};
UserSchema.statics.getInfoUser = async function(idapp, username) {
return {
username,
is7req: await User.isUserQualified7(idapp, username),
is9req: await User.isUserQualified9(idapp, username),
// is9req: await User.isUserQualified9(idapp, username),
};
};
@@ -2978,37 +2716,15 @@ UserSchema.statics.checkIfSbloccatiRequisiti = async function(
if (!allData.myuser)
return false;
if (await Nave.checkIfNaveExist(idapp, allData.myuser.username)) {
// Se già sei dentro la Nave, allora sei OK
return true; //TOGLEREE
}
//if (await Nave.checkIfNaveExist(idapp, allData.myuser.username)) {
// // Se già sei dentro la Nave, allora sei OK
// return true; //TOGLEREE
//}
// Controlla se Sblocca i 7 requisiti
const is7req = await User.isUserQualified7(idapp, allData.myuser.username);
const is9req = await User.isUserQualified9(idapp, allData.myuser.username);
const userlista = await ListaIngresso.getListaTessByUsername(idapp,
allData.myuser.username);
//if (userlista.length > 0) { //TOGLIERE
if (userlista.length === 0) {
// Se non sono ancora dentro alla lista, allora controllo
if (!!allData.precDataUser) {
if ((!allData.precDataUser.is7req && is7req) &&
!await User.isUserAlreadyQualified(idapp, allData.myuser.username)) {
await User.setUserQualified(idapp, allData.myuser.username);
// ORA HAI I 7 REQUISITI !
// const msgtext = telegrambot.getCiao(idapp, allData.myuser.username, allData.myuser.lang) + tools.gettranslate('HAI_I_7_REQUISITI', allData.myuser.lang);
// telegrambot.sendMsgTelegram(idapp, allData.myuser.username, msgtext, true); // Anche a STAFF
// Aggiungilo alla ListaIngresso
risingr = await ListaIngresso.addUserInListaIngresso(idapp,
allData.myuser.username, allData.myuser.aportador_iniziale,
allData.myuser.lang, true, false);
}
}
}
const is9req = false;
// const is9req = await User.isUserQualified9(idapp, allData.myuser.username);
if (!!allData.precDataUser) {
if ((!allData.precDataUser.is9req && is9req) &&
@@ -3107,57 +2823,6 @@ UserSchema.statics.mettiSognoePaypal = async function(idapp, modifica) {
};
UserSchema.statics.flagUtentiNaviNonPresenti = async function(idapp) {
const User = this;
let num = 0;
await User.updateMany({idapp}, {$set: {navinonpresenti: false}});
arrusers = await User.find({
'idapp': idapp,
$or: [
{deleted: {$exists: false}},
{deleted: {$exists: true, $eq: false}},
{subaccount: {$exists: false}},
{subaccount: {$exists: true, $eq: false}}],
});
for (const rec of arrusers) {
const nessunanave = await User.NessunaNavePresenteByUsername(idapp,
rec.username);
if (nessunanave)
num++;
}
return {num};
};
UserSchema.statics.addNavePerUtentiNaviNonPresenti = async function(idapp) {
const User = this;
let num = 0;
arrusers = await User.find({
'idapp': idapp,
navinonpresenti: true,
});
for (const user of arrusers) {
// Controlla se è qualificato!
mydata = tools.AddDate(user.date_reg, 7);
const newrecingr = await ListaIngresso.addUserInListaIngresso(idapp,
user.username, user.aportador_solidario, user.lang, true, true, mydata);
await tools.snooze(1000);
num++;
}
return {num};
};
UserSchema.statics.convSubAccount = async function(idapp) {
const User = this;
@@ -3269,6 +2934,18 @@ UserSchema.statics.addExtraInfo = async function(idapp, recUser) {
}, {username: 1});
recUser._doc.profile.asked_friends = listSentMyRequestFriends ? listSentMyRequestFriends : [];
const listSentMyRequestGroups = await User.find({
idapp,
'profile.req_groups': {
$elemMatch: {username: {$eq: recUser.username}},
},
$or: [
{deleted: {$exists: false}},
{deleted: {$exists: true, $eq: false}}],
}, {username: 1});
recUser._doc.profile.asked_groups = listSentMyRequestGroups ? listSentMyRequestGroups : [];
}catch (e){
console.error('Err', e);
}

View File

@@ -0,0 +1,10 @@
module.exports = {
list: [
{_id: 0, descr: '[Nessuno]', years_of_exp: 0},
{_id: 1, descr: 'Principiante', years_of_exp: 1},
{_id: 2, descr: 'Intermedio', years_of_exp: 3},
{_id: 3, descr: 'Avanzato', years_of_exp: 5},
{_id: 4, descr: 'Esperto', years_of_exp: 10},
{_id: 5, descr: 'Veterano', years_of_exp: 20},
],
};

View File

@@ -25,7 +25,7 @@ module.exports = {
},
popolaTabelleNuove() {
const abilita = true;
const abilita = false;
const scrivi_citta = false;
let ris = null;
@@ -42,6 +42,14 @@ module.exports = {
const { SubSkill } = require('../models/subskill');
this.insertIntoDb('subskills', SubSkill)
// Levels
const { Level } = require('../models/level');
this.insertIntoDb('levels', Level)
// Status
const { StatusSkill } = require('../models/statusSkill');
this.insertIntoDb('statusskills', StatusSkill)
if (scrivi_citta) {
// Cities
const {City} = require('../models/city');

View File

@@ -0,0 +1,6 @@
module.exports = {
list: [
{_id: 1, descr: 'Di Persona'},
{_id: 2, descr: 'On Line'},
],
};

View File

@@ -1,10 +1,9 @@
const mongoose = require('mongoose').set('debug', false)
const Subscription = mongoose.model('subscribers');
const { ListaIngresso } = require('../../models/listaingresso');
//const { ListaIngresso } = require('../../models/listaingresso');
const { Graduatoria } = require('../../models/graduatoria');
const { User } = require('../../models/user');
const { Nave } = require('../../models/nave');
const { ObjectID } = require('mongodb');
@@ -20,11 +19,11 @@ module.exports = {
let ris = null;
const { ListaIngresso } = require('../../models/listaingresso');
// const { ListaIngresso } = require('../../models/listaingresso');
if (tablename === 'users') {
await ListaIngresso.deleteUserInListaIngresso(rec.idapp, rec.username);
// await ListaIngresso.deleteUserInListaIngresso(rec.idapp, rec.username);
// Controlla se aveva invitati, li regala a quello sopra
const arrap = await User.getDownlineByUsername(rec.idapp, rec.username);
@@ -43,28 +42,6 @@ module.exports = {
ris = Subscription.deleteOne({ userId: rec._id })
}
if (tablename === 'listaingressos') {
// Rimuovi anche nella Tabella Graduatoria
ris = await Graduatoria.deleteOne({ idListaIngresso: ObjectID(rec._id) });
if (!!ris) {
let msg = 'Eliminato dalla Graduatoria di ' + rec.name + ' ' + rec.surname + ' (ind_order=' + rec.ind_order + ', num_tess=' + rec.num_tess + ') [Num = ' + rec.index + `] (da ${req.user.name} ${req.user.surname} )` ;
await telegrambot.sendMsgTelegramToTheManagers(rec.idapp, msg);
tools.writeSostituzioniLog(msg);
}
// Elimina anche la Nave se è temporanea!
const arrnave = await Nave.find({ idapp: rec.idapp, ind_order: rec.ind_order, num_tess: rec.num_tess });
for (const mynave of arrnave) {
if (!!mynave) {
if (!await Nave.isDefinitiva(rec.idapp, mynave)) {
await Nave.findByIdAndUpdate(mynave.id, { $set: { ind_order: -1 } });
break;
}
}
}
}
if (!!ris) {
if (notifBot) {

View File

@@ -9,9 +9,6 @@ const { authenticate } = require('../middleware/authenticate');
const { User } = require('../models/user');
const { Nave } = require('../models/nave');
const { Flotta } = require('../models/flotta');
const { NavePersistente } = require('../models/navepersistente');
const { MsgTemplate } = require('../models/msg_template');
const mongoose = require('mongoose').set('debug', false)
@@ -137,76 +134,6 @@ router.post('/msgflotta', authenticate, async (req, res) => {
});
router.post('/getnave', authenticate, async (req, res) => {
const idapp = req.body.idapp;
const riga = req.body.riga;
const col = req.body.col;
const riga1don = req.body.riga1don;
const col1don = req.body.col1don;
const ind_order = req.body.ind_order;
const nave = await NavePersistente.findByRigaCol(idapp, riga, col);
if (!!nave) {
nave._doc.rec = await Nave.getNaveByRigaCol(idapp, riga1don, col1don);
if (ind_order >= 0)
nave._doc.ind_order = ind_order;
nave._doc.listadonatoridelsognatore = await Nave.getDonatoridelSognatore(idapp, riga1don, col1don);
}
const navi_partenza = await NavePersistente.findAllIdApp(idapp);
ris = { nave, navi_partenza };
if (ris)
res.send({ code: server_constants.RIS_CODE_OK, ris });
else
res.status(400).send(e);
});
router.post('/getnavi', authenticate, async (req, res) => {
const idapp = req.body.idapp;
const { Flotta } = require('../models/flotta');
let arrnavi = await NavePersistente.findAllIdApp(idapp);
// let arrnavi = await NavePersistente.find({idapp, date_gift_chat_open: { $gte: tools.IncDateNow(-1000 * 3600 * 24 * 7 ) } }).sort({ riga: 1, col: 1 });
for (nave of arrnavi) {
//nave.rec = await Nave.getNaveByRigaCol(idapp, nave.riga, nave.col);
nave._doc.rec = {
donatore: {},
mediatore: null
};
let riganave = nave.riga;
let colnave = nave.col;
// if (riganave < 4) {
// riganave = 4;
// colnave = 1;
// }
// nave._doc.rec.donatore.navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, riganave, colnave, 0);
nave._doc.rec.donatore.navepersistente = await NavePersistente.findOne({ idapp, riga: riganave, col: colnave });
if (!!nave._doc.rec) {
if (!!nave._doc.rec.donatore.navepersistente)
nave._doc.rec.donatore.flotta = await Flotta.getFlottaByNavePersistente(idapp, nave._doc.rec.donatore.navepersistente);
}
}
const navi_partenza = await NavePersistente.findAllIdApp(idapp);
ris = { arrnavi, navi_partenza };
if (ris)
res.send({ code: server_constants.RIS_CODE_OK, ris });
else
res.status(400).send(e);
});
router.post('/getmsg_templates', authenticate, async (req, res) => {
const idapp = req.body.idapp;
@@ -232,84 +159,6 @@ router.post('/getflotte', authenticate, async (req, res) => {
});
router.post('/getflotta', authenticate, async (req, res) => {
const idapp = req.body.idapp;
const riga = req.body.riga;
const col_prima = req.body.col_prima;
const col_ultima = req.body.col_ultima;
// const ris2 = await NavePersistente.aggiornaFlottaByNavePersistente(idapp, {riga, col1don: col_prima });
let ris = await Nave.getFlotta(idapp, riga, col_prima, col_ultima);
ris.flotta._doc.log_attivita = tools.readFlottaLog(idapp, ris.flotta.riga, ris.flotta.col_prima);
if (!!ris)
res.send({ code: server_constants.RIS_CODE_OK, flotta: ris.flotta, arrdonatori: ris.arrdonatori, arrmediatori: ris.arrmediatori });
else
res.status(400).send(e);
});
router.post('/getdoninavi', authenticate, async (req, res) => {
const idapp = req.body.idapp;
const ricalcola = req.body.ricalcola;
const showall = req.body.showall;
let arrnavi = null;
if (showall)
arrnavi = await NavePersistente.findAllIdApp(idapp);
else
arrnavi = await NavePersistente.find({idapp, date_gift_chat_open: { $gte: tools.IncDateNow(-1000 * 3600 * 24 * 10 ) } }).sort({ riga: 1, col: 1 });
let test = false;
//arrnavi.push({ riga: indriga, col: indcol, rigadon: indriga + 3, coldon: (indcol * 8) - 7 });
try {
if (ricalcola) {
let index = 1;
for (nave of arrnavi) {
nave = await Nave.ricalcolaNave(idapp, nave, 0, 0, ricalcola, index);
index++;
}
} else {
// arrnavi = await NavePersistente.findAllIdApp(idapp);
let index = 1;
for (nave of arrnavi) {
if (nave.provvisoria || nave.DoniTotali !== nave.DoniConfermati) {
nave._doc.rec = await Nave.getNaveByRigaCol(idapp, nave.riga1don, nave.col1don);
} else {
let rigapos = nave.riga1don;
let colpos = nave.col1don;
if (rigapos < 4) {
rigapos = 4;
colpos = 1;
}
nave._doc.rec = {};
nave._doc.rec.donatore = {};
nave._doc.rec.donatore.navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, rigapos, colpos, tools.Placca.SONOFUOCO);
index++;
}
if (index > 8 * 6 ) {
break;
}
}
}
ris = { arrnavi };
if (ris)
res.send({ code: server_constants.RIS_CODE_OK, ris });
else
res.status(400).send(e);
} catch (e) {
console.log(e.message)
}
});
router.post('/getdata', authenticate, async (req, res) => {
const idapp = req.body.idapp;

View File

@@ -15,7 +15,7 @@ const {authenticate, authenticate_noerror} = require(
'../middleware/authenticate');
const {ObjectID} = require('mongodb');
const {ListaIngresso} = require('../models/listaingresso');
// const {ListaIngresso} = require('../models/listaingresso');
const {Graduatoria} = require('../models/graduatoria');
const mongoose = require('mongoose').set('debug', false);
@@ -34,9 +34,7 @@ if (!fs.existsSync(folder)) {
const _ = require('lodash');
const {User} = require('../models/user');
const {Nave} = require('../models/nave');
const {Flotta} = require('../models/flotta');
const {NavePersistente} = require('../models/navepersistente');
const {MyGroup} = require('../models/mygroup');
// const { ExtraList } = require('../models/extralist');
const {Booking} = require('../models/booking');
const {Operator} = require('../models/operator');
@@ -103,7 +101,6 @@ const UserCost = {
'profile.paymenttypes'],
};
router.post(process.env.LINKVERIF_REG, (req, res) => {
const body = _.pick(req.body, ['idapp', 'idlink']);
const idapp = body.idapp;
@@ -222,6 +219,8 @@ function getTableByTableName(tablename) {
let mytable = '';
if (tablename === 'users')
mytable = User;
else if (tablename === 'mygroups')
mytable = MyGroup;
else if (tablename === 'tessitura')
mytable = Tessitura;
// else if (tablename === 'extralist')
@@ -294,16 +293,12 @@ function getTableByTableName(tablename) {
mytable = Permission;
else if (tablename === 'mailinglist')
mytable = MailingList;
else if (tablename === 'navi')
mytable = Nave;
else if (tablename === 'flotte')
mytable = Flotta;
else if (tablename === 'msg_templates')
mytable = MsgTemplate;
else if (tablename === 'navepersistente')
mytable = NavePersistente;
else if (tablename === 'listaingressos')
mytable = ListaIngresso;
// else if (tablename === 'listaingressos')
// mytable = ListaIngresso;
else if (tablename === 'graduatorias')
mytable = Graduatoria;
else if (tablename === 'skills')
@@ -365,6 +360,23 @@ router.post('/settable', authenticate, (req, res) => {
}
}
if (shared_consts.TABLES_USER_INCLUDE_MY.includes(params.table)) {
if (!mydata.admins) {
mydata.admins = [];
} else {
const arrnew = [];
for (const username of mydata.admins) {
arrnew.push({username});
}
mydata.admins = arrnew;
}
const indfind = mydata.admins.findIndex((rec) => (rec.username === req.user.username));
if (indfind < 0) {
mydata.admins.push({_id: new ObjectID(), username: req.user.username});
}
}
delete mydata['__v'];
delete mydata['__proto__'];
@@ -627,7 +639,8 @@ router.patch('/chval', authenticate, async (req, res) => {
if (mydata.table === shared_consts.TAB_SITES) {
if (shared_consts.SITES_KEY_TO_CRYPTED in fieldsvalue) {
fieldsvalue[shared_consts.SITES_KEY_TO_CRYPTED] = tools.cryptdata(fieldsvalue[shared_consts.SITES_KEY_TO_CRYPTED]);
fieldsvalue[shared_consts.SITES_KEY_TO_CRYPTED] = tools.cryptdata(
fieldsvalue[shared_consts.SITES_KEY_TO_CRYPTED]);
}
}
@@ -810,272 +823,7 @@ router.patch('/callfunz', authenticate, async (req, res) => {
let fieldsvalue = {};
if (mydata.myfunc === shared_consts.CallFunz.SOSTITUISCI) { // SOSTITUISCI
let username_da_sostituire = mydata.data.username_da_sostituire;
let myuservecchio = await User.findOne(
{idapp, username: username_da_sostituire});
let mianavedasost = await Nave.findOne(
{idapp, riga: mydata.data.riga, col: mydata.data.col});
if (!!mianavedasost) {
// Sostituisci l'Utente
let myusernuovo = await User.getUserShortDataByUsername(idapp,
mydata.data.username);
let navepersistente = await NavePersistente.findByRigaColByDonatore(
idapp, mydata.data.riga, mydata.data.col, 0);
if (myusernuovo) {
if (!mydata.data.AddImbarco && mianavedasost.ind_order > 0) {
// Controlla prima se è in una Nave Temporanea, allora lo elimina dall'ultima Nave Temporanea
let miaarrnavi = await Nave.getArrPosizioniByUsername(idapp,
username);
if (miaarrnavi) {
miaarrnavi = miaarrnavi.reverse(); // parto dall'ultima
for (const mianave of miaarrnavi) {
let persistente = await NavePersistente.findByRigaColByDonatore(
idapp, mianave.riga, mianave.col, 0);
if (persistente.provvisoria) {
fieldsvalue = {
ind_order: -1,
};
let ris = await Nave.findByIdAndUpdate(mianave._id,
{$set: fieldsvalue});
if (!!ris) {
// rimosso++;
break; // Rimuovilo solo 1 !
}
}
}
}
}
if (mianavedasost.ind_order >= 0) {
// ELIMINO LA LISTAINGRESSO CHE STO SOSTITUENDO (SOLO SE NON VIENE USATA DA ALTRA NAVE!)
let eliminatoingr = await ListaIngresso.eliminaListaIngresso(idapp,
mianavedasost.ind_order, req, mianavedasost.num_tess);
if (!eliminatoingr) {
return res.send({
code: server_constants.RIS_CODE_ERR,
msg: 'La Sostituzione non può avvenire ! Contattare Paolo. (ind_order=' +
mianavedasost.ind_order + ')',
});
}
}
if (!!myuservecchio) {
if (mydata.data.notifBot) {
const mydatamsg = {
tipomsg: tools.TipoMsg.SEND_MSG_A_UTENTE_SOSTITUITO,
navemediatore: {
riga: navepersistente.riga,
col: navepersistente.col,
},
};
mydatamsg.flotta = await Flotta.getFlottaByNavePersistente(idapp,
navepersistente);
const rismsg = await telegrambot.getMsgByTipoMsg(mydatamsg,
myuservecchio.lang, myuservecchio, false);
if (!!rismsg) {
let messaggio = rismsg.body;
// let mytitle = rismsg.title;
if (!!messaggio) {
await telegrambot.sendMsgTelegram(idapp, myusernuovo.username,
messaggio);
}
}
}
// Se ha gia delle altre navi, non cancellarlo!
if (!await Nave.checkIfMadeGift(idapp, myuservecchio.username)) {
if (mydata.data.deleteUser && mianavedasost.ind_order > 0) {
// Metti Deleted allo User
fieldsvalue = {
deleted: true,
date_deleted: new Date(),
};
await User.findByIdAndUpdate(myuservecchio.id,
{$set: fieldsvalue});
await telegrambot.sendMsgTelegramToTheManagers(idapp,
`L\'utente ${myuservecchio.name} ${myuservecchio.surname} (${myuservecchio.username}) è stato cancellato (nascosto) perchè sostituito (da ${req.user.name} ${req.user.surname} )`);
}
}
}
let ind_order = -1;
let myingr = null;
// Estrai un ind_order dalla Lista, se era ancora in attesa
if (!mydata.data.AddImbarco)
myingr = await ListaIngresso.findOne(
{idapp, added: false, username: myusernuovo.username});
if (!!myingr) {
ind_order = myingr.ind_order;
myingr.added = true;
await myingr.save();
} else {
// Crea un nuovo Ingresso
myingr = await ListaIngresso.addUserInListaIngresso(idapp,
myuser.username, myuser.username, myuser.lang, false, true,
null, null, true);
ind_order = myingr.ind_order;
await myingr.save();
}
// Togliolo dalla Graduatoria!
await Graduatoria.findOneAndUpdate({
idapp,
idListaIngresso: myingr._id,
}, {$set: {ind_order: -1}}, {new: false});
// Aggiorna la Nave con il Nuovo
fieldsvalue = {
ind_order,
};
const dachi = req.user.name + ' ' + req.user.surname;
return await Nave.findByIdAndUpdate(mianavedasost.id,
{$set: fieldsvalue}).then(async (nave) => {
// tools.mylogshow(' REC TO MODIFY: ', rec);
if (!nave) {
return res.status(404).send();
} else {
const mydatamsg = {
tipomsg: tools.TipoMsg.SEND_MSG_EFFETTUA_IL_DONO,
navemediatore: {
riga: navepersistente.riga,
col: navepersistente.col,
},
};
mydatamsg.flotta = await Flotta.getFlottaByNavePersistente(idapp,
navepersistente);
const rismsg = await telegrambot.getMsgByTipoMsg(mydatamsg,
myusernuovo.lang, myusernuovo, false);
let messaggio = rismsg.body;
let mytitle = rismsg.title;
// const myplacca = await Nave.getNavePos(idapp, navepersistente.riga, navepersistente.col);
// messaggio += tools.ACAPO + myplacca;
let testostaff = '';
if (mydata.notifBot)
testostaff = mydata.notifBot.txt;
const mymsg = testostaff + ' ' + myusernuovo.name + ' ' +
myusernuovo.surname + ' [da ' + dachi + ']' + tools.ACAPO +
'Inviato messaggio: ' + messaggio;
if (mydata.data.notifBot) {
await telegrambot.sendMsgTelegram(idapp, myusernuovo.username,
messaggio);
if (mydata.data.inviaemail) {
await sendemail.sendEmail_ByText(myusernuovo.lang,
myusernuovo.email, myusernuovo, idapp, {
emailbody: messaggio,
emailtitle: mytitle,
});
}
await telegrambot.sendMsgTelegramToTheManagers(idapp,
testostaff);
await telegrambot.sendMsgTelegram(idapp, req.user.username,
testostaff);
// await telegrambot.sendMsgTelegram(idapp, req.user.username, myplacca);
} else {
tools.writeManagersLog(mymsg);
}
const msgsost = '[NAVE ' + navepersistente.riga + '.' +
navepersistente.col + '] Sostituito ' +
myuservecchio.username + ' (' + myuservecchio.name + ' ' +
myuservecchio.surname + ') ' + ' con -> ' +
myusernuovo.username + ' (' + myusernuovo.name + ' ' +
myusernuovo.surname + '' +
') [Posiz. ' + nave.riga + '.' + nave.col + ' ind_order=' +
nave.ind_order + '] ' + ' [da ' + dachi + ']';
tools.writeSostituzioniLog(msgsost);
tools.writeFlottaLog(idapp, msgsost, mydatamsg.flotta.riga,
mydatamsg.flotta.col_prima);
await telegrambot.sendMsgTelegramToTheManagers(idapp, msgsost,
false);
// const nomecognomeprima = myuser.name + ' ' + myuser.surname + '(' + myuser.username + ')';
// const nomecognomenuovo = await User.getNameSurnameByUsername(idapp,);
res.send({code: server_constants.RIS_CODE_OK, msg: ''});
}
}).catch((e) => {
tools.mylogserr('Error patch USER: ', e.message);
res.status(400).send();
});
}
}
} else if (mydata.myfunc ===
shared_consts.CallFunz.AGGIUNGI_NUOVO_IMBARCO) {
// Ottieni il prossimo Numero di Tessitura
//let num_tess = await Nave.getNextNumTess(idapp, ind_order);
// const num_tess = 1;
/*
let listaingr = await ListaIngresso.find({ idapp, ind_order }).sort({ num_tess: 1 });
const trovato = listaingr.find((rec) => rec.num_tess === num_tess);
if (trovato) {
num_tess = listaingr.slice(-1)[0].num_tess + 2;
}
*/
// metti l'invitante inizialmente a Te stesso !
const invitante_username = req.body.data.invitante_username;
await ListaIngresso.addUserInListaIngresso(idapp, username,
invitante_username, myuser.lang, true, true);
let arrimbarchi = await ListaIngresso.findAllByUsername(idapp, username);
return res.send({code: server_constants.RIS_CODE_OK, arrimbarchi});
} else if (mydata.myfunc === shared_consts.CallFunz.CANCELLA_IMBARCO) {
const myrec = await ListaIngresso.getIngrEUserByFilter(idapp,
{idapp, _id: ObjectID(mydata.data.id)});
if (!!myrec) {
await ListaIngresso.find({_id: mydata.data.id});
const risdel = await ListaIngresso.eliminaListaIngresso(idapp,
mydata.ind_order, req, mydata.data.num_tess);
if (risdel) {
return res.send({code: server_constants.RIS_CODE_OK, msg: ''});
}
}
} else if (mydata.myfunc === shared_consts.CallFunz.ZOOM_GIA_PARTECIPATO) {
if (mydata.myfunc === shared_consts.CallFunz.ZOOM_GIA_PARTECIPATO) {
if (!!myuser.username) {
let FormDaMostrare = telegrambot.getFormDaMostrare(idapp, mydata.myfunc,
@@ -1152,7 +900,8 @@ router.delete('/delrec/:table/:id', authenticate, async (req, res) => {
let cancellato = false;
// tools.NotifyIfDelRecord(tablename);
//++Tools: Notify...
tools.NotifyIfDelRecord(tablename);
if (!User.isAdmin(req.user.perm) && !User.isManager(req.user.perm)) {
if (tablename === 'users') {
@@ -1276,7 +1025,8 @@ function load(req, res, version) {
let gestoredelSito = '0';
if (!!req.user) {
gestoredelSito = (User.isAdmin(req.user.perm) || User.isManager(req.user.perm) ||
gestoredelSito = (User.isAdmin(req.user.perm) ||
User.isManager(req.user.perm) ||
User.isEditor(req.user.perm)) ? '1' : '0';
}
@@ -1284,7 +1034,6 @@ function load(req, res, version) {
// tools.mylog('loadsite : ', req.params);
let bookedevent = [];
// let msgs = [];
@@ -1295,7 +1044,8 @@ function load(req, res, version) {
if (userId !== '0') {
// LOGGED WITH USERID
bookedevent = Booking.findAllByUserIdAndIdApp(userId, idapp, gestoredelSito);
bookedevent = Booking.findAllByUserIdAndIdApp(userId, idapp,
gestoredelSito);
}
// Extract all the todos of the userId only
@@ -1357,7 +1107,7 @@ function load(req, res, version) {
orderscart = OrdersCart.getOrdersCartByUserId(req.user.id, idapp, 0);
}
}
let askedfriends = []
let askedfriends = [];
let myuserextra = null;
if (req.user) {
// askedfriends = User.getAskedFriendsByUsername(idapp, req.user.username);
@@ -1506,7 +1256,6 @@ router.get(process.env.LINK_CHECK_UPDATES, authenticate, async (req, res) => {
if (User.isAdmin(req.user.perm) || User.isEditor(req.user.perm) ||
User.isManager(req.user.perm)) {
// Send UsersList
usersList = User.getUsersList(req.user.idapp);
// usersList = null;
@@ -1621,7 +1370,8 @@ function uploadFile(req, res, version) {
form.on('file', async function(name, file) {
try {
console.log('Uploaded ' + file.name);
const mydir = tools.getdirByIdApp(idapp) + dirmain + server_constants.DIR_UPLOAD + '/' + dir;
const mydir = tools.getdirByIdApp(idapp) + dirmain +
server_constants.DIR_UPLOAD + '/' + dir;
// Create Dir if doesn't exist:
tools.mkdirpath(mydir);
@@ -1634,7 +1384,7 @@ function uploadFile(req, res, version) {
// filename = uuidv4() + ext;
//}
file.name = filename
file.name = filename;
let newname = mydir + '/' + file.name;
let resized_img = mydir + '/' + server_constants.PREFIX_IMG + filename;
@@ -1643,7 +1393,7 @@ function uploadFile(req, res, version) {
// For local: ... resolve this... sending through the static folder...
// res.sendFile(path.resolve(filename));
oldpath = file.path
oldpath = file.path;
file.path = newname;
// Move in the folder application !
@@ -1675,11 +1425,11 @@ function uploadFile(req, res, version) {
const ris = await resizer(newname, setup_image_compress);
if (ris) {
tools.delete(newname, false, () => {})
tools.delete(newname, false, () => {});
tools.move(resized_img, newname, (err) => {
})
});
}
} catch (e) {
console.error('newname', e);

View File

@@ -0,0 +1,39 @@
const express = require('express');
const router = express.Router();
const tools = require('../tools/general');
const server_constants = require('../tools/server_constants');
const { authenticate } = require('../middleware/authenticate');
const mongoose = require('mongoose').set('debug', false)
const { User } = require('../models/user');
const { MyGroup } = require('../models/mygroup');
const _ = require('lodash');
const { ObjectID } = require('mongodb');
router.post('/load', authenticate, async (req, res) => {
const idapp = req.body.idapp;
const groupname = req.body.groupname;
try{
data = await MyGroup.findOne({idapp, groupname}).lean();
res.send(data);
}catch (e) {
console.error('Error in MyGroups');
return res.status(400).send(e);
}
const ris = null
});
module.exports = router;

View File

@@ -10,8 +10,8 @@ const { authenticate } = require('../middleware/authenticate');
const mongoose = require('mongoose').set('debug', false)
const { User } = require('../models/user');
const { Nave } = require('../models/nave');
const { ListaIngresso } = require('../models/listaingresso');
// const { Nave } = require('../models/nave');
// const { ListaIngresso } = require('../models/listaingresso');
const _ = require('lodash');
@@ -26,8 +26,8 @@ router.post('/load', async (req, res) => {
let datastat = {
num_reg: await User.getUsersRegistered(idapp),
num_passeggeri: await Nave.getTotInLista(idapp),
num_imbarcati: await ListaIngresso.getTotInLista(idapp),
num_passeggeri: await 0,
num_imbarcati: 0,
email_non_verif: await User.getEmailNotVerified(idapp),
num_teleg_attivo: await User.getUsersTelegramAttivo(idapp),
num_teleg_pending: await User.getUsersTelegramPending(idapp),
@@ -39,8 +39,8 @@ router.post('/load', async (req, res) => {
arr_nations: await User.findAllDistinctNationality(idapp),
numreg_untilday: await User.calcnumRegUntilDay(idapp),
reg_daily: await User.calcRegDaily(idapp),
imbarcati_daily: await ListaIngresso.ImbarcatiDaily(idapp),
imbarcati_weekly: await ListaIngresso.ImbarcatiWeekly(idapp),
imbarcati_daily: 0,
imbarcati_weekly: 0,
reg_weekly: await User.calcRegWeekly(idapp),
lastsreg: await User.getLastUsers(idapp),
checkuser: await User.checkUser(idapp, username),

View File

@@ -33,6 +33,8 @@ const Product = require('../models/product');
const Variant = require('../models/variant');
const TypedError = require('../modules/ErrorHandler');
const { MyGroup } = require('../models/mygroup');
const mongoose = require('mongoose').set('debug', false);
const Subscription = mongoose.model('subscribers');
@@ -491,6 +493,21 @@ router.post('/friends', authenticate, (req, res) => {
});
router.post('/groups', authenticate, (req, res) => {
const username = req.user.username;
idapp = req.body.idapp;
locale = req.body.locale;
return MyGroup.getGroupsByUsername(idapp, username).then((ris) => {
res.send(ris);
}).catch((e) => {
tools.mylog('ERRORE IN groups: ' + e.message);
res.status(400).send();
});
});
router.post('/friends/cmd', authenticate, (req, res) => {
const usernameLogged = req.user.username;
const idapp = req.body.idapp;
@@ -516,6 +533,31 @@ router.post('/friends/cmd', authenticate, (req, res) => {
});
router.post('/groups/cmd', authenticate, (req, res) => {
const usernameLogged = req.user.username;
const idapp = req.body.idapp;
const locale = req.body.locale;
const usernameOrig = req.body.usernameOrig;
const groupnameDest = req.body.groupnameDest;
const cmd = req.body.cmd;
const value = req.body.value;
if (!User.isAdmin(req.user.perm) || !User.isManager(req.user.perm)) {
// If without permissions, exit
if (usernameOrig !== usernameLogged) {
return res.status(404).send({code: server_constants.RIS_CODE_ERR_UNAUTHORIZED, msg: ''});
}
}
return MyGroup.setGroupsCmd(idapp, usernameOrig, groupnameDest, cmd, value).then((ris) => {
res.send(ris);
}).catch((e) => {
tools.mylog('ERRORE IN groups/cmd: ' + e.message);
res.status(400).send();
});
});
async function eseguiDbOp(idapp, mydata, locale) {
let ris = await User.DbOp(idapp, mydata);
@@ -529,7 +571,7 @@ async function eseguiDbOp(idapp, mydata, locale) {
// } else if (mydata.dbop === 'rigeneraTutto') {
// await ListaIngresso.Esegui_CronTab(idapp, mydata);
} else if (mydata.dbop === 'visuStat') {
ris = await User.visuUtentiNonInNavi(idapp);
// ris = await User.visuUtentiNonInNavi(idapp);
//} else if (mydata.dbop === 'creaNavi') {
// const num = await Nave.generaNave(idapp, mydata, false);
// ris = { num };

View File

@@ -96,6 +96,7 @@ myLoad().then(ris => {
const projects_router = require('./router/projects_router');
const report_router = require('./router/report_router');
const users_router = require('./router/users_router');
const mygroups_router = require('./router/mygroups_router');
const iscrittiConacreis_router = require('./router/iscrittiConacreis_router');
const site_router = require('./router/site_router');
const admin_router = require('./router/admin_router');
@@ -148,6 +149,7 @@ myLoad().then(ris => {
app.use('/test', test_router);
app.use('/projects', projects_router);
app.use('/users', users_router);
app.use('/mygroup', mygroups_router);
app.use('/iscritti_conacreis', iscrittiConacreis_router);
app.use('/report', report_router);
app.use('/site', site_router);

View File

@@ -12,17 +12,14 @@ const printf = require('util').format;
const {User} = require('../models/user');
const {CalZoom} = require('../models/calzoom');
const {Nave} = require('../models/nave');
const {MyBot} = require('../models/bot');
const shared_consts = require('../tools/shared_nodejs');
const {ListaIngresso} = require('../models/listaingresso');
// const {ListaIngresso} = require('../models/listaingresso');
const {MsgTemplate} = require('../models/msg_template');
const emoji = require('node-emoji');
const {Flotta} = require('../models/flotta');
const i18n = require('i18n');
let url = process.env.URL || 'https://<PUBLIC-URL>';
@@ -2498,21 +2495,8 @@ class Telegram {
} else if (destin === Destin.NO_7_REQ) {
invia = !await User.isUserQualified7(this.idapp,
utente.username);
} else if (destin === Destin.NO_9_REQ) {
invia = !await User.isUserQualified9(this.idapp,
utente.username);
} else if (destin === Destin.NESSUN_IMBARCO_7REQ) {
invia = await User.NessunaNavePresenteByUsername(this.idapp,
utente.username);
} else if (destin === Destin.MSG_TO_NAVE) {
invia = !await Nave.findDonatoreByNave(this.idapp,
rec.extraparam);
} else if (destin === Destin.SI_INVITATI_NO_7REQ_INVITATI) {
const numinvitati = await ListaIngresso.getnumInvitati(
this.idapp, utente.username);
const numinvitatiattivi = await ListaIngresso.getnumInvitatiAttivi(
this.idapp, utente.username);
invia = (numinvitati >= 2) && (numinvitatiattivi < 2);
// invia = !await Nave.findDonatoreByNave(this.idapp, rec.extraparam);
}
// TEST invia = true;
@@ -3371,13 +3355,7 @@ if (true) {
// Controlla se è qualificato!
const mydata = tools.AddDate(user.date_reg, 7);
const newrecingr = await ListaIngresso.addUserInListaIngresso(
user.idapp, user.username, user.aportador_solidario,
user.lang, true, true, mydata);
bot.editMessageText(
tools.gettranslate('ADDED_TOLISTAINGRESSO', user.lang),
opts);
// bot.editMessageText(tools.gettranslate('ADDED_TOLISTAINGRESSO', user.lang), opts);
} else if (data.action === InlineCmd.NON_VOGLIO_IMBARCARMI) {
await User.NonVoglioImbarcarmi(user.idapp, user.username);

View File

@@ -838,6 +838,53 @@ module.exports = {
},
sendNotificationByGroupname: async function(idapp, groupname, cmd, telegram) {
var {User} = require('../models/user');
var {MyGroup} = require('../models/mygroup');
const group = await MyGroup.findOne({idapp, groupname}, {_id: 1, admins: 1});
if (!group)
return;
// Send msg to Admins
const arrusernameAdmins = group.admins;
for (const username of arrusernameAdmins) {
const user = await User.get
let userId = user._id;
let lang = user.lang;
let title = this.getNomeAppByIdApp(idapp);
let descr = '';
let openUrl = '/';
let tag = '';
let actions = [];
if (cmd) {
if (cmd === shared_consts.FRIENDSCMD.REQFRIEND) {
descr = printf(this.get__('RICHIESTA_AMICIZIA', lang), username);
openUrl = '/my/' + username;
tag = 'reqfriends';
}
}
if (userId) {
this.sendNotificationToUser(userId, title, descr, openUrl, '', tag,
actions);
}
if (telegram) {
const telegrambot = require('../telegram/telegrambot');
const idtelegram = await User.TelegIdByUsername(idapp, username);
await telegrambot.sendMsgTelegramByIdTelegram(idapp, idtelegram, descr);
}
}
},
// **********************
// SORT WITH PREV_ID
// **********************
@@ -2099,7 +2146,7 @@ module.exports = {
NotifyIfDelRecord(table) {
if ((table === 'users') || (table === 'extralist') ||
(table === 'listaingressos') || (table === 'graduatorias')) {
(table === 'groups') || (table === 'graduatorias')) {
return true;
}

View File

@@ -45,6 +45,17 @@ module.exports = {
FIND_PEOPLE: 166,
},
GROUPSCMD: {
SETTRUST: 1121,
REQGROUP: 1125,
SETGROUP: 1132,
REMOVE_FROM_MYGROUP: 1144,
REFUSE_REQ_GROUP: 1145,
CANCEL_REQ_GROUP: 1146,
BLOCK_GROUP: 1155,
FIND_GROUP: 1166,
},
REPORT_FILT_RESP: 1,
REPORT_FILT_ATTIVITA: 2,
@@ -69,8 +80,9 @@ module.exports = {
PARAM_SHOW_PROVINCE: 1,
TABLES_ID_NUMBER: ['permissions', 'levels', 'statusSkills', 'sectors', 'skills', 'subskills', 'cities', 'myskills'],
TABLES_USER_ID: ['myskills'],
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybots'],
TABLES_USER_ID: ['myskills', 'mygroups'],
TABLES_USER_INCLUDE_MY: ['mygroups'],
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybots', 'mygroups'],
TABLES_PERM_CHANGE_FOR_USERS: ['myskills'],
TABLES_PERM_NEWREC: ['skills', 'subskills'],