diff --git a/src/server/models/flotta.js b/src/server/models/flotta.js
deleted file mode 100755
index 62c186b..0000000
--- a/src/server/models/flotta.js
+++ /dev/null
@@ -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 };
-
-
diff --git a/src/server/models/graduatoria.js b/src/server/models/graduatoria.js
index 069b2e0..faef56c 100755
--- a/src/server/models/graduatoria.js
+++ b/src/server/models/graduatoria.js
@@ -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 {
diff --git a/src/server/models/listaingresso.js b/src/server/models/listaingresso.js
deleted file mode 100755
index d481637..0000000
--- a/src/server/models/listaingresso.js
+++ /dev/null
@@ -1,1219 +0,0 @@
-const bcrypt = require('bcryptjs');
-const mongoose = require('mongoose').set('debug', false)
-const validator = require('validator');
-const jwt = require('jsonwebtoken');
-const _ = require('lodash');
-
-const tools = require('../tools/general');
-
-const { ObjectID } = require('mongodb');
-
-const { Nave } = require('./nave');
-const { Graduatoria } = require('./graduatoria');
-
-const actions = require('../router/api/actions');
-
-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 ListaIngressoSchema = new mongoose.Schema({
- idapp: {
- type: String,
- required: true,
- },
- username: {
- type: String,
- },
- ind_order: {
- type: Number,
- },
- index: {
- type: Number,
- },
- invitante_username: {
- type: String,
- },
- date_added: {
- type: Date,
- },
- date_deleted: {
- type: Date,
- },
- added: { // Added into Programmation (Nave)
- type: Boolean,
- default: false,
- },
- num_tess: {
- type: Number,
- },
- navestr: {
- type: String,
- },
- note: {
- type: String,
- },
- deleted: {
- type: Boolean,
- default: false,
- }
-
-});
-
-ListaIngressoSchema.pre('save', async function (next) {
- if (this.isNew) {
- try {
- if (!this.ind_order) {
- const myrec = await ListaIngresso.findOne({ idapp: this.idapp }).limit(1).sort({ ind_order: -1 });
-
- if (!!myrec) {
- this.ind_order = myrec._doc.ind_order + 1;
- } else {
- this.ind_order = 1;
- }
- }
- } catch (e) {
- this.ind_order = 2;
- }
- }
-
- next();
-});
-
-
-// ListaIngressoSchema.methods.toJSON = function () {
-// const ListaIngresso = this;
-// const userObject = ListaIngresso.toObject();
-//
-// return _.pick(userObject, ['_id', ...shared_consts.fieldsUserToChange()]);
-// };
-//
-ListaIngressoSchema.statics.findByUsername = function (idapp, username) {
- const ListaIngresso = this;
-
- return ListaIngresso.findOne({
- 'idapp': idapp,
- 'username': username,
- });
-};
-
-ListaIngressoSchema.statics.getTotInLista = async function (idapp) {
- const ListaIngresso = this;
-
- const myfind = { idapp, added: false, deleted: false };
-
- return await ListaIngresso.count(myfind);
-};
-
-ListaIngressoSchema.statics.getImbarcatiDaily = function (idapp, nrec) {
-
- const query = [
- {
- $match: {
- idapp, deleted: false, date_added: { $gte: tools.IncDateNow(-(1000 * 60 * 60 * 24 * nrec)) },
- }
- },
- {
- $group: { _id: { $dateToString: { format: "%Y-%m-%d", date: "$date_added" } }, count: { $sum: 1 } }
- },
- {
- $sort: { _id: 1 }
- }
- ];
- return query
-};
-
-
-ListaIngressoSchema.statics.getImbarcatiWeekly = function (idapp, nrec) {
-
- const query = [
- {
- $match: {
- idapp, deleted: false, date_added: { $gte: tools.IncDateNow(-(1000 * 60 * 60 * 24 * nrec)) },
- }
- },
- {
- $group: { _id: { $dateToString: { format: "%Y-%U", date: "$date_added" } }, count: { $sum: 1 } }
- },
- {
- $sort: { _id: 1 }
- }
- ];
- return query
-};
-
-
-ListaIngressoSchema.statics.ImbarcatiWeekly = async function (idapp) {
- const ListaIngresso = this;
-
- return ListaIngresso.aggregate(ListaIngresso.getImbarcatiWeekly(idapp, 20 * 7))
- .then(ris => {
- return JSON.stringify(ris.slice(0, -1));
- });
-};
-
-ListaIngressoSchema.statics.ImbarcatiDaily = async function (idapp) {
- const ListaIngresso = this;
-
- return ListaIngresso.aggregate(ListaIngresso.getImbarcatiDaily(idapp, 30))
- .then(ris => {
- return JSON.stringify(ris.slice(0, -1));
- });
-};
-
-
-ListaIngressoSchema.statics.findByIndOrder = function (idapp, ind_order) {
- const ListaIngresso = this;
-
- try {
- return ListaIngresso.findOne({
- 'idapp': idapp,
- 'ind_order': ind_order,
- });
- } catch (e) {
-
- }
-};
-
-ListaIngressoSchema.statics.findByAllRecByUsername = function (idapp, username) {
- const ListaIngresso = this;
-
- try {
- return ListaIngresso.find({
- idapp,
- username,
- deleted: false
- });
- } catch (e) {
-
- }
-};
-
-ListaIngressoSchema.statics.findByUsernameETess = async function (idapp, username, num_tess) {
- const ListaIngresso = this;
-
- try {
- return await ListaIngresso.findOne({
- idapp,
- username,
- num_tess,
- });
- } catch (e) {
-
- }
-};
-
-ListaIngressoSchema.statics.findAllByUsername = function (idapp, username) {
- const ListaIngresso = this;
-
- try {
- return ListaIngresso.find({
- 'idapp': idapp,
- username,
- added: false, // NON QUELLI GIA INSERITI !
- $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
- });
- } catch (e) {
- console.error(e.message);
- }
-};
-
-ListaIngressoSchema.statics.deleteUserInListaIngresso = async function (idapp, username) {
- const ListaIngresso = this;
-
- return ListaIngresso.updateMany({
- idapp,
- username,
- }, { $set: { deleted: true } }, { new: false })
-
-};
-
-ListaIngressoSchema.statics.getNumDaImbarcare = async function (idapp) {
- const ListaIngresso = this;
-
- return await ListaIngresso.count({ idapp, added: false, deleted: false })
-
-};
-ListaIngressoSchema.statics.addUserInListaIngresso = async function (idapp, username, invitante_username, lang, addednowreal, nuovo, dateins, note, added, opt) {
- const ListaIngresso = this;
-
- const { User } = require('./user');
- const telegrambot = require('../telegram/telegrambot');
-
- try {
- let listaingresso = null;
- if (!nuovo) {
- listaingresso = await ListaIngresso.findByUsernameETess(idapp, username, 1);
- }
- // listaingresso = null; // TOGLIEREE
- if (!listaingresso) {
- listaingresso = new ListaIngresso({
- _id: new ObjectID(),
- idapp,
- username,
- num_tess: 1,
- date_added: new Date(),
- invitante_username,
- });
-
- if (!!note) {
- listaingresso.note = note;
- }
- if (!!added) {
- listaingresso.added = added;
- }
-
- if (!!dateins) {
- try {
- listaingresso.date_added = dateins;
- } catch (e) {
- listaingresso.date_added = new Date();
- }
- }
-
- if (listaingresso) {
- const ris = await listaingresso.save();
- if (addednowreal) {
- if (!!ris) {
-
- if (addednowreal) {
- // Aggiungilo anche nella Graduatoria !
- await Graduatoria.addSingoloInGraduatoria_InFondo(idapp, listaingresso);
- }
-
- const nome = await User.getNameSurnameByUsername(idapp, username);
- const numimbarcare = await ListaIngresso.getNumDaImbarcare(idapp);
- let msgtext = '🛳 ';
- msgtext += nome + ' (' + username + ') ' + tools.gettranslate('ADDED_TOLISTAINGRESSO', lang);
- await telegrambot.sendMsgTelegram(idapp, username, msgtext, false);
-
- msgtext = '🛳 ';
- if (nuovo) {
- msgtext += '🌠 ';
- }
-
- const msgadd = msgtext + ' [' + numimbarcare + '] Imbarcare ' + nome + ' (' + username + ') ';
-
- await telegrambot.sendMsgTelegramToTheManagers(idapp, msgadd, false); // Anche a STAFF
-
- if (!!opt) {
- if (!!opt.sendmsgtoinvitante) {
- if (opt.sendmsgtoinvitante) {
- // const nome = await User.getNameSurnameByUsername(idapp, invitante_username);
- // msgtext = '🔵 ' + nome + ' (' + username + ') ' + tools.gettranslate('ADDED_TOLISTAINGRESSO', lang);
- // await telegrambot.sendMsgTelegram(idapp, username, msgtext, true); // Anche a STAFF
- }
- }
- }
- }
- }
- return ris;
- }
- }
-
- const giapresente = await
- Nave.findOne({ idapp, ind_order, num_tess: 1 });
- if (!!giapresente) {
- // Era stato già aggiunto!
- let fields_to_update = { added: true };
- await
- ListaIngresso.findOneAndUpdate({ _id: listaingresso._id }, { $set: fields_to_update }, { new: false });
-
- return false;
- }
-
- return null;
-
- } catch (e) {
- console.error(e.message);
- }
- return null;
-}
-;
-
-
-function getQueryNumInvitati(myfilter, myobjField, myfilter2, mygroup) {
- const query = [
- { $match: myfilter },
- {
- $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"] } }
- },
- { $match: myfilter2 },
- ];
-
- if (!!mygroup) {
- query.push(
- { $group: mygroup }
- );
- }
-
- if (!!myobjField) {
- query.push(
- { $project: myobjField }
- );
- }
-
- return query;
-}
-
-function getQueryProj(myfilter, myobjField, myfilter2, mygroup) {
- const query = [
- { $match: myfilter },
- {
- $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"] } }
- },
- { $match: myfilter2 },
- ];
-
- if (!!mygroup) {
- query.push(
- { $group: mygroup }
- );
- }
-
- if (!!myobjField) {
- query.push(
- { $project: myobjField }
- );
- }
-
- return query;
-}
-
-function getQueryIndOrder(myfilter, myobjField, myfilter2, mygroup) {
- const query = [
- { $match: myfilter },
- {
- $lookup: {
- from: "users",
- as: "user",
- let: { ind_order: '$ind_order' },
- pipeline: [
- {
- $match: {
- $expr: {
- $and: [
- { $eq: ['$ind_order', '$$ind_order'] },
- { $eq: ['$idapp', myfilter.idapp] },
- ]
- }
- }
- }
- ]
- }
- },
- {
- $replaceRoot: { newRoot: { $mergeObjects: [{ $arrayElemAt: ["$user", 0] }, "$$ROOT"] } }
- },
- { $match: myfilter2 },
- ];
-
- if (!!mygroup) {
- query.push(
- { $group: mygroup }
- );
- }
-
- if (!!myobjField) {
- query.push(
- { $project: myobjField }
- );
- }
-
- return query;
-}
-
-
-/*
-ListaIngressoSchema.statics.getPosizioneInLista = async function (idapp, arrrec, ind_order, num_tess) {
-
-
- let posiz = 0;
- let totposiz = arrrec.length;
- let numNaviEntrato = 0;
-
- for (let ind = 0; ind < arrrec.length; ind++) {
- if (arrrec[ind].ind_order === ind_order && arrrec[ind].num_tess === num_tess) {
- posiz = ind;
- numNaviEntrato = arrrec[ind].numNaviEntrato;
- break;
- }
- }
-
- return { posiz: posiz + 1, totposiz, num_tess, numNaviEntrato }
-
-};
-*/
-
-ListaIngressoSchema.statics.showListaOrd = async function (idapp, solonuovi) {
- const ListaIngresso = this;
-
- arrrec = await ListaIngresso.getProssimiInLista(idapp, solonuovi);
-
- let mystr = '';
- let conta = 1;
- for (const rec of arrrec) {
- mystr += conta + '- ' + ' [' + rec.numinvitatiattivi + '-' + rec.numinvitati + '] (' + rec.index + ') ';
- mystr += ' {' + rec.numinvitatiattivireali + ',' + rec.numinvitatireali + '} ';
- mystr += ' [' + tools.getstrDateShort(rec.date_added, 'it') + '] ';
- mystr += rec.username + ' ' + rec.name + ' ' + rec.surname;
- mystr += ' inv = ' + rec.invitante_username;
- mystr += ' tess = ' + rec.num_tess;
- if (rec.added)
- mystr += ' (ADDED ++)';
-
- mystr += '\n';
- conta++;
- }
-
- return mystr;
-};
-
-
-ListaIngressoSchema.statics.getFieldsForSearch = function () {
- return [
- { field: 'ind_order', type: tools.FieldType.number },
- { field: 'username', type: tools.FieldType.string },
- { field: 'invitante_username', type: tools.FieldType.string },
- ]
-};
-
-ListaIngressoSchema.statics.executeQueryTable = function (idapp, params) {
- params.fieldsearch = this.getFieldsForSearch();
- return tools.executeQueryTable(this, idapp, params);
-};
-
-ListaIngressoSchema.statics.findAllIdApp = async function (idapp) {
- const ListaIngresso = this;
-
- const myfind = { idapp };
-
- return ListaIngresso.find(myfind, (err, arrrec) => {
- return arrrec
- });
-};
-
-function sortRec(rec) {
- return rec.sort(function (reca, recb) {
- // return Math.round((recb.numinvitatiattivi + recb.numinvitati) / recb.num_tess) - Math.round((reca.numinvitatiattivi + reca.numinvitati) / reca.num_tess);
- // return Math.round((recb.numinvitatiattivi + recb.numinvitati) / recb.indimbarco * 2) - Math.round((reca.numinvitatiattivi + reca.numinvitati) / reca.indimbarco * 2);
- // return Math.round((recb.numinvitatiattiviTot + recb.numinvitatiTot) / (recb.indimbarco + recb.numNaviEntrato * 2)) - Math.round((reca.numinvitatiattiviTot + reca.numinvitatiTot) / (reca.indimbarco + reca.numNaviEntrato * 2));
-
- // return ((recb.numinvitatiattiviTot - recb.numNaviEntrato * 2) - (recb.indimbarco - 1) * 2) + ((recb.numinvitatiTot - recb.numNaviEntrato * 2) - (recb.indimbarco - 1) * 2) /
- // (((reca.numinvitatiattiviTot - reca.numNaviEntrato * 2) - (reca.indimbarco - 1) * 2)) + ((reca.numinvitatiTot - reca.numNaviEntrato * 2) - (reca.indimbarco - 1) * 2);
-//
- //return Math.round(((recb.numinvitatiattiviTot * 2) + recb.numinvitatiTot) / (recb.indimbarco + recb.numNaviEntrato * 2)) - Math.round(((reca.numinvitatiattiviTot * 2) + reca.numinvitatiTot) / (reca.indimbarco + reca.numNaviEntrato * 2));
-
- });
-}
-
-ListaIngressoSchema.statics.getProssimiInLista = function (idapp, solonuovi) {
- return Graduatoria.findAllIdApp(idapp).sort({ index: 1 });
-};
-
-
-ListaIngressoSchema.statics.aggiornaRecListaIngr = async function (idapp, rec, arrindex) {
-
- rec.numNaviEntrato = await Nave.getnumNaviByUsername(idapp, rec.username);
-
- rec.numinvitati = await ListaIngresso.getnumInvitati(idapp, rec.username);
- rec.numinvitatiattivi = await ListaIngresso.getnumInvitatiAttivi(idapp, rec.username);
-
- const arrListaIngrUser = arrindex[rec.username];
- if (!arrListaIngrUser) {
- // arrindex[rec.username] = 1 + rec.numNaviEntrato;
- arrindex[rec.username] = 1;
- } else {
- arrindex[rec.username] += 1; // incrementa
- }
-
- rec.indimbarco = arrindex[rec.username];
- rec.numinvitatiTot = rec.numinvitati;
- rec.numinvitatiattiviTot = rec.numinvitatiattivi;
-
- // rec.punteggio = (((rec.numinvitatiattiviTot * 1.5) - (rec.numNaviEntrato * 2)) - (rec.indimbarco - 1) * 2) + ((rec.numinvitatiTot - (rec.numNaviEntrato * 2)) - (rec.indimbarco - 1) * 2);
-
- let val1 = (((rec.numinvitatiattiviTot * 1.5) - (rec.numNaviEntrato * 2)) - (rec.indimbarco - 1) * 2);
- let val2 = ((rec.numinvitatiTot - (rec.numNaviEntrato * 2)) - (rec.indimbarco - 1) * 2);
-
- if (val1 < 0)
- val1 = 0;
- if (val2 < 0)
- val2 = 0;
- if (val1 > 2)
- val1 = 2;
- if (val2 > 2)
- val2 = 2;
-
- rec.punteggio = val1 + val2;
-
- // if (rec.num_tess > 2) {
- rec.numinvitati = rec.numinvitati - (arrindex[rec.username] - 1) * 2;
- rec.numinvitatiattivi = rec.numinvitatiattivi - (arrindex[rec.username] - 1) * 2;
- // }
- if (rec.numinvitati < 0) {
- rec.numinvitati = 0;
- }
- if (rec.numinvitati > 2) {
- rec.numinvitati = 2;
- }
- if (rec.numinvitatiattivi < 0) {
- rec.numinvitatiattivi = 0;
- }
-
- if (rec.numinvitatiattivi > 2)
- rec.numinvitatiattivi = 2;
-
- return rec;
-};
-
-ListaIngressoSchema.statics.GeneraGraduatoria = async function (idapp, solonuovi) {
- const ListaIngresso = this;
-
- let myquery = '';
-
- //++Todo: DA TOGLIERE IL COMMENTO !!!
- if (await Graduatoria.isWorking(idapp))
- return;
-
- await Graduatoria.setWorking(idapp, true);
-
- let myobjField = {
- idapp: 1,
- index: 1,
- ind_order: 1,
- name: 1,
- surname: 1,
- username: 1,
- invitante_username: 1,
- navestr: 1,
- email: 1,
- lang: 1,
- num_tess: 1,
- date_added: 1,
- added: 1,
- deleted: 1,
- sospeso: 1,
- };
-
- try {
- let myfilter2 = {
-
- $or: [{ surname: { $exists: true } }, { deleted: { $exists: false } }, {
- deleted: {
- $exists: true,
- $eq: false
- }
- }],
- };
-
- if (solonuovi) {
- myquery = getQueryProj({
- 'idapp': idapp,
- ind_order: { $gte: 0 },
- added: false,
- deleted: false,
- }, myobjField, myfilter2);
- } else {
- myquery = getQueryProj({
- 'idapp': idapp,
- ind_order: { $gte: 0 },
- deleted: false,
- }, myobjField, myfilter2);
- }
-
- // await ListaIngresso.aggiornaIndex();
-
- arrrec = await ListaIngresso.aggregate(myquery)
- .then(async (arrlista) => {
-
- const { User } = require('../models/user');
-
- let arrindex = {};
-
- for (const rec of arrlista) {
-
- await ListaIngresso.aggiornaRecListaIngr(idapp, rec, arrindex)
-
- }
-
- /*if (arrlista) {
- arrlista = sortRec(arrlista);
- // arrlista.reverse();
- }*/
-
- const salvasudb = true;
- if (salvasudb) {
- numrec = await Graduatoria.addArrayInGraduatoria(idapp, arrlista);
- }
-
- await Graduatoria.AggiornaIndiceGraduatoria(idapp);
-
- await Graduatoria.setWorking(idapp, false);
-
- return numrec;
- }).catch((e) => {
- Graduatoria.setWorking(idapp, false);
-
- console.error(e.message);
- return null
- });
-
- } catch (e) {
- await Graduatoria.setWorking(idapp, false);
- }
-
- return arrrec;
-};
-
-ListaIngressoSchema.statics.eliminaListeIngressoNascoste = async function (idapp) {
- const ListaIngresso = this;
-
- const { User } = require('./user');
-
- const arrIngr = await ListaIngresso.find({ idapp, deleted: true });
-
- for (const ingr of arrIngr) {
- const user = await User.findOne({ idapp, old_order: ingr.ind_order });
- if (!user) {
- await ListaIngresso.deleteOne({ _id: ingr._id })
- }
- }
-
-};
-
-ListaIngressoSchema.statics.RendiVisibileIrecordNascosti = async function (idapp) {
- const ListaIngresso = this;
-
- const num = await ListaIngresso.updateMany({ idapp, deleted: true }, { $set: { deleted: false } });
-
-};
-
-
-ListaIngressoSchema.statics.creaTessituraeConv = async function (idapp) {
- const ListaIngresso = this;
-
- const { User } = require('./user');
-
- try {
- if (true) {
- // Elimina TUTTI i Cancellati (ma non Sospesi)
- await User.deleteMany({
- idapp,
- $and: [
- { deleted: { $exists: true, $eq: true } }, // cancellati
- { $or: [{ sospeso: { $exists: false } }, { sospeso: { $exists: true, $eq: false } }] }, // ma non sospeso
- ]
- });
-
-
- // Comprende anche i sospesi
- const arrusers = await User.find({
- idapp,
- });
-
-
- // Ricrea i record ListaIngresso (num_tess = 1), per ogni User
- for (const user of arrusers) {
- if (user.ind_order >= 0) {
- let ingr = new ListaIngresso();
- ingr._id = new ObjectID();
- ingr.idapp = idapp;
- ingr.ind_order = user.ind_order;
- ingr.username = user.username;
- ingr.invitante_username = user.aportador_solidario;
- ingr.num_tess = 1;
- // ingr.date_added = user.date_reg;
- ingr.added = false;
- const listaingr = await ListaIngresso.find({ idapp, ind_order: ingr.ind_order, num_tess: 1 });
-
- const trovatanave = await Nave.findOne({ idapp, ind_order: ingr.ind_order, num_tess: 1 })
- .then((mynave) => {
- if (!!mynave) {
- ingr.date_added = mynave.created;
- ingr.deleted = false;
- ingr.added = true;
- }
- return !!mynave;
- });
-
- if (listaingr.length === 0) {
- if (trovatanave)
- await ingr.save();
- else {
- // non ha ancora i 7 requisiti
- }
-
- } else {
-
- const listaingr2 = await ListaIngresso.find({ idapp, ind_order: ingr.ind_order });
-
- for (const ingr2 of listaingr2) {
-
- const ris = await ListaIngresso.findByIdAndUpdate(ingr2._id, {
- $set: {
- username: ingr.username,
- invitante_username: ingr.invitante_username
- }
- }, { new: false });
- }
-
- }
-
- // cancella in user i campi che non uso più
- await User.findByIdAndUpdate(user.id, {
- $set: {
- old_order: user.ind_order,
- ind_order: -1,
- // aportador_solidario: ''
- }
- })
- }
- }
- }
-
- // Comprende anche i sospesi
- const arrIdTelegramUsers = await User.find({ idapp, 'profile.teleg_id': { $gt: 1 } },
- { _id: 1, username: 1, aportador_solidario: 1, old_order: 1, lang: 1, date_reg: 1, 'profile.teleg_id': 1 })
- .sort({
- 'profile.teleg_id': 1,
- old_order: 1
- });
-
-
- // Crea altri ListaIngresso per gli utenti con i sottoaccount:
- /*
- const arrIdTelegramUsers = [];
- const arrusersAlreadyExist = [];
- for (const user of arrusers) {
- if (!!user.profile.teleg_id) {
- const trovati = arrusersAlreadyExist.find((rec) => rec.teleg_id === user.profile.teleg_id);
- if (trovati) {
- // era già presente, quindi lo aggiungo !
- const trovatoidteleg = arrIdTelegramUsers.find((rec) => rec.teleg_id === user.profile.teleg_id);
- if (!trovatoidteleg)
- arrIdTelegramUsers.push({ teleg_id: user.profile.teleg_id, username: user.username });
- } else {
- arrusersAlreadyExist.push({ teleg_id: user.profile.teleg_id, username: user.username });
- }
- }
- }
- */
-
- let index = 0;
-
- let teleg_id = 0;
- let username = '';
- let invitante_username = '';
- let invitante_degli_invitati = '';
-
- // Questi sono Utenti che hanno associato Telegram a più Account !
- for (const myuser of arrIdTelegramUsers) {
-
- // Crea 1 record listaingresso per ogni record aggiuntivo ! escludendo il primo!
- if (teleg_id !== myuser.profile.teleg_id && myuser.old_order > 0) {
- index = 0;
- teleg_id = myuser.profile.teleg_id;
- username = myuser.username;
- invitante_username = myuser.aportador_solidario;
- invitante_degli_invitati = myuser.username;
- }
-
- if (index > 0) {
- // Ind_order to find !
- const ind_order = myuser.old_order;
- //const findnave = await Nave.find({ idapp, ind_order: myuser.old_order, num_tess: 1 });
-
- if (ind_order >= 0) {
- const findlistaingresso = await ListaIngresso.findOne({ idapp, ind_order, num_tess: 1 });
-
- if (!!findlistaingresso) {
- await ListaIngresso.findByIdAndUpdate(findlistaingresso._id, {
- $set: {
- username,
- // invitante_username,
- note: findlistaingresso.username,
- }
- }, { new: false });
-
- await Nave.updateMany({ idapp, ind_order }, {
- $set: {
- note: findlistaingresso.username,
- }
- }, { new: false });
-
- // Assegna l'Invitante agli Invitati ! trova tutti gli invitati che hanno questo username
- const arrinvitati = await User.find({ idapp, aportador_solidario: myuser.username }, { username: 1 });
- for (const invitato of arrinvitati) {
- await User.changeInvitante(idapp, invitato.username, invitante_degli_invitati, ind_order)
- }
-
- // poi imposta come cancellato questo record
- await User.findByIdAndUpdate(myuser._id, { $set: { deleted: true, date_deleted: new Date() } });
- }
- }
-
- }
- index++;
- }
-
- // RIMUOVI IL CAMPO IND_ORDER SULLA USER!
- await User.update({}, { $unset: { ind_order: 1 } }, { multi: true });
-
- // Ricalcola il Campo Index
- await User.ricalcolaIndex(idapp);
-
-
- return index;
-
- } catch (e) {
- console.error(e.message);
- }
-
-};
-
-ListaIngressoSchema.statics.getListaTessByUsername = function (idapp, username) {
- const ListaIngresso = this;
-
- return ListaIngresso.find({
- idapp,
- username,
- // added: true,
- deleted: false,
- });
-
-
-};
-
-
-ListaIngressoSchema.statics.eliminaListaIngresso = async function (idapp, ind_order, req, num_tess) {
- const ListaIngresso = this;
-
- const telegrambot = require('../telegram/telegrambot');
-
- const myrec = await ListaIngresso.getIngrEUserByFilter(idapp, {
- idapp,
- ind_order
- });
-
- let filtro = { idapp, ind_order };
-
- // if (!!num_tess) {
- // filtro.num_tess = num_tess;
- // }
-
- // Controlla se ci sono piu navi
- const arrnavi = await Nave.find(filtro);
-
- const eliminaveramente = false;
-
- let nasc = '';
- let receliminato = false;
-
- let risdel = false;
- if (arrnavi.length === 1) {
- if (!arrnavi[0].made_gift) {
- // SE NON E' STATO CONFERMATO CHE HA FATTO IL DONO!
- // Solo 1 nave da cancellare, quindi cancello anche l'ingresso
- let filtrocanc = { idapp, ind_order };
- if (!!num_tess)
- filtrocanc.num_tess = num_tess;
-
- let recdel = null;
- if (eliminaveramente) {
- recdel = await ListaIngresso.deleteOne(filtrocanc);
- } else {
- nasc = '(nascosto)';
- let fieldsvalue = {
- date_deleted: new Date(),
- deleted: true
- };
- recdel = await ListaIngresso.findOneAndUpdate(filtrocanc, { $set: fieldsvalue }, { new: false });
- }
-
- risdel = !!recdel;
- receliminato = !!recdel;
- }
- } else {
- // non cancellare la listaingresso (perchè con lo stesso ind_order ho piu navi !
- risdel = true;
- receliminato = false;
- }
-
- let msg = '';
- if (risdel) {
- if (receliminato) {
- msg = 'Eliminato RECORD in Lista Imbarco ' + nasc + ' di ' + myrec.name + ' ' + myrec.surname + ' (ind_order=' + myrec.ind_order + ', num_tess=' + myrec.num_tess + ') [Num = ' + myrec.index + `] (da ${req.user.name} ${req.user.surname} )`;
- }
- await actions.doOtherThingsAfterDeleted('listaingressos', myrec, false, req)
- } else {
- msg = 'ATTENZIONE: il RECORD non è stato Eliminato perchè gia c\'era in altra NAVE -> di ' + myrec.name + ' ' + myrec.surname + ' (ind_order=' + myrec.ind_order + ', num_tess=' + myrec.num_tess + ') [Num = ' + myrec.index + `] (da ${req.user.name} ${req.user.surname} )`;
- }
-
- if (!!msg) {
- await telegrambot.sendMsgTelegramToTheManagers(myrec.idapp, msg);
- tools.writeSostituzioniLog(msg);
- }
-
- return risdel;
-};
-
-ListaIngressoSchema.statics.getarray = async function (idapp, filtri, myobjField) {
- const ListaIngresso = this;
-
- const { User } = require('./user');
-
- if (!await User.NuovoSistema(idapp)) {
- return await ListaIngresso.getarrayIndOrder(idapp, filtri, myobjField);
- }
-
-
- let myfilter2 = {
-
- $or: [{ surname: { $exists: true } }, { 'user.deleted': { $exists: false } }, {
- 'user.deleted': {
- $exists: true,
- $eq: false
- }
- }],
- };
-
- let myquery = getQueryProj(
- filtri,
- myobjField,
- myfilter2
- );
-
- return await ListaIngresso.aggregate(myquery);
-
-};
-
-ListaIngressoSchema.statics.getarrayIndOrder = async function (idapp, filtri, myobjField) {
- const ListaIngresso = this;
-
- let myfilter2 = {
-
- $or: [{ surname: { $exists: true } }, { deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
- };
-
- let myquery = getQueryIndOrder(
- filtri,
- myobjField,
- myfilter2
- );
-
- return await ListaIngresso.aggregate(myquery);
-
-};
-
-ListaIngressoSchema.statics.getIngrEUserByFilter = async function (idapp, myfilter) {
- const ListaIngresso = this;
-
- const arr = await ListaIngresso.getarray(idapp, myfilter, {
- _id: 1,
- idapp: 1,
- username: 1,
- ind_order: 1,
- name: 1,
- surname: 1,
- index: 1,
- num_tess: 1
- });
-
- if (!!arr) {
- return arr.length > 0 ? arr[0] : null;
- }
- return null;
-
-};
-
-
-ListaIngressoSchema.statics.getInvitati = async function (idapp, username, includemyself, myobjField) {
- const ListaIngresso = this;
-
- let myq = {
- idapp,
- $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
- invitante_username: username,
- };
-
- if (!includemyself) {
- myq = { ...myq, username: { $ne: username } }
- }
-
- return ListaIngresso.getarray(idapp, myq, myobjField);
-
-
-};
-
-/*
-ListaIngressoSchema.statics.getUserByInvitante_Username = async function (idapp, invitante_username) {
- const ListaIngresso = this;
-
- const arr = ListaIngresso.getarray(idapp,
- {
- idapp,
- deleted: false,
- invitante_username: invitante_username,
- username: { $ne: {invitante_username} },
- },
- null);
-
- if (!!arr)
- return arr[0];
- else
- return null;
-};
-
-*/
-
-ListaIngressoSchema.statics.getnumInvitatiBase = async function (idapp, username, attivi) {
- const ListaIngresso = this;
-
- const { User } = require('./user');
-
- let myfilter2 = {
- surname: { $exists: true },
- };
-
- if (attivi) {
- myfilter2 = {
- ...myfilter2,
- $and: User.getQueryQualified(),
- }
- }
-
- let myquery = getQueryProj({
- idapp,
- invitante_username: username,
- // username: { $ne: username },
- $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
- },
- { username: 1, ind_order: 1 },
- myfilter2,
- );
-
- // { _id: null, count: { $sum: 1 }
-
- arrlistainv = await ListaIngresso.aggregate(myquery);
-
- // Ottieni gli invitati che ancora non hanno un'imbarco
- let myqueryuser = {
- idapp,
- aportador_solidario: username,
- //$or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
- $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }],
- };
-
- if (attivi) {
- myqueryuser = {
- ...myqueryuser,
- $and: User.getQueryQualified()
- }
- }
-
- const arrinv = await User.find(myqueryuser);
-
- for (const inv of arrinv) {
- if (!arrlistainv.find((rec) => rec.username === inv.username))
- arrlistainv.push(inv);
- }
-
- if (!!arrlistainv)
- return arrlistainv.length;
- else
- return 0;
-};
-
-
-ListaIngressoSchema.statics.getnumInvitati = async function (idapp, username) {
- const ListaIngresso = this;
-
- return ListaIngresso.getnumInvitatiBase(idapp, username, false);
-
- /*
- const arrlistainv = await ListaIngresso.find({
- idapp,
- invitante_username: username,
- deleted: false,
- // username: { $ne: username },
- }, { username: 1 });
-
- const { User } = require('./user');
-
- // Ottieni gli invitati che ancora non hanno un'imbarco
- const arrinv = await User.find({
- idapp,
- aportador_solidario: username,
- $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }]
- });
-
-
-
- for (const inv of arrinv) {
- if (!arrlistainv.find((rec) => rec.username === inv.username))
- arrlistainv.push(inv);
- } */
-
-
-};
-
-ListaIngressoSchema.statics.getnumInvitatiAttivi = function (idapp, username) {
- const ListaIngresso = this;
-
- return ListaIngresso.getnumInvitatiBase(idapp, username, true);
-};
-
-
-const ListaIngresso = mongoose.model('ListaIngresso', ListaIngressoSchema);
-
-
-module.exports = { ListaIngresso };
-
-
diff --git a/src/server/models/mygroup.js b/src/server/models/mygroup.js
new file mode 100755
index 0000000..ed49260
--- /dev/null
+++ b/src/server/models/mygroup.js
@@ -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};
diff --git a/src/server/models/nave.js b/src/server/models/nave.js
deleted file mode 100755
index 51bc3e9..0000000
--- a/src/server/models/nave.js
+++ /dev/null
@@ -1,1737 +0,0 @@
-const mongoose = require('mongoose').set('debug', false)
-const _ = require('lodash');
-
-const tools = require('../tools/general');
-
-const { ListaIngresso } = require('./listaingresso');
-const { NavePersistente } = require('./navepersistente');
-const { Settings } = require('./settings');
-const { User } = require('./user');
-const { Flotta } = require('../models/flotta');
-
-const { ObjectID } = require('mongodb');
-
-const printf = require('util').format;
-
-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 NaveSchema = new mongoose.Schema({
- idapp: {
- type: String,
- required: true,
- },
- riga: {
- type: Number,
- },
- col: {
- type: Number,
- },
- idListaIngresso: {
- type: String,
- },
- ind_order: {
- type: Number,
- },
- parent_id: {
- type: mongoose.Schema.Types.ObjectId,
- },
- sent_msg_howto_make_gift: {
- type: Boolean,
- default: false,
- },
- made_gift: {
- type: Boolean,
- default: false,
- },
- date_made_gift: {
- type: Date,
- },
- received_gift: {
- type: Boolean,
- default: false,
- },
- offerta_al_fondo: {
- type: Number,
- },
- date_received_gift: {
- type: Date,
- },
- created: {
- type: Date,
- },
- num_tess: { // numero di tessitura
- type: Number,
- default: 1
- },
- commento_al_sognatore: {
- type: String
- },
- note: {
- type: String
- },
-});
-
-NaveSchema.statics.getTotInLista = async function (idapp) {
- const Nave = this;
-
- const myfind = { idapp, ind_order: { $gte: 0 } };
-
- return await Nave.count(myfind);
-};
-
-NaveSchema.statics.findByIndOrder = function (idapp, ind_order) {
- const Nave = this;
-
-
- try {
- return Nave.findOne({
- 'idapp': idapp,
- 'ind_order': ind_order,
- });
- } catch (e) {
-
- }
-};
-
-NaveSchema.statics.checkIfNaveExist = async function (idapp, username) {
- const Nave = this;
-
- try {
-
- const arrlista = await ListaIngresso.find({
- idapp,
- username,
- // added: true,
- deleted: false,
- });
-
- for (const rec of arrlista) {
- const mynave = await Nave.find({ idapp, ind_order: rec.ind_order });
- if (!!mynave)
- return true;
- }
-
- return false;
-
- } catch (e) {
-
- }
-};
-
-NaveSchema.statics.findByIndOrderAndNumTess = function (idapp, ind_order, num_tess) {
- const Nave = this;
-
- try {
- return Nave.findOne({
- idapp,
- ind_order,
- num_tess,
- });
- } catch (e) {
-
- }
-};
-
-NaveSchema.statics.findById = function (idapp, id) {
- const Nave = this;
-
- const { User } = require('./user');
-
- const myquery = getQueryProj({ idapp, '_id': id });
-
- return Nave.aggregate(myquery)
- .then(async (rec) => {
- try {
- if (!!rec) {
- if (rec.length > 0) {
- const ris = await User.findByIndOrder(idapp, rec[0].ind_order);
- if (!!ris) {
- if (!!ris._doc)
- rec[0] = { ...rec[0], ...ris._doc };
- else
- rec[0] = { ...rec[0], ...ris };
- return rec[0];
- }
- return rec[0];
- } else {
- return null;
- }
- } else {
- return null;
- }
- } catch (e) {
- console.error(e.message);
- }
- });
-
-};
-
-
-NaveSchema.statics.getFieldsForSearch = function () {
- return [{ field: 'ind_order', type: tools.FieldType.number },
- { field: 'riga', type: tools.FieldType.number },
- { field: 'col', type: tools.FieldType.number },
- { field: '_id', type: tools.FieldType.exact }]
-};
-
-NaveSchema.statics.executeQueryTable = function (idapp, params) {
- params.fieldsearch = this.getFieldsForSearch();
- return tools.executeQueryTable(this, idapp, params);
-};
-
-NaveSchema.statics.findAllIdApp = async function (idapp) {
- const Nave = this;
-
- const myfind = { idapp };
-
- return Nave.find(myfind, (err, arrrec) => {
- return arrrec
- });
-};
-
-NaveSchema.statics.findByRigaCol = function (idapp, riga, col, nullifnotexist) {
- const Nave = this;
-
- myrigacol = {
- idapp,
- riga,
- col,
- nullifnotexist
- };
-
- return Nave.findGeneric(myrigacol);
-
-};
-
-NaveSchema.statics.findDonatoreByNave = function (idapp, nave) {
- try {
-
- const arrrigacol = nave.split(".");
- if (arrrigacol.length <= 0)
- return;
-
- let riganave = parseInt(arrrigacol[0]);
- let colnave = parseInt(arrrigacol[1]);
-
- let rigadonatore = riganave + 3;
- if (rigadonatore < 1)
- rigadonatore = 1;
-
- coldonatoreIni = calcval(riganave, colnave, 8) + (1);
- coldonatoreFine = calcval(riganave, colnave, 8) + (8);
-
- const miaquery = {
- idapp,
- riga: rigadonatore,
- $and: [{ col: { $gte: { coldonatoreIni } } }, { col: { $lte: { coldonatoreFine } } }]
- };
-
- return Nave.findOne(miaquery);
- } catch (e) {
- console.error(e.message);
- }
-};
-
-function getIndColonneByNave(navemediatore) {
- let riga = navemediatore.riga;
- let col = navemediatore.col;
-
- let col_ini = calcval(riga, col, 8) + 1;
- let col_fine = col_ini + 7;
-
- return { riga: riga + 3, col_ini, col_fine }
-}
-
-NaveSchema.statics.getusersByNave = function (idapp, navemediatore) {
-
- if ((!navemediatore.riga) || (!navemediatore.col))
- return [];
-
- const obj = getIndColonneByNave(navemediatore);
-
- const miacol_ini = obj.col_ini;
- const miacol_fine = obj.col_fine;
-
- const miaquery = {
- idapp,
- riga: obj.riga,
- $and: [
- { col: { $gte: miacol_ini } },
- { col: { $lte: miacol_fine } }
- ],
- };
-
- return Nave.find(miaquery);
-
-};
-
-NaveSchema.statics.getusersByFlotta = function (idapp, riga, col_prima, col_ultima) {
-
- const miaquery = {
- idapp,
- riga: riga + 3,
- $and: [
- { col: { $gte: col_prima } },
- { col: { $lte: col_ultima } }
- ],
- };
-
- return Nave.find(miaquery);
-
-};
-
-
-NaveSchema.statics.findRecByRigaColParent = async function (idapp, riga, col, numparentUp) {
- const Nave = this;
-
- const { User } = require('./user');
-
- const myrigacol = {
- idapp,
- riga,
- col
- };
-
- if (numparentUp === 0) {
- return await Nave.findGeneric(myrigacol);
- }
-
- let parentup = 0;
- let myrec = null;
- let lastrec = null;
-
- while (parentup < numparentUp) {
-
- myrec = await Nave.findGeneric(myrigacol);
- if (!!myrec) {
- if (myrec.parent_id === "0") {
- break;
- }
-
- recfind = await Nave.findById(idapp, myrec.parent_id);
- if (!!recfind) {
- lastrec = recfind;
- myrigacol.riga = lastrec.riga;
- myrigacol.col = lastrec.col;
- } else {
- lastrec = await Nave.findGeneric({ idapp, riga: 0, col: 0 });
- break;
- }
- }
- parentup++;
- }
-
- if (!lastrec) {
- return await Nave.findGeneric({ idapp, riga: 0, col: 0 });
- }
-
- return lastrec;
-
-};
-
-
-NaveSchema.statics.findGeneric = function (myrigacol) {
-
- const { ListaIngresso } = require('./listaingresso');
-
- const myquery = getQueryProj({ idapp: myrigacol.idapp, riga: myrigacol.riga, col: myrigacol.col });
-
- return Nave.aggregate(myquery)
- .then(async (rec) => {
- if (!rec || rec.length === 0) {
- if (myrigacol.nullifnotexist)
- return null;
-
- const ris = await ListaIngresso.findByIndOrder(myrigacol.idapp, 0);
- const arr = [];
- arr.push(ris);
- return arr;
- }
- else {
- return rec;
- }
- }
- ).then(async (rec) => {
-
- const { User } = require('./user');
-
- if (!!rec) {
- if (rec.length > 0) {
- // console.log('rec', rec);
- // console.table('myrigacol', myrigacol);
- if (!!rec[0]) {
- const newrec = await User.getSmallRecByIndOrder(myrigacol.idapp, rec[0].ind_order);
- if (!!newrec) {
- let myarr = {};
- if (rec[0]._doc === undefined)
- myarr = { ...newrec, ...rec[0] };
- else
- myarr = { ...newrec, ...rec[0]._doc };
- return myarr;
- } else {
- let myarr = rec[0];
- if (!!newrec) {
- if (rec[0]._doc === undefined)
- myarr = { ...newrec, ...rec[0] };
- else
- myarr = { ...newrec, ...rec[0]._doc };
- }
- return myarr;
- }
- } else {
- const ris = await ListaIngresso.findByIndOrder(myrigacol.idapp, 0);
- if (!!ris)
- return ris[0]
- }
- }
- }
- return null;
- }).catch((e) => {
- console.error(e.message);
- });
-
-}
-;
-
-
-NaveSchema.statics.findSognatoriByFuoco = async function (idapp, riga, col, offset) {
- const Nave = this;
-
- // const myrigacol = getRigaColSognatoreByFuoco(idapp, riga, col);
-
- // return Nave.findGeneric(myrigacol);
-
- return [await Nave.findRecByRigaColParent(idapp, riga, col, 6 - offset),
- await Nave.findRecByRigaColParent(idapp, riga, col, 5 - offset),
- await Nave.findRecByRigaColParent(idapp, riga, col, 4 - offset)
- ]
-
-};
-
-
-NaveSchema.statics.findMediatoreByFuoco = async function (idapp, riga, col, offset) {
- const Nave = this;
-
- // const myrigacol = getRigaColMediatoreByFuoco(idapp, riga, col);
- // return Nave.findGeneric(myrigacol);
- return await Nave.findRecByRigaColParent(idapp, riga, col, 3 - offset);
-
-};
-
-function getQueryProj(myfilter) {
-
- myobjField = {
- _id: 1,
- idapp: 1,
- lang: 1,
- idListaIngresso: 1,
- ind_order: 1,
- name: 1,
- surname: 1,
- username: 1,
- invitante_username: 1,
- deleted: 1,
- sospeso: 1,
- 'profile.paymenttypes': 1,
- 'profile.teleg_id': 1,
- 'profile.nationality': 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.cell': 1,
- commento_al_sognatore: 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] },] } }
- },
- { $match: { $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }] } },
- { $project: myobjField }
- ];
-
- return query;
-}
-
-function getQueryInvitante(myfilter) {
-
- myobjField = {
- idListaIngresso: 1,
- ind_order: 1,
- name: 1,
- surname: 1,
- username: 1,
- invitante_username: 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,
- };
-
- 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] },] } }
- },
- { $match: { $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }] } },
- { $project: myobjField }
- ];
-
- return query;
-}
-
-
-NaveSchema.statics.setRiga = function (idapp, riga) {
- return Settings.setKeyNum(idapp, 'riga', riga);
-};
-
-NaveSchema.statics.getRiga = function (idapp) {
- return Settings.getKeyNum(idapp, 'riga', 1);
-};
-
-NaveSchema.statics.setCol = function (idapp, col) {
- return Settings.setKeyNum(idapp, 'col', col);
-};
-
-NaveSchema.statics.getCol = function (idapp) {
- return Settings.getKeyNum(idapp, 'col', 1);
-};
-
-
-async function getusertextbyrec(myrec, symbol, lettera, riga, col, ind) {
- let visu_test = false;
- if (!!myrec)
- visu_test = await Settings.getValDbSettings(myrec.idapp, 'VISU_TEST');
-
- if (!visu_test) {
- if (myrec)
- return lettera + ind + ' - ' + symbol + ' ' + myrec.name + ' ' + tools.getFirst2Car(myrec.surname) + ' (' + myrec.username + ')';
- else
- return lettera + ind + ' - ' + symbol;
-
- } else {
- if (myrec)
- return lettera + ind + ' - ' + symbol + '[' + riga + ',' + col + ']' + ' ' + myrec.name + ' ' + myrec.surname + '';
- else
- return lettera + ind + ' - ' + symbol;
- }
-}
-
-function checkifNullThenEmpty(rec, riga, col) {
- if (rec === null) {
- return {
- idListaIngresso: -1,
- name: '',
- surname: '',
- username: '',
- riga,
- col,
- }
- } else {
- return rec;
- }
-}
-
-NaveSchema.statics.getPlaccaGenerica = async function (idapp, riga, col, offset, solorecord) {
- const Nave = this;
-
- const { Flotta } = require('../models/flotta');
-
-
- try {
- let recsognatori = await Nave.findSognatoriByFuoco(idapp, riga, col, offset);
- let recmediatore = await Nave.findMediatoreByFuoco(idapp, riga, col, offset);
- let navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, riga, col, offset);
- let flotta = null;
- if (!!navepersistente)
- flotta = await Flotta.getFlottaByNavePersistente(idapp, navepersistente);
-
- if (!solorecord) {
- mystr = tools.ACAPO;
-
- mystr += 'GIFTING CHAT (' + riga + '.' + col + ') ' + tools.ACAPO + tools.ACAPO;
-
- if (offset === tools.Placca.SONOFUOCO) {
- mystr += tools.Placca.SOGNATORE + tools.Placca.STR_SOGNATORE + ': ' + await getusertextbyrec(recsognatori[0], '', '', riga, col, '') + tools.ACAPO + tools.ACAPO;
- mystr += tools.Placca.MEDIATORE + tools.Placca.STR_MEDIATORE + ': ' + await getusertextbyrec(recmediatore, '', '', riga, col, '') + tools.ACAPO + tools.ACAPO;
- }
-
- if (offset === tools.Placca.SONOACQUA) {
- mystr += tools.Placca.SOGNATORE + tools.Placca.STR_SOGNATORE + ': ' + await getusertextbyrec(recmediatore, '', '', riga, col, '') + tools.ACAPO + tools.ACAPO;
- }
-
- let symb = {
- car: 'D',
- icona: '🔥'
- };
-
- if (offset === tools.Placca.SONOFUOCO) {
- mystr += tools.Placca.STR_DONATORI + ':' + tools.ACAPO;
- } else if (offset === tools.Placca.SONOACQUA) {
- mystr += tools.Placca.STR_MEDIATORI + ':' + tools.ACAPO;
- symb = {
- car: 'A',
- icona: '💦'
- };
- }
- }
-
- // mystr += '🔥🌏💦💨🔥🌏💦💨' + tools.ACAPO;
-
- let arrdonatori = [];
- // let numcol = Math.pow(2, indriga - 1);
- let primofuoco = tools.getPrimoFuocoByIndCol(col * Math.pow(2, offset));
-
- let ind = 1;
- for (let indcol = primofuoco; indcol < primofuoco + 8; indcol++) {
- let indr = riga + offset;
- let indc = indcol + (offset * indr);
-
- indr = riga + offset;
- // indc = calcval(riga, col, 8) + (indcol - primofuoco + 1);
- if (offset === 0)
- indc = indcol;
- else
- indc = indcol;
- // miacol = calcval(riga, col, 8) + (indfuoco);
-
-
- let recfuoco = await Nave.findByRigaCol(idapp, indr, indc, true);
- recfuoco = checkifNullThenEmpty(recfuoco, indr, indc);
- arrdonatori.push({ index: ind, ...recfuoco });
-
- if (!solorecord) {
- mystr += await getusertextbyrec(recfuoco, symb.icona, symb.car, indr, indc, ind) + tools.ACAPO;
- }
- ind++;
- }
-
- if (solorecord) {
- res = {
- recsognatori,
- recmediatore,
- navepersistente,
- flotta,
- arrdonatori
- };
-
- return res;
- } else {
- return mystr;
- }
-
- } catch (e) {
- console.error(e.message);
- }
-
-};
-
-NaveSchema.statics.getPlaccaPerDonatore = async function (idapp, riga, col, solorecord, rec) {
- const Nave = this;
-
- if (solorecord) {
-
- rec.donatore = await Nave.getPlaccaGenerica(idapp, riga, col, tools.Placca.SONOFUOCO, solorecord);
- newcol = Math.ceil(col / (Math.pow(2, 3)));
- rec.donatore.arrterra = await Nave.getArrTerra(idapp, riga - 3, newcol);
- rec.donatore.arraria = await Nave.getArrAria(idapp, riga - 3, newcol);
-
- return rec;
- } else {
- return await Nave.getPlaccaGenerica(idapp, riga, col, tools.Placca.SONOFUOCO, solorecord);
- }
-
-
-};
-
-NaveSchema.statics.getPlaccaPerMediatore = async function (idapp, riga, col, solorecord, rec) {
- const Nave = this;
- rec.mediatore = await Nave.getPlaccaGenerica(idapp, riga, col, tools.Placca.SONOACQUA, solorecord);
- rec.mediatore.navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, riga, col, -tools.Placca.SONOACQUA);
-
- rec.mediatore.arrterra = await Nave.getArrTerra(idapp, riga, col);
- rec.mediatore.arraria = await Nave.getArrAria(idapp, riga, col);
-
- return rec;
-};
-
-NaveSchema.statics.getArrTerra = async function (idapp, riga, col) {
- const Nave = this;
-
- let arrterra = [];
- for (let indterra = 1; indterra <= 2; indterra++) {
- miacol = calcval(riga, col, 2) + (indterra);
- miariga = riga + 1;
- let rec = await Nave.findByRigaCol(idapp, miariga, miacol, true);
- rec = checkifNullThenEmpty(rec, miariga, miacol);
- arrterra.push(rec);
- }
-
- return arrterra;
-};
-
-NaveSchema.statics.getArrAria = async function (idapp, riga, col) {
- const Nave = this;
-
- let arraria = [];
- for (let indaria = 1; indaria <= 4; indaria++) {
- miacol = calcval(riga, col, 4) + (indaria);
- miariga = riga + 2;
- let rec = await Nave.findByRigaCol(idapp, miariga, miacol, true);
- rec = checkifNullThenEmpty(rec, miariga, miacol);
- arraria.push(rec);
- }
-
- return arraria;
-
-};
-
-function calcval(riga, col, quanti) {
- return (quanti * (col - 1));
-}
-
-NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord, ind_order) {
- const Nave = this;
-
- if (riga <= 0)
- riga = 1;
- if (col <= 0)
- col = 1;
-
- let lang = 'it';
-
- if (!!ind_order) {
- const { User } = require('./user');
- lang = await User.getLangByIndOrder(idapp, ind_order);
- }
-
- try {
- let recsognatori = [await Nave.findRecByRigaColParent(idapp, riga, col, 3),
- await Nave.findRecByRigaColParent(idapp, riga, col, 2),
- await Nave.findRecByRigaColParent(idapp, riga, col, 1)];
-
- let recmediatore = await Nave.findByRigaCol(idapp, riga, col, true);
- let recnavepersistente = await NavePersistente.findByRigaCol(idapp, riga, col, 0);
-
-
- mystr = '7️⃣° 🌈 ' + tools.get__('SOGNATORE', lang) + ': ';
- mystr += '' + await getusertextbyrec(recsognatori[0], '', '', riga, col, '') + '' + tools.ACAPO;
- for (let indsogn = 1; indsogn < recsognatori.length; indsogn++) {
- if (indsogn === 1)
- mystr += '6️⃣°';
- else
- mystr += '5️⃣°';
-
- mystr += ' ' + tools.get__('INTERMEDIO', lang) + ': ';
-
- mystr += await getusertextbyrec(recsognatori[indsogn], '', '', riga, col, '') + tools.ACAPO;
- }
-
- mystr += tools.ACAPO + '4️⃣° 🌀 ' + tools.get__('MEDIATORE', lang) + ':' + await getusertextbyrec(recmediatore, '', '', riga, col, '') + tools.ACAPO + tools.ACAPO;
-
- mystr += '3️⃣° ' + tools.get__('INTERMEDIO', lang) + ':' + tools.ACAPO;
- for (let indterra = 1; indterra <= 2; indterra++) {
- miacol = calcval(riga, col, 2) + (indterra);
- miariga = riga + 1;
- let recterra = await Nave.findByRigaCol(idapp, miariga, miacol, true);
- mystr += await getusertextbyrec(recterra, '', 'B', miariga, miacol, indterra) + tools.ACAPO;
- }
-
- mystr += tools.ACAPO;
-
- mystr += '2️⃣° ' + tools.get__('INTERMEDIO', lang) + ':' + tools.ACAPO;
- for (let indaria = 1; indaria <= 4; indaria++) {
- miacol = calcval(riga, col, 4) + (indaria);
- miariga = riga + 2;
- let recaria = await Nave.findByRigaCol(idapp, miariga, miacol, true);
- mystr += await getusertextbyrec(recaria, '', 'C', miariga, miacol, indaria) + tools.ACAPO;
- }
-
- mystr += tools.ACAPO;
-
- let primofuoco = null;
-
- mystr += '1️⃣° 🎁 ' + tools.get__('DONATORI', lang) + ':' + tools.ACAPO;
- let donitotali = 0;
- let donifatti = 0;
-
- for (let indfuoco = 1; indfuoco <= 8; indfuoco++) {
- miacol = calcval(riga, col, 8) + (indfuoco);
- miariga = riga + 3;
- // miariga = riga + 2;
- let recfuoco = await Nave.findByRigaCol(idapp, miariga, miacol, true);
- if (indfuoco === 1)
- primofuoco = recfuoco;
-
- if (!!recfuoco) {
- let symbol = '';
- if (recfuoco.made_gift) {
- symbol = '🎁';
- donifatti++;
- }
- if (!!recfuoco && recmediatore) {
- if (recfuoco.ind_order === recmediatore.ind_order && recfuoco.num_tess === 2) {
- mystr += await getusertextbyrec(recfuoco, '', tools.get__('RITESSITURA', lang), miariga, miacol, '') + tools.ACAPO;
- } else {
- mystr += await getusertextbyrec(recfuoco, symbol, 'D', miariga, miacol, indfuoco) + tools.ACAPO;
- donitotali++;
- }
- }
- }
- }
-
- if (donitotali > 0 && donifatti >= donitotali) {
- mystr += tools.ACAPO + '💫💫💫💫💫💫💫💫💫💫💫💫💫💫💫💫💫💫' + tools.ACAPO +
- '✨✨✨ ' + tools.get__('NAVE COMPLETATA', lang) + ' ' + ' (' + tools.get__('Doni Effettuati', lang) + ') ! ✨✨✨' + tools.ACAPO +
- '💫💫💫💫💫💫💫💫💫💫💫💫💫💫💫💫💫💫' + tools.ACAPO;
- }
-
- let data = "";
- let mystrtemp = '';
- if (primofuoco) {
-
- // tools.gettranslate('PLACCA_TUTOR', lang)
-
- if (!!recnavepersistente.tutor_namesurname)
- data += '👤 ' + tools.get__('Tutor che affianchèra il Mediatore', lang) + ': "' + recnavepersistente.tutor_namesurname + '"' + tools.ACAPO;
-
- data += '💬 ' + printf(tools.get__('APERTURA_CHIUSURA_GIFT_CHAT', lang), tools.getstrDateLong(recnavepersistente.date_gift_chat_open, lang), tools.getstrDateLong(recnavepersistente.date_start, lang)) + tools.ACAPO;
-
-
- // data += '💬 ' + tools.get__('Giorno di Apertura GIFT CHAT', lang) + ': ' + tools.getstrDateLong(recnavepersistente.date_gift_chat_open, lang) + tools.ACAPO;
-
- // data += '🎁 ' + tools.get__('Giorno in cui Inviare il DONO', lang) + ' : ' + tools.getstrDateLong(recnavepersistente.date_start, lang) + tools.ACAPO;
- if (!!recnavepersistente.note_bot)
- data += tools.get__('Note', lang) + ": " + recnavepersistente.note_bot + tools.ACAPO;
-
- if (recnavepersistente.provvisoria)
- mystrtemp = '' + tools.get__('TEMPORANEA', lang) + ' ';
- } else
- data = "";
-
-
- mystr = tools.ACAPO + '⛵️ ' + tools.get__('NAVE', lang) + ' ' + '[' + riga + '.' + col + '] ' + mystrtemp + tools.ACAPO + data + tools.ACAPO + mystr;
-
- return mystr;
- } catch (e) {
- console.error(e.message);
- return '';
- }
-
-};
-
-NaveSchema.statics.getArrPosizioniByIndOrder = async function (idapp, ind_order) {
- const Nave = this;
-
-
- arrposizioni = await Nave.find({ idapp, ind_order }).sort({ riga: 1, col: 1 });
-
- return arrposizioni;
-};
-
-NaveSchema.statics.getArrPosizioniByUsername = async function (idapp, username) {
- const Nave = this;
-
- const { ListaIngresso } = require('./listaingresso');
-
- try {
- const arrrec_indorder = await ListaIngresso.findByAllRecByUsername(idapp, username).distinct("ind_order");
-
- let arrposizioni = [];
-
- for (const ind_order of arrrec_indorder) {
- const myquery = getQueryInvitante({ idapp, ind_order });
-
- const arr = await Nave.aggregate(myquery).sort({ riga: 1, col: 1 });
- if (!!arr)
- arrposizioni = [...arrposizioni, ...arr];
- }
-
-
- /*
- for (const ind_order of arrrec_indorder) {
- const arr = await Nave.find({ 'idapp': idapp, ind_order }).sort({ riga: 1, col: 1 });
- if (!!arr)
- arrposizioni = [...arrposizioni, ...arr];
- }
- */
-
- return arrposizioni;
- } catch (e) {
- console.error(e.message);
- }
-
-};
-
-NaveSchema.statics.getArrProfiliByIndOrder = async function (idapp, ind_order) {
- const Nave = this;
-
- arrposizioni = await Nave.find({ 'idapp': idapp, ind_order }).sort({ riga: 1, col: 1 });
-
- arrprofili = [];
-
- // Ind_Order
- // Ind_order_base
-
-
- return arrprofili;
-};
-
-NaveSchema.statics.getPrimaNaveByRiga = async function (idapp, riga) {
- const Nave = this;
-
- nave = await Nave.findOne({ 'idapp': idapp, riga: (riga + 3), col: 1 });
-
- return nave;
-};
-
-NaveSchema.statics.showListaOrd = async function (idapp) {
- const Nave = this;
-
- const myquery = getQueryProj({ idapp });
-
- arrrec = await Nave.aggregate(myquery).sort({ riga: 1, col: 1 });
-
- let mystr = '';
- let conta = 1;
- for (const rec of arrrec) {
- let recnavepersistente = await NavePersistente.findByRigaColByDonatore(idapp, rec.riga, rec.col, 0);
- if (!!recnavepersistente) {
- mystr += '[' + conta + '] [' + rec.riga + '.' + rec.col + '] ' + rec.ind_order + ' ' + rec.name + ' ' + rec.surname + ' (' + tools.getstrDateShort(recnavepersistente.date_gift_chat_open) + ')';
- mystr += ' num_tess = ' + rec.num_tess;
- mystr += '\n';
- }
- conta++;
- }
-
-
- return mystr;
-};
-
-NaveSchema.statics.getLastRigaCol = async function (idapp) {
- return Nave.findOne({ idapp }).sort({ riga: -1, col: -1 });
-};
-
-async function addRecordNaveByParams(params, siRitesse) {
- const { ListaIngresso } = require('./listaingresso');
-
- let paramspers = { ...params };
-
- let mypos = {
- idapp: params.idapp,
- riga: params.riga,
- col: params.col,
- numup: 3
- };
- tools.getRigaColByPosUp(mypos);
-
- paramspers.riga1don = params.riga;
- paramspers.col1don = params.col;
- paramspers.riga = mypos.riga;
- paramspers.col = mypos.col;
-
- await NavePersistente.addRecordNavePersistenteByParams(paramspers);
-
- if (!siRitesse) {
- // Check if Exist:
- const giapresente = await Nave.findOne({
- idapp: params.idapp,
- ind_order: params.ind_order,
- num_tess: params.num_tess,
- });
- if (!!giapresente) {
- if (params.persistenti) {
- let fields_to_update = { added: true };
- await ListaIngresso.findOneAndUpdate({ _id: params.id.toString() }, { $set: fields_to_update }, { new: false });
- }
-
- return false;
- }
- }
-
-
- let myNave = new Nave({
- idapp: params.idapp,
- idListaIngresso: params.id,
- ind_order: params.ind_order,
- riga: params.riga,
- col: params.col,
- num_tess: params.num_tess,
- });
- myNave.created = new Date();
-
- if (!!params.note) {
- myNave.note = params.note;
- }
-
- // console.log('[' + params.riga + ',' + params.col + ']');
- // console.log('parent = [' + params.rigaparent + ',' + params.colparent + ']');
-
- const recfindparent = await Nave.findByRigaCol(params.idapp, params.rigaparent, params.colparent, false);
-
- // console.log('recfindparent = [' + recfindparent + ']');
- // console.table(recfindparent);
- if (!!recfindparent) {
- myNave.parent_id = recfindparent._id;
- } else {
- myNave.parent_id = "0";
- }
-
- // console.log('addRecordNaveByParams (' + myNave.parent_id + ')');
-
- return await myNave.save()
- .then(async (result) => {
-
- if (!!result) {
-
- if (params.persistenti) {
- let fields_to_update = { added: true, navestr: mypos.riga + '.' + mypos.col };
- await ListaIngresso.findOneAndUpdate({ _id: params.id.toString() }, { $set: fields_to_update }, { new: false });
- } else {
- let fields_to_update = { navestr: mypos.riga + '.' + mypos.col };
- await ListaIngresso.findOneAndUpdate({ _id: params.id.toString() }, { $set: fields_to_update }, { new: false });
- }
-
- params.conta++;
-
- // Check if the Ship has Completed
- if (params.idapp === tools.AYNI) {
- if ((params.col % 8) === 0) {
- // Completed 8 people
- if (!params.primavolta) {
- // await Fuochi8Completati(idapp, params);
- }
- }
- }
-
- // Next
- if (params.col === params.maxcol) {
- params.riga++;
- params.rigaparent = params.riga - 1;
- params.col = 1;
- params.maxcol = tools.getmaxcol(params.riga);
- } else {
- params.col++;
- }
-
- if (params.riga === 2)
- params.colparent = 1;
- else
- params.colparent = Math.ceil(params.col / 2);
-
- await Nave.setRiga(params.idapp, params.riga);
- await Nave.setCol(params.idapp, params.col);
-
- return true;
- }
-
- return false;
-
- }).catch((e) => {
- console.error(e.message);
- });
-}
-
-NaveSchema.statics.checkifDeveRitessersi = async function (recuser) {
- const Nave = this;
-
- let deveritessersi = true;
-
- arrrec = await Nave.find({ idapp: recuser.idapp, ind_order: recuser.ind_order, num_tess: recuser.num_tess });
-
- if (!!arrrec) {
- if ((arrrec.length % 2) === 0) {
- // deveritessersi = await User.deveRitessersi(recuser.idapp, recuser.ind_order)
- deveritessersi = false;
- }
- }
-
- return { deveritessersi, num_tess: arrrec.length };
-
-};
-
-
-NaveSchema.statics.addUserFromListaIngresso_IntoNave = async function (init, idapp, params, addednowreal) {
- const Nave = this;
-
- const { User } = require('./user');
-
- try {
-
- if (init) {
- params.idapp = idapp;
- params.conta = 0;
- }
-
- params.primavolta = (params.riga === 1) && (params.col === 1);
- params.riga = await Nave.getRiga(idapp);
- params.col = await Nave.getCol(idapp);
- params.maxcol = tools.getmaxcol(params.riga);
- params.colparent = Math.ceil(params.col / 2);
- params.rigaparent = params.riga - 1;
-
- if (params.rigaparent === 0)
- params.colparent = 0;
-
- myriga = params.riga;
- mycol = params.col;
-
- const inserito = await addRecordNaveByParams(params, false);
- if (inserito) {
- if (idapp === tools.AYNI) {
- let recmediatore = await Nave.findMediatoreByFuoco(idapp, myriga, mycol, 0);
- let sognatore = await Nave.getSognatoreByRigaColMediatore(idapp, recmediatore);
- if ((((params.col) % 8) === 0) && ((params.col % 64 !== 0) || (sognatore.username !== recmediatore.username))) {
- if (!!recmediatore) {
- const ris = await Nave.checkifDeveRitessersi(recmediatore);
- // console.log('Si deve ritessere: [riga=', params.riga, 'col', params.col, ']');
- if (ris.deveritessersi) {
- params.ind_order = recmediatore.ind_order;
- params.id = recmediatore._id;
- params.num_tess = recmediatore.num_tess + 1;
- params.idListaIngresso = -1;
-
- await addRecordNaveByParams(params, true);
- }
- }
- }
-
- /**
- if ((params.riga === 4 + 3) && (params.col === (8 * 2) + 3)) {
- // Si ritesse il Fondo AYNI nella Nave 3.3
- const userFondo = await User.findByIndex(idapp, 0);
- params.ind_order = userFondo.ind_order;
- params.id = userFondo._id;
- params.num_tess = userFondo.num_tess;
-
- await addRecordNaveByParams(params, true);
- } **/
-
- }
- }
-
- // Se ho completato 8 persone, allora
- if (addednowreal) {
-
- }
- } catch (e) {
- console.error(e.message);
- }
-
-};
-
-NaveSchema.statics.generaNave = async function (idapp, mydata, persistenti) {
- const Nave = this;
-
- const { User } = require('./user');
- const { ListaIngresso } = require('./listaingresso');
-
- let params = {
- idapp,
- riga: await Nave.getRiga(idapp),
- col: await Nave.getCol(idapp),
- date_start: mydata.date_start,
- date_gift_chat_open: tools.AddDate(mydata.date_start, -7),
- numpersone: mydata.numpersone,
- };
-
- if (!persistenti) {
- params.numpersone = 2000; // Mettili tutti
- }
-
- //++Todo: date_gift_chat_open e date_start : Ricalcolarle in Automatico...
-
- params.primavolta = (params.riga === 1) && (params.col === 1);
- // params.primavolta = false;
-
- const recfindFondo = await Nave.findByRigaCol(params.idapp, 0, 0, true);
- if (!recfindFondo) {
- let myNave = new Nave({ idapp, ind_order: 0, riga: 0, col: 0 });
- myNave.created = new Date();
- myNave.parent_id = ObjectID("5e592aecbfd0b75f3021d9c9");
- await myNave.save();
-
- await NavePersistente.addRecordNavePersistenteByParams({ idapp, riga: 0, col: 0, riga1don: 0, col1don: 0 });
-
- const userFondo = await User.findByIndex(idapp, 0);
- if (!userFondo || userFondo === undefined) {
- await telegrambot.sendMsgTelegramToTheAdmin(idapp, 'Devi creare l\'utente FONDO , con ind_order = 0 ! ');
- }
- }
-
- const arrlistaingresso = await ListaIngresso.getProssimiInLista(idapp, true);
-
- let index = 0;
- for (const reclista of arrlistaingresso) {
-
- params.ind_order = reclista.ind_order;
- params.id = reclista.idListaIngresso;
- params.num_tess = reclista.num_tess;
- params.note = reclista.note;
- params.persistenti = persistenti;
-
- await Nave.addUserFromListaIngresso_IntoNave(index === 0, idapp, params, false);
- index++;
-
- if (index >= params.numpersone)
- break;
- }
-
- return params.conta;
-
-};
-
-async function addUserToNave(idapp, rec) {
-
- let params = {};
-
- params.ind_order = rec.ind_order;
- params.id = rec.idListaIngresso;
- params.num_tess = rec.num_tess;
- params.persistenti = false;
-
- //CONTROLLARE SE SERVE ANCORA !!!!!!!!!!!!!!!!!!!!!!
- return await Nave.addUserFromListaIngresso_IntoNave(true, idapp, params, true);
-
-}
-
-NaveSchema.statics.checkIfDevoAggiungereInNave = async function (idapp) {
-
- const { ListaIngresso } = require('./listaingresso');
-
- // Ottieni la lista Ordinata in base al numero d'invitati
- arrlista = await ListaIngresso.getProssimiInLista(idapp, true);
-
- for (const rec of arrlista) {
- await addUserToNave(idapp, rec);
- }
-
-};
-
-NaveSchema.statics.pulisciNonPresenzeInNave = async function (idapp) {
- const Nave = this;
-
- let numrec = 0;
-
- const { ListaIngresso } = require('./listaingresso');
-
- const myquery = getQueryProj({
- idapp,
- ind_order: { $gt: 0 },
- added: true,
- deleted: false,
- });
-
- arrrec = await ListaIngresso.aggregate(myquery)
- .then(async (arrlista) => {
- for (const rec of arrlista) {
- const trovato = await Nave.findByIndOrderAndNumTess(idapp, rec.ind_order, rec.num_tess);
- if (!trovato) {
- let fields_to_update = { added: false };
- await ListaIngresso.findOneAndUpdate({ _id: rec._id }, { $set: fields_to_update }, { new: false });
- numrec++;
- }
- }
-
- });
-
- return numrec;
-
-};
-
-NaveSchema.statics.visuNaviUtentiEliminati = async function (idapp) {
- const Nave = this;
-
- const { ListaIngresso } = require('./listaingresso');
- const { User } = require('./user');
-
- arrnavi = await Nave.find({ idapp }).sort({ riga: 1, col: 1 });
-
- let mystr = 'ELIMINATI: \n';
- let conta = 0;
- for (const nave of arrnavi) {
- const recingr = await ListaIngresso.findOne({
- idapp,
- ind_order: nave.ind_order,
- $or: [{ deleted: { $exists: false } }, { deleted: { $exists: true, $eq: false } }]
- });
-
- let rec = null;
-
- if (!!recingr) {
- rec = await User.findOne({ idapp, username: recingr.username });
- }
-
- if (!rec || !rec.username || rec.deleted) {
- let navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, nave.riga, nave.col, 0);
- if (!!navepersistente) {
- mystr += '[' + conta + '] [NAVI ' + navepersistente.riga + '.' + navepersistente.col + '] [' + nave.riga + '.' + nave.col + '] ' + ' ord= ' + nave.ind_order;
- mystr += ' num_tess = ' + nave.num_tess + ' ';
- if (!!rec) {
- if (!!rec.username) {
- mystr += ' [' + rec.username + '] ';
- }
- if (!!rec.name) {
- mystr += ' (' + rec.name + ' ' + rec.surname + ') ';
- }
- if (rec.deleted) {
- mystr += ' (CANCELLATO)';
- }
- }
- mystr += '\n';
- conta++;
- }
- }
- }
-
-
- return { mystr, num: conta };
-};
-
-
-NaveSchema.statics.getNaveByUser = async function (idapp, username, lang, fuoco) {
- const Nave = this;
-
- let mystr = '';
- let rec = {};
- try {
- const arrposiz = await Nave.getArrPosizioniByUsername(idapp, username);
- if (!!arrposiz) {
- for (const pos of arrposiz) {
- let mypos = {
- riga: pos.riga,
- col: pos.col,
- numup: 3,
- };
- tools.getRigaColByPosUp(mypos);
-
- let persistente = await NavePersistente.findByRigaColByDonatore(idapp, pos.riga, pos.col, 0);
- if (!!persistente) {
- if (persistente.provvisoria) {
- mystr += tools.ACAPO + tools.get__('NAVE', lang) + ' ' + '[' + mypos.riga + '.' + mypos.col + '] - ' + tools.get__('TEMPORANEA', lang) + tools.ACAPO + tools.ACAPO;
- } else {
- mystr += await Nave.getNavePos(idapp, mypos.riga, mypos.col, false, pos.ind_order);
- }
- }
- // mystr += await Nave.getPlaccaPerDonatore(idapp, pos.riga, pos.col, false, rec);
- // mystr += await Nave.getPlaccaPerMediatore(idapp, pos.riga, pos.col, false, rec);
- }
- }
- } catch (e) {
- console.error(e.message);
- }
-
- return mystr;
-};
-
-NaveSchema.statics.getNaveByRigaCol = async function (idapp, rigapos, colpos) {
- const Nave = this;
-
- rec = {};
- rec = await Nave.getPlaccaPerMediatore(idapp, rigapos, colpos, true, rec);
-
- if (rigapos < 4) {
- rigapos = 4;
- colpos = 1;
- }
- rec = await Nave.getPlaccaPerDonatore(idapp, rigapos, colpos, true, rec);
-
- return rec;
-};
-
-NaveSchema.statics.getDonatoridelSognatore = async function (idapp, riganave, colnave) {
- const Nave = this;
-
- coldonatoreIni = ((colnave - 1) * 64) + (1);
- coldonatoreFine = coldonatoreIni + (63);
-
- const myquery = getQueryProj({
- idapp,
- riga: riganave + 6,
- col: { $gte: coldonatoreIni, $lte: coldonatoreFine }
- });
-
- const arrnaviout = [];
-
- const arrnavi = await Nave.aggregate(myquery);
-
- for (const nave of arrnavi) {
- // Se è il mediatore, allora non includerlo nei Donatori!
- mypos = {
- riga: nave.riga,
- col: nave.col,
- numup: 3,
- };
-
- tools.getRigaColByPosUp(mypos);
-
- const navemediatore = await Nave.findByRigaCol(idapp, mypos.riga, mypos.col, true);
- if (!!navemediatore) {
- if (navemediatore.ind_order !== nave.ind_order) {
- arrnaviout.push(nave);
- }
- } else {
- arrnaviout.push(nave);
- }
- }
-
- return arrnaviout;
-
-};
-
-NaveSchema.statics.getFlotta = async function (idapp, riga, col_prima, col_ultima) {
- const Nave = this;
-
- const myquery = getQueryProj({
- idapp,
- riga: riga + 3,
- col: { $gte: col_prima, $lte: col_ultima }
- });
-
- const { Flotta } = require('../models/flotta');
-
- const flotta = await Flotta.findOne({ idapp, riga, col_prima });
-
- const { User } = require('./user');
-
- const usersognatore = await User.findOne({idapp, username: flotta.sognatore });
- if (!!usersognatore) {
- flotta.link_payment = usersognatore.profile.link_payment;
- flotta.email_paypal = usersognatore.profile.email_paypal;
- flotta.payeer_id = usersognatore.profile.payeer_id;
- flotta.advcash_id = usersognatore.profile.advcash_id;
- flotta.revolut = usersognatore.profile.revolut;
- flotta.note_payment = usersognatore.profile.note_payment;
- }
-
- const arrnaviout = [];
-
- const arrnavi = await Nave.aggregate(myquery);
-
- const arrmediatori = [];
-
- for (const nave of arrnavi) {
- // Se è il mediatore, allora non includerlo nei Donatori!
- mypos = {
- riga: nave.riga,
- col: nave.col,
- numup: 3,
- };
-
- tools.getRigaColByPosUp(mypos);
-
- const navemediatore = await Nave.findByRigaCol(idapp, mypos.riga, mypos.col, true);
- if (!!navemediatore) {
- if (navemediatore.ind_order !== nave.ind_order) {
- arrnaviout.push(nave);
- } else {
- arrmediatori.push(nave);
- }
- } else {
- arrnaviout.push(nave);
- }
- }
-
- flotta._doc.log_attivita = tools.readFlottaLog(idapp, flotta.riga, flotta.col_prima);
-
- return { arrdonatori: arrnaviout, flotta, arrmediatori };
-
-};
-
-NaveSchema.statics.isDefinitiva = async function (idapp, mynave) {
- const nave = await NavePersistente.findByRigaColByDonatore(idapp, mynave.riga, mynave.col, 0);
- return (!!nave) ? !nave.provvisoria : false;
-
-};
-
-NaveSchema.statics.ricalcolaNave = async function (idapp, nave, riga1don, col1don, ricalcola, index) {
- const Nave = this;
-
- try {
- if (nave === null) {
- nave = await NavePersistente.findByRigaColByDonatore(idapp, riga1don, col1don, 0);
- }
- nave.rec = await Nave.getNaveByRigaCol(idapp, nave.riga1don, nave.col1don);
-
- if (nave.provvisoria || (ricalcola && (nave.DoniConfermati === nave.DoniTotali) && (nave.DoniTotali >= 7) && nave.DoniMancanti === 0 && nave.DoniAttesaDiConferma === 0)) {
- // gia fatto
-
- } else {
- nave.index = index;
-
- nave.DoniTotali = 0;
- nave.DoniAttesaDiConferma = 0;
- nave.DoniMancanti = 0;
- nave.DoniConfermati = 0;
-
- const { User } = require('./user');
-
- if (!!nave.tutor)
- nave.tutor_namesurname = await User.getNameSurnameByUsername(idapp, nave.tutor);
-
- if (!!nave.rec) {
- if (!!nave.rec.donatore) {
- nave.DoniTotali = nave.rec.donatore.arrdonatori.filter((rec) => (!(rec.ind_order === nave.rec.donatore.recmediatore.ind_order && (rec.num_tess % 2) === 0))).reduce((sum, item) => sum + 1, 0);
- nave.DoniAttesaDiConferma = nave.rec.donatore.arrdonatori.filter((rec) => (!!rec.date_made_gift && !rec.made_gift && !(rec.ind_order === nave.rec.donatore.recmediatore.ind_order && (rec.num_tess % 2) === 0))).reduce((sum, item) => sum + 1, 0);
- nave.DoniMancanti = nave.rec.donatore.arrdonatori.filter((rec) => (!rec.made_gift && !(rec.ind_order === nave.rec.donatore.recmediatore.ind_order && (rec.num_tess % 2) === 0))).reduce((sum, item) => sum + 1, 0);
- nave.DoniConfermati = nave.rec.donatore.arrdonatori.filter((rec) => rec.made_gift && !(rec.ind_order === nave.rec.donatore.recmediatore.ind_order && (rec.num_tess % 2) === 0)).reduce((sum, item) => sum + 1, 0);
- }
- }
-
- const fieldsvalue = {
- DoniAttesaDiConferma: nave.DoniAttesaDiConferma,
- DoniTotali: nave.DoniTotali,
- DoniMancanti: nave.DoniMancanti,
- DoniConfermati: nave.DoniConfermati,
- tutor_namesurname: nave.tutor_namesurname,
- };
-
- const risu = await NavePersistente.findOneAndUpdate({ _id: nave._id }, { $set: fieldsvalue }, { new: false });
-
- nave._doc.rec = nave.rec;
- }
- } catch (e) {
- console.error(e.message);
- }
-
- return nave;
-
-};
-
-NaveSchema.statics.getNextNumTess = async function (idapp, ind_order) {
- const Nave = this;
-
- const rec = await Nave.findOne({ idapp, ind_order }, { num_tess: 1 }).sort({ num_tess: -1 });
- if (!!rec) {
-
- if (rec.num_tess % 2 === 0) {
- rec.num_tess++;
- } else {
- rec.num_tess += 2;
- }
-
- return rec.num_tess
- } else {
- return 1;
- }
-
-};
-
-NaveSchema.statics.getnumNaviByUsername = async function (idapp, username) {
- const Nave = this;
-
- try {
-
- const { ListaIngresso } = require('./listaingresso');
-
- // Get array di ind_order
- const arrind_order = await ListaIngresso.find({ idapp, username }).distinct('ind_order');
-
- const arrrec = await Nave.find({ idapp, ind_order: arrind_order, num_tess: { $mod: [2, 1] } }, {
- riga: 1,
- col: 1,
- ind_order: 1
- });
-
- // SOLO QUELLE PERMANENTI !
- let ind = 0;
- for (const mynave of arrrec) {
- const trovato = await NavePersistente.findByRigaColByDonatore(idapp, mynave.riga, mynave.col, 0);
- if (!!trovato) {
- ind++;
- }
- }
-
- return ind;
-
- } catch (e) {
- console.error(e.message);
- }
-};
-
-NaveSchema.statics.checkIfMadeGift = async function (idapp, username) {
- const Nave = this;
-
- const { ListaIngresso } = require('./listaingresso');
-
- const arrlistaingr = await ListaIngresso.find({ idapp, username });
- for (const ingr of arrlistaingr) {
-
- let mynave = await Nave.findOne({ idapp, ind_order: ingr.ind_order, made_gift: true });
- if (!!mynave) {
- return true;
- }
- }
-
- return false;
-
-
-};
-
-NaveSchema.statics.delNaviProvvisorie = async function (idapp) {
- const Nave = this;
-
- let num = 0;
-
- const arrnavi = await Nave.find({ idapp });
-
- for (const nave of arrnavi) {
- let persistente = await NavePersistente.findByRigaColByDonatore(idapp, nave.riga, nave.col, 0);
- if (!!persistente) {
- if (persistente.provvisoria) {
- let ris = await Nave.deleteOne({ _id: nave._id });
- if (!!ris) {
- num++;
- }
- }
- }
- }
-
- // Pulisci gli added se era stato cancellato dalla nave
- await Nave.pulisciNonPresenzeInNave(idapp);
-
- const data = await Nave.getLastRigaCol(idapp);
- await Nave.setRiga(idapp, data.riga);
- await Nave.setCol(idapp, data.col + 1);
-
- const maxcol = tools.getmaxcol(data.riga);
- if (data.col === maxcol) {
- await Nave.setRiga(idapp, data.riga + 1);
- await Nave.setCol(idapp, 1);
- }
-
- return { num };
-
-};
-
-
-NaveSchema.statics.getSognatoreByRigaColMediatore = async function (idapp, navemediatore) {
- const Nave = this;
-
- const ris = tools.getRigaColSognatoreByMediatore(idapp, navemediatore.riga, navemediatore.col);
-
- const myquery = getQueryProj({
- idapp,
- riga: ris.riga,
- col: ris.col,
- });
-
- arrrec = await Nave.aggregate(myquery);
-
- if (!!arrrec) {
- if (arrrec.length > 0)
- return arrrec[0];
- }
-
- return null;
-};
-
-const Nave = mongoose.model('Nave', NaveSchema);
-
-module.exports = { Nave };
-
-
diff --git a/src/server/models/navepersistente.js b/src/server/models/navepersistente.js
deleted file mode 100755
index 0851341..0000000
--- a/src/server/models/navepersistente.js
+++ /dev/null
@@ -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 };
-
-
diff --git a/src/server/models/user.js b/src/server/models/user.js
index 8455303..63183b7 100755
--- a/src/server/models/user.js
+++ b/src/server/models/user.js
@@ -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);
}
diff --git a/src/server/populate/levels.js b/src/server/populate/levels.js
new file mode 100644
index 0000000..a65e8b2
--- /dev/null
+++ b/src/server/populate/levels.js
@@ -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},
+ ],
+};
diff --git a/src/server/populate/populate.js b/src/server/populate/populate.js
index 6a4255a..5d76f7c 100644
--- a/src/server/populate/populate.js
+++ b/src/server/populate/populate.js
@@ -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');
diff --git a/src/server/populate/statusskills.js b/src/server/populate/statusskills.js
new file mode 100644
index 0000000..09939cc
--- /dev/null
+++ b/src/server/populate/statusskills.js
@@ -0,0 +1,6 @@
+module.exports = {
+ list: [
+ {_id: 1, descr: 'Di Persona'},
+ {_id: 2, descr: 'On Line'},
+ ],
+};
diff --git a/src/server/router/api/actions.js b/src/server/router/api/actions.js
index 04e61fb..5009b3a 100755
--- a/src/server/router/api/actions.js
+++ b/src/server/router/api/actions.js
@@ -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) {
diff --git a/src/server/router/dashboard_router.js b/src/server/router/dashboard_router.js
index 609c3cc..22ddad5 100755
--- a/src/server/router/dashboard_router.js
+++ b/src/server/router/dashboard_router.js
@@ -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;
diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js
index ba57c9b..9248ce2 100755
--- a/src/server/router/index_router.js
+++ b/src/server/router/index_router.js
@@ -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__'];
@@ -411,7 +423,7 @@ router.post('/settable', authenticate, (req, res) => {
}
});
- }catch (e) {
+ } catch (e) {
return res.status(400).send(e);
}
@@ -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,13 +1425,13 @@ 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) {
+ } catch (e) {
console.error('newname', e);
}
diff --git a/src/server/router/mygroups_router.js b/src/server/router/mygroups_router.js
new file mode 100755
index 0000000..3dd0a4b
--- /dev/null
+++ b/src/server/router/mygroups_router.js
@@ -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;
diff --git a/src/server/router/site_router.js b/src/server/router/site_router.js
index 2efdb73..7bd5707 100755
--- a/src/server/router/site_router.js
+++ b/src/server/router/site_router.js
@@ -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),
diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js
index 66db61f..70cea18 100755
--- a/src/server/router/users_router.js
+++ b/src/server/router/users_router.js
@@ -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 };
diff --git a/src/server/server.js b/src/server/server.js
index 0a5d187..5a9218a 100755
--- a/src/server/server.js
+++ b/src/server/server.js
@@ -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);
diff --git a/src/server/telegram/telegrambot.js b/src/server/telegram/telegrambot.js
index 903a93c..d855402 100755
--- a/src/server/telegram/telegrambot.js
+++ b/src/server/telegram/telegrambot.js
@@ -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://';
@@ -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);
diff --git a/src/server/tools/general.js b/src/server/tools/general.js
index b3f76f0..0009c54 100755
--- a/src/server/tools/general.js
+++ b/src/server/tools/general.js
@@ -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;
}
diff --git a/src/server/tools/shared_nodejs.js b/src/server/tools/shared_nodejs.js
index d0ed632..9f9efe9 100755
--- a/src/server/tools/shared_nodejs.js
+++ b/src/server/tools/shared_nodejs.js
@@ -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'],