From d59ee578c9dff6b6ce58560b9a60119eed24d75b Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Wed, 25 Mar 2020 18:26:51 +0100 Subject: [PATCH] Lista Doni Navi 3 --- src/server/models/nave.js | 73 ++++-- src/server/models/navepersistente.js | 178 ++++++++++++++ src/server/router/dashboard_router.js | 82 +++---- src/server/router/index_router.js | 3 + src/server/router/users_router.js | 340 +++++++++++++++----------- src/server/tools/general.js | 18 +- 6 files changed, 485 insertions(+), 209 deletions(-) create mode 100755 src/server/models/navepersistente.js diff --git a/src/server/models/nave.js b/src/server/models/nave.js index 7341ff1..821cad1 100755 --- a/src/server/models/nave.js +++ b/src/server/models/nave.js @@ -4,6 +4,7 @@ const _ = require('lodash'); const tools = require('../tools/general'); const { ListaIngresso } = require('./listaingresso'); +const { NavePersistente } = require('./navepersistente'); const { Settings } = require('./settings'); const { User } = require('./user'); @@ -76,15 +77,21 @@ const NaveSchema = new mongoose.Schema({ type: Number, default: 1 }, + note: { + type: String + }, provvisoria: { type: Boolean }, - note: { + /* note_bot: { type: String }, note_interne: { type: String - } + }, + tutor: { + type: String + }*/ }); NaveSchema.statics.getTotInLista = async function (idapp) { @@ -419,15 +426,10 @@ function getQueryProj(myfilter) { username: 1, 'profile.paymenttypes': 1, 'profile.email_paypal': 1, - date_start: 1, - date_gift_chat_open: 1, made_gift: 1, - link_chat: 1, sent_msg_howto_make_gift: 1, date_made_gift: 1, - provvisoria: 1, note: 1, - note_interne: 1, received_gift: 1, date_received_gift: 1, num_tess: 1, @@ -436,6 +438,14 @@ function getQueryProj(myfilter) { 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 = [ @@ -527,8 +537,7 @@ NaveSchema.statics.getPlaccaGenerica = async function (idapp, riga, col, offset, try { let recsognatori = await Nave.findSognatoriByFuoco(idapp, riga, col, offset); let recmediatore = await Nave.findMediatoreByFuoco(idapp, riga, col, offset); - - let primofuoco = getPrimoFuocoByIndCol(col); + let navepersistente = await NavePersistente.findByRigaColByDonatore(idapp, riga, col, offset); mystr = tools.ACAPO; @@ -562,7 +571,7 @@ NaveSchema.statics.getPlaccaGenerica = async function (idapp, riga, col, offset, let arrdonatori = []; // let numcol = Math.pow(2, indriga - 1); - primofuoco = getPrimoFuocoByIndCol(col * Math.pow(2, offset)); + let primofuoco = getPrimoFuocoByIndCol(col * Math.pow(2, offset)); let ind = 1; for (let indcol = primofuoco; indcol < primofuoco + 8; indcol++) { @@ -589,6 +598,7 @@ NaveSchema.statics.getPlaccaGenerica = async function (idapp, riga, col, offset, res = { recsognatori, recmediatore, + navepersistente, arrdonatori }; @@ -624,6 +634,7 @@ NaveSchema.statics.getPlaccaPerDonatore = async function (idapp, riga, col, solo 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); @@ -681,6 +692,7 @@ NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord) { 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 = '🌈SOGNATORE: '; @@ -746,15 +758,17 @@ NaveSchema.statics.getNavePos = async function (idapp, riga, col, solorecord) { let data = ""; let mystrtemp = ''; if (primofuoco) { - data = '💬 Giorno di Apertura GIFT CHAT: ' + tools.getstrDateLong(primofuoco.date_gift_chat_open) + tools.ACAPO; - data += "🎁 Giorno in cui Inviare il DONO : " + tools.getstrDateLong(primofuoco.date_start) + tools.ACAPO; - if (!!recmediatore.note) - data += "Note: " + recmediatore.note + tools.ACAPO; + data = '💬 Giorno di Apertura GIFT CHAT: ' + tools.getstrDateLong(recnavepersistente.date_gift_chat_open) + tools.ACAPO; + + if (!!recnavepersistente.tutor_namesurname) + data += 'Il Mediatore sarà contattato 1 giorno prima dal Tutor ' + recnavepersistente.tutor_namesurname + tools.ACAPO; + + data += "🎁 Giorno in cui Inviare il DONO : " + tools.getstrDateLong(recnavepersistente.date_start) + tools.ACAPO; + if (!!recnavepersistente.note_bot) + data += "Note: " + recnavepersistente.note_bot + tools.ACAPO; data += tools.ACAPO; - data += 'Il Mediatore sarà contattato 1 giorno prima dal Tutor' + tools.ACAPO; - - if (primofuoco.provvisoria) + if (recnavepersistente.provvisoria) mystrtemp = 'TEMPORANEA '; } else data = ""; @@ -803,6 +817,8 @@ async function Fuochi8Completati(idapp, params) { NaveSchema.statics.getArrPosizioniByIndOrder = async function (idapp, ind_order) { const Nave = this; + + arrposizioni = await Nave.find({ 'idapp': idapp, ind_order }).sort({ riga: 1, col: 1 }); return arrposizioni; @@ -826,7 +842,9 @@ NaveSchema.statics.showListaOrd = async function (idapp) { let mystr = ''; let conta = 1; for (const rec of arrrec) { - mystr += '[' + conta + '] [' + rec.riga + '.' + rec.col + '] ' + rec.ind_order + ' ' + rec.name + ' ' + rec.surname + ' (' + tools.getstrDateShort(rec.date_start) + ')\n'; + let recnavepersistente = await NavePersistente.findByRigaColByDonatore(idapp, rec.riga, rec.col, 0); + + mystr += '[' + conta + '] [' + rec.riga + '.' + rec.col + '] ' + rec.ind_order + ' ' + rec.name + ' ' + rec.surname + ' (' + tools.getstrDateShort(recnavepersistente.date_start) + ')\n'; conta++; } @@ -841,6 +859,19 @@ NaveSchema.statics.getLastRigaCol = async function (idapp) { async function addRecordNaveByParams(params, siRitesse) { const { ListaIngresso } = require('./listaingresso'); + let mypos = { + idapp: params.idapp, + riga: params.riga, + col: params.col, + numup: -3 + }; + tools.getRigaColByPosUp(mypos); + + params.riga1don = mypos.riga; + params.col1don = mypos.col; + + await NavePersistente.addRecordNavePersistenteByParams(params); + if (!siRitesse) { // Check if Exist: const giapresente = await Nave.findOne({ @@ -863,10 +894,7 @@ async function addRecordNaveByParams(params, siRitesse) { ind_order: params.ind_order, riga: params.riga, col: params.col, - date_start: params.date_start, - date_gift_chat_open: params.date_gift_chat_open, num_tess: params.num_tess, - provvisoria: params.provvisoria, }); myNave.created = new Date(); @@ -1040,9 +1068,10 @@ NaveSchema.statics.generaNave = async function (idapp, mydata) { let myNave = new Nave({ idapp, indprimario: 0, ind_order: 0, riga: 0, col: 0 }); myNave.created = new Date(); myNave.parent_id = ObjectID("5e592aecbfd0b75f3021d9c9"); - myNave.date_start = params.date_start; await myNave.save(); + await NavePersistente.addRecordNavePersistenteByParams({ idapp, riga: 0, col: 0, riga1don: 0, col1don: 0 }); + const userFondo = await User.findByIndOrder(idapp, 0); if (!userFondo || userFondo === undefined) { await telegrambot.sendMsgTelegramToTheAdmin(idapp, 'Devi creare l\'utente FONDO , con ind_order = 0 ! '); diff --git a/src/server/models/navepersistente.js b/src/server/models/navepersistente.js new file mode 100755 index 0000000..bb82930 --- /dev/null +++ b/src/server/models/navepersistente.js @@ -0,0 +1,178 @@ +const mongoose = require('mongoose'); +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 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, + }, + note_bot: { + type: String + }, + note_interne: { + type: String + }, + tutor: { + type: String + }, + tutor_namesurname: { + type: String + } +}); + +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 = function (idapp) { + const NavePersistente = this; + + const myfind = { idapp }; + + return NavePersistente.find(myfind).sort({ riga: 1, col: 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) { + return NavePersistente.findOne({ idapp }).sort({ _id: -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(); +}); + + +NavePersistenteSchema.statics.addRecordNavePersistenteByParams = async function (params) { + + // Check if Exist: + const giapresente = await NavePersistente.findOne({ + idapp: params.idapp, + riga: params.riga, + col: params.col + }); + + if (!giapresente) { + let myNavePersistente = new NavePersistente({ + idapp: params.idapp, + riga: params.riga, + col: params.col, + riga1don: params.riga1don, + col1don: params.col1don, + date_start: params.date_start, + date_gift_chat_open: params.date_gift_chat_open, + provvisoria: params.provvisoria, + }); + return await myNavePersistente.save(); + } + + return false; +}; + + +const NavePersistente = mongoose.model('NavePersistente', NavePersistenteSchema); + +module.exports = { NavePersistente }; + + diff --git a/src/server/router/dashboard_router.js b/src/server/router/dashboard_router.js index b54673c..4d43cf3 100755 --- a/src/server/router/dashboard_router.js +++ b/src/server/router/dashboard_router.js @@ -10,6 +10,7 @@ const { authenticate } = require('../middleware/authenticate'); const { User } = require('../models/user'); const { Nave } = require('../models/nave'); +const { NavePersistente } = require('../models/navepersistente'); const mongoose = require('mongoose'); const Subscription = mongoose.model('subscribers'); @@ -122,58 +123,55 @@ router.post('/getnavi', authenticate, async (req, res) => { router.post('/getdoninavi', authenticate, async (req, res) => { const idapp = req.body.idapp; + const ricalcola = req.body.ricalcola; - let arrnavi = []; - let navi_partenza = []; + let arrnavi = await NavePersistente.findAllIdApp(idapp); let test = false; + //arrnavi.push({ riga: indriga, col: indcol, rigadon: indriga + 3, coldon: (indcol * 8) - 7 }); + try { - for (let indriga = 1; indriga <= 9; indriga++) { - const mynave = await Nave.getPrimaNaveByRiga(idapp, indriga); - if (!!mynave) { - navi_partenza.push(mynave); - let numcol = Math.pow(2, indriga - 1); + if (ricalcola) { + let index = 1; - let quanti = Math.ceil(numcol / 8); + for (nave of arrnavi) { + nave.rec = await Nave.getNaveByRigaCol(idapp, nave.riga1don, nave.col1don); + /*mypos = { + riga: nave.riga, + col: nave.col, + numup: 3, + }; + tools.getRigaColByPosUp(mypos);*/ - // let quanti = Math.ceil(numcol / 8); + nave.index = index; + nave.DoniAttesaDiConferma = 0; + nave.DoniMancanti = 0; + nave.DoniConfermati = 0; + nave.tutor_namesurname = await User.getNameSurnameByUsername(idapp, nave.tutor); - for (let indcol = 1; indcol <= numcol; indcol++) { - arrnavi.push({ riga: indriga, col: indcol, rigadon: indriga + 3, coldon: (indcol * 8) - 7 }); + if (!!nave.rec) { + if (!!nave.rec.donatore) { + 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))).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))).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)).reduce((sum, item) => sum + 1, 0); + } } + const fieldsvalue = { + DoniAttesaDiConferma: nave.DoniAttesaDiConferma, + 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; + index++; } - } - - let index = 1; - - for (nave of arrnavi) { - nave.rec = await Nave.getNaveByRigaCol(idapp, nave.rigadon, nave.coldon); - /*mypos = { - riga: nave.riga, - col: nave.col, - numup: 3, - }; - tools.getRigaColByPosUp(mypos);*/ - - nave.index = index; - if (!!nave.rec.donatore.recmediatore) { - nave.id = nave.rec.donatore.recmediatore._id; - nave.note = nave.rec.donatore.recmediatore.note; - } else { - nave.id = null; + } else { + arrnavi = await NavePersistente.findAllIdApp(idapp); + for (nave of arrnavi) { + nave._doc.rec = await Nave.getNaveByRigaCol(idapp, nave.riga1don, nave.col1don); } - nave.DoniAttesaDiConferma = 0; - nave.DoniMancanti = 0; - nave.DoniMancanti = 0; - - if (!!nave.rec) { - if (!!nave.rec.donatore) { - 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))).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))).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)).reduce((sum, item) => sum + 1, 0); - } - } - index++; } ris = { arrnavi }; diff --git a/src/server/router/index_router.js b/src/server/router/index_router.js index 6b453af..1d5d612 100755 --- a/src/server/router/index_router.js +++ b/src/server/router/index_router.js @@ -29,6 +29,7 @@ const _ = require('lodash'); const { User } = require('../models/user'); const { Nave } = require('../models/nave'); +const { NavePersistente } = require('../models/navepersistente'); const { ExtraList } = require('../models/extralist'); const { Booking } = require('../models/booking'); const { Operator } = require('../models/operator'); @@ -214,6 +215,8 @@ function getTableByTableName(tablename) { mytable = MailingList; else if (tablename === 'navi') mytable = Nave; + else if (tablename === 'navepersistente') + mytable = NavePersistente; else if (tablename === 'listaingressos') mytable = ListaIngresso; diff --git a/src/server/router/users_router.js b/src/server/router/users_router.js index 9479437..773d661 100755 --- a/src/server/router/users_router.js +++ b/src/server/router/users_router.js @@ -3,6 +3,7 @@ const router = express.Router(); const { User } = require('../models/user'); const { Nave } = require('../models/nave'); +const { NavePersistente } = require('../models/navepersistente'); const { ListaIngresso } = require('../models/listaingresso'); const { ExtraList } = require('../models/extralist'); const { ObjectID } = require('mongodb'); @@ -417,158 +418,217 @@ router.post('/dbop', authenticate, async (req, res) => { let ris = await User.DbOp(idapp, mydata); - if (mydata.dbop === 'creaNaviProvvisorie') { - mydata.provvisoria = true; - const num = await Nave.generaNave(idapp, mydata); - ris = { num }; - } else if (mydata.dbop === 'creaNaviDefinitive') { - mydata.provvisoria = false; - const num = await Nave.generaNave(idapp, mydata); - ris = { num }; - } else if (mydata.dbop === 'delNavi') { - await Nave.setRiga(idapp, 1); - await Nave.setCol(idapp, 1); - const num = await Nave.remove({ idapp }); - ris = { num }; - } else if (mydata.dbop === 'delNaviNoStarted') { - await Nave.setRiga(idapp, 1); - await Nave.setCol(idapp, 1); - const num = await Nave.remove({ idapp, date_start: { $gte: tools.IncDateNow(-1000 * 60 * 60 * 24 * 3) } }); - ris = { num }; - } else if (mydata.dbop === 'delNaviProvvisorie') { - const num = await Nave.remove({ idapp, provvisoria: true }); + try { - const data = await Nave.getLastRigaCol(idapp); - await Nave.setRiga(idapp, data.riga); - await Nave.setCol(idapp, data.col + 1); + if (mydata.dbop === 'creaNaviProvvisorie') { + mydata.provvisoria = true; + const num = await Nave.generaNave(idapp, mydata); + ris = { num }; + } else if (mydata.dbop === 'creaNaviDefinitive') { + mydata.provvisoria = false; + const num = await Nave.generaNave(idapp, mydata); + ris = { num }; + } else if (mydata.dbop === 'delNavi') { + await Nave.setRiga(idapp, 1); + await Nave.setCol(idapp, 1); + const num = await Nave.remove({ idapp }); + ris = { num }; + // } else if (mydata.dbop === 'delNaviNoStarted') { + // await Nave.setRiga(idapp, 1); + // await Nave.setCol(idapp, 1); + // const num = await Nave.remove({ idapp, date_start: { $gte: tools.IncDateNow(-1000 * 60 * 60 * 24 * 3) } }); + // ris = { num }; + } else if (mydata.dbop === 'delNaviProvvisorie') { + const num = await Nave.remove({ idapp, provvisoria: true }); - ris = { num }; - } else if (mydata.dbop === 'visuListaNave') { - const mystr = await Nave.showListaOrd(idapp); - ris = { mystr }; - } else if (mydata.dbop === 'pulisciNonPresenzeInNave') { - const mystr = await Nave.pulisciNonPresenzeInNave(idapp); - ris = { mystr }; - } else if (mydata.dbop === 'checkInserimentiUtentiInNave') { - const mystr = await Nave.checkIfDevoAggiungereInNave(idapp); - ris = { mystr }; - } else if (mydata.dbop === 'visuListaIngresso') { - const mystr = await ListaIngresso.showListaOrd(idapp); - ris = { mystr }; - } else if (mydata.dbop === 'initListaIngresso') { - // const aaa = await User.updateMany({ idapp }, { $set: { 'profile.nationality': 'IT' } }); + const data = await Nave.getLastRigaCol(idapp); + await Nave.setRiga(idapp, data.riga); + await Nave.setCol(idapp, data.col + 1); - const num = await ListaIngresso.updateMany({ idapp }, { $set: { added: false } }); + ris = { num }; + } else if (mydata.dbop === 'visuListaNave') { + const mystr = await Nave.showListaOrd(idapp); + ris = { mystr }; + } else if (mydata.dbop === 'pulisciNonPresenzeInNave') { + const mystr = await Nave.pulisciNonPresenzeInNave(idapp); + ris = { mystr }; + } else if (mydata.dbop === 'checkInserimentiUtentiInNave') { + const mystr = await Nave.checkIfDevoAggiungereInNave(idapp); + ris = { mystr }; + } else if (mydata.dbop === 'visuListaIngresso') { + const mystr = await ListaIngresso.showListaOrd(idapp); + ris = { mystr }; + } else if (mydata.dbop === 'initListaIngresso') { + // const aaa = await User.updateMany({ idapp }, { $set: { 'profile.nationality': 'IT' } }); - ris = { num }; - } else if (mydata.dbop === 'ImpostaATuttiPaypal') { - const listautenti = await User.find({ idapp }); - let num = 0; - for (let rec of listautenti) { - if (!rec._doc.profile.paymenttypes.includes('paypal')) { - rec._doc.profile.paymenttypes = [...rec._doc.profile.paymenttypes, 'paypal']; - const user = await User.findOneAndUpdate({ _id: rec._id }, { $set: { 'profile.paymenttypes': rec._doc.profile.paymenttypes } }); - // await rec.save(); - num++; - } - // const num = await User.f({ idapp }, { $set: { 'profile: false } }); - } + const num = await ListaIngresso.updateMany({ idapp }, { $set: { added: false } }); - - ris = { num }; - } else if (mydata.dbop === 'numtessUno') { - const listanavi = await ListaIngresso.find({ idapp }); - let num = 0; - for (let rec of listanavi) { - if (!rec._doc.num_tess) { - rec._doc.num_tess = 1; - const risu = await ListaIngresso.findOneAndUpdate({ _id: rec._id }, { $set: { num_tess: rec._doc.num_tess } }, { new: false }); - // await rec.save(); - if (!!risu) - num++; - } - // const num = await User.f({ idapp }, { $set: { 'profile: false } }); - } - - - ris = { num }; - } else if (mydata.dbop === 'Corregginumtess') { - const listanavi = await Nave.find({ idapp }); - let num = 0; - for (let rec of listanavi) { - const myarrrec = await Nave.find({ idapp, ind_order: rec.ind_order }).sort({ riga: 1, col: 1 }); - let indextess = 1; - for (let ind = 0; ind < myarrrec.length; ind++) { - if (myarrrec[ind].num_tess !== indextess) { - myarrrec[ind].num_tess = indextess; - const risu = await Nave.findOneAndUpdate({ _id: myarrrec[ind]._id }, { $set: { num_tess: myarrrec[ind].num_tess } }, { new: false }); + ris = { num }; + } else if (mydata.dbop === 'ImpostaATuttiPaypal') { + const listautenti = await User.find({ idapp }); + let num = 0; + for (let rec of listautenti) { + if (!rec._doc.profile.paymenttypes.includes('paypal')) { + rec._doc.profile.paymenttypes = [...rec._doc.profile.paymenttypes, 'paypal']; + const user = await User.findOneAndUpdate({ _id: rec._id }, { $set: { 'profile.paymenttypes': rec._doc.profile.paymenttypes } }); + // await rec.save(); num++; } - indextess++; - } - } - - ris = { num }; - } else if (mydata.dbop === 'creaUtentiTest') { - - let num = 0; - lastrec = await User.find({ idapp }).sort({ _id: -1 }).limit(1); - for (let ind = 0; ind < 100; ind++) { - let myuser = new User(); - myuser._id = new ObjectID(); - myuser.ind_order = lastrec[0].ind_order + ind + 1; - myuser.idapp = idapp; - myuser.password = "$2a$12$DEaX1h5saTUVC43f7kubyOAlah1xHDgqQTfSIux0.RFDT9WGbyCaG"; - myuser.lang = 'it'; - myuser.email = "miaemail@email.it"; - myuser.name = 'U' + myuser.ind_order; - myuser.surname = 'Ar' + myuser.ind_order; - myuser.verified_email = true; - if (myuser.ind_order < 2) - myuser.perm = "3"; - myuser.username = "Userna_" + myuser.name; - myuser.profile.special_req = true; - myuser.profile.nationality = 'IT'; - await myuser.save(); - num++; - } - - ris = { num }; - } else if (mydata.dbop === 'visuPlacca') { - const rec = {}; - const placca = await Nave.getPlaccaPerDonatore(idapp, parseInt(mydata.riga), parseInt(mydata.col), false, rec); - - telegrambot.sendMsgTelegramToTheAdmin(idapp, placca); - - ris = { placca }; - } else if (mydata.dbop === 'visuNave') { - const mystr = await Nave.getNavePos(idapp, parseInt(mydata.riga), parseInt(mydata.col)); - - const visu_nave_Bot = await Settings.getValDbSettings(idapp, 'VISU_NAVE_BOT'); - if (visu_nave_Bot) - telegrambot.sendMsgTelegramToTheAdmin(idapp, mystr, true); - - ris = { mystr }; - } else if (mydata.dbop === 'getnavibyuser') { - - let arrnavi = null; - - const user = await User.getUserShortDataByUsername(idapp, mydata.username); - if (user) { - arrnavi = await Nave.getArrPosizioniByIndOrder(idapp, user.ind_order); - - for (let mynave of arrnavi) { - mynave._doc.rec = await Nave.getNaveByRigaCol(idapp, mynave.riga, mynave.col); + // const num = await User.f({ idapp }, { $set: { 'profile: false } }); } + + ris = { num }; + } else if (mydata.dbop === 'numtessUno') { + const listanavi = await ListaIngresso.find({ idapp }); + let num = 0; + for (let rec of listanavi) { + if (!rec._doc.num_tess) { + rec._doc.num_tess = 1; + const risu = await ListaIngresso.findOneAndUpdate({ _id: rec._id }, { $set: { num_tess: rec._doc.num_tess } }, { new: false }); + // await rec.save(); + if (!!risu) + num++; + } + // const num = await User.f({ idapp }, { $set: { 'profile: false } }); + } + + + ris = { num }; + } else if (mydata.dbop === 'Corregginumtess') { + const listanavi = await Nave.find({ idapp }); + let num = 0; + for (let rec of listanavi) { + const myarrrec = await Nave.find({ idapp, ind_order: rec.ind_order }).sort({ riga: 1, col: 1 }); + let indextess = 1; + for (let ind = 0; ind < myarrrec.length; ind++) { + if (myarrrec[ind].num_tess !== indextess) { + myarrrec[ind].num_tess = indextess; + const risu = await Nave.findOneAndUpdate({ _id: myarrrec[ind]._id }, { $set: { num_tess: myarrrec[ind].num_tess } }, { new: false }); + num++; + } + indextess++; + } + } + + ris = { num }; + } else if (mydata.dbop === 'CreaNaviPersistenti') { + const listanavi = await Nave.find({ idapp }).sort({riga: 1, col: 1}); + + let params = { + idapp + }; + + let num = 0; + for (let rec of listanavi) { + let mypos = { + idapp, + riga: rec.riga, + col: rec.col, + numup: 3 + }; + tools.getRigaColByPosUp(mypos); + let persistente = await NavePersistente.findByRigaCol(idapp, mypos.riga, mypos.col, 0); + if (!persistente) { + + params.date_start = rec.date_start; + params.date_gift_chat_open = rec.date_gift_chat_open; + params.provvisoria = rec.provvisoria; + params.riga = mypos.riga; + params.col = mypos.col; + if (rec.riga > 3) { + params.riga1don = rec.riga; + params.col1don = rec.col; + } else { + params.riga1don = rec.riga; + params.col1don = rec.col; + } + if (params.riga > 0) { + await NavePersistente.addRecordNavePersistenteByParams(params); + num++; + } + } + } + + ris = { num }; + } else if (mydata.dbop === 'CorreggiDataGiftChat') { + const listanavi = await NavePersistente.find({ idapp }); + let num = 0; + for (let rec of listanavi) { + const fieldsvalue = { + date_gift_chat_open: tools.AddDate(rec.date_start, -7) + }; + const risu = await NavePersistente.findOneAndUpdate({ _id: rec._id }, { $set: fieldsvalue }, { new: false }); + if (!!risu) { + num++; + } + } + + ris = { num }; + } else if (mydata.dbop === 'creaUtentiTest') { + + let num = 0; + lastrec = await User.find({ idapp }).sort({ _id: -1 }).limit(1); + for (let ind = 0; ind < 100; ind++) { + let myuser = new User(); + myuser._id = new ObjectID(); + myuser.ind_order = lastrec[0].ind_order + ind + 1; + myuser.idapp = idapp; + myuser.password = "$2a$12$DEaX1h5saTUVC43f7kubyOAlah1xHDgqQTfSIux0.RFDT9WGbyCaG"; + myuser.lang = 'it'; + myuser.email = "miaemail@email.it"; + myuser.name = 'U' + myuser.ind_order; + myuser.surname = 'Ar' + myuser.ind_order; + myuser.verified_email = true; + if (myuser.ind_order < 2) + myuser.perm = "3"; + myuser.username = "Userna_" + myuser.name; + myuser.profile.special_req = true; + myuser.profile.nationality = 'IT'; + await myuser.save(); + num++; + } + + ris = { num }; + } else if (mydata.dbop === 'visuPlacca') { + const rec = {}; + const placca = await Nave.getPlaccaPerDonatore(idapp, parseInt(mydata.riga), parseInt(mydata.col), false, rec); + + telegrambot.sendMsgTelegramToTheAdmin(idapp, placca); + + ris = { placca }; + } else if (mydata.dbop === 'visuNave') { + const mystr = await Nave.getNavePos(idapp, parseInt(mydata.riga), parseInt(mydata.col)); + + const visu_nave_Bot = await Settings.getValDbSettings(idapp, 'VISU_NAVE_BOT'); + if (visu_nave_Bot) + telegrambot.sendMsgTelegramToTheAdmin(idapp, mystr, true); + + ris = { mystr }; + } else if (mydata.dbop === 'getnavibyuser') { + + let arrnavi = null; + + const user = await User.getUserShortDataByUsername(idapp, mydata.username); + if (user) { + arrnavi = await Nave.getArrPosizioniByIndOrder(idapp, user.ind_order); + + for (let mynave of arrnavi) { + mynave._doc.rec = await Nave.getNaveByRigaCol(idapp, mynave.riga, mynave.col); + } + + } + + ris = { data: arrnavi }; } - ris = { data: arrnavi }; + + // console.log('ris', ris); + + res.send(ris); + } catch (e) { + console.log(e); } - - // console.log('ris', ris); - - res.send(ris); } ); diff --git a/src/server/tools/general.js b/src/server/tools/general.js index 26bb91a..24edbe1 100755 --- a/src/server/tools/general.js +++ b/src/server/tools/general.js @@ -839,8 +839,14 @@ module.exports = { }, getRigaColByPosUp(mypos) { - mypos.riga = mypos.riga - mypos.numup; - mypos.col = Math.ceil(mypos.col / (Math.pow(2, mypos.numup))); + if (mypos.numup > 0) { + mypos.riga = mypos.riga - mypos.numup; + mypos.col = Math.ceil(mypos.col / (Math.pow(2, mypos.numup))); + } + if (mypos.numup < 0) { + mypos.riga = mypos.riga - mypos.numup; + mypos.col = Math.ceil(mypos.col * (Math.pow(2, -mypos.numup))); + } }, appendLeadingZeroes(n) { @@ -1111,9 +1117,6 @@ module.exports = { } if (table === 'navi') { - if ('link_chat' in fieldsvalue) { - return true; - } if ('date_made_gift' in fieldsvalue) { return true; } @@ -1121,6 +1124,11 @@ module.exports = { return true; } } + if (table === 'navepersistente') { + if ('link_chat' in fieldsvalue) { + return true; + } + } return false; },