- FIX: duplicati dei Circuiti e Rimozione !
This commit is contained in:
@@ -1235,6 +1235,8 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
|
|||||||
const { MyGroup } = require('../models/mygroup');
|
const { MyGroup } = require('../models/mygroup');
|
||||||
const { SendNotif } = require('../models/sendnotif');
|
const { SendNotif } = require('../models/sendnotif');
|
||||||
|
|
||||||
|
const idapp = tools.RISO;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
console.log('--------- INIZIO CONTROLLO CheckTransazioniCircuiti -----------');
|
console.log('--------- INIZIO CONTROLLO CheckTransazioniCircuiti -----------');
|
||||||
|
|
||||||
@@ -1243,6 +1245,84 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
|
|||||||
else
|
else
|
||||||
console.log('SOLO VERIFICA');
|
console.log('SOLO VERIFICA');
|
||||||
|
|
||||||
|
|
||||||
|
if (correggi) {
|
||||||
|
// Trova tutti i documenti che contengono circuitname a null nell'array mycircuits
|
||||||
|
const usersWithNullCircuit = await User.find({ idapp, "profile.mycircuits.circuitname": null });
|
||||||
|
|
||||||
|
// Itera su ciascun documento
|
||||||
|
for (const user of usersWithNullCircuit) {
|
||||||
|
// Rimuove i campi null dall'array mycircuits
|
||||||
|
user.profile.mycircuits = user.profile.mycircuits.filter(circuit => circuit.circuitname !== null);
|
||||||
|
|
||||||
|
// Salva le modifiche al documento
|
||||||
|
await User.findOneAndUpdate({ _id: user._id }, { $set: { 'profile.mycircuits': user.profile.mycircuits } });
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let usersWithDuplicateCircuits = await User.aggregate([
|
||||||
|
{
|
||||||
|
$unwind: "$profile.mycircuits"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$group: {
|
||||||
|
_id: {
|
||||||
|
userId: "$_id",
|
||||||
|
username: "$username",
|
||||||
|
circuitname: "$profile.mycircuits.circuitname"
|
||||||
|
},
|
||||||
|
count: { $sum: 1 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$match: {
|
||||||
|
count: { $gt: 1 }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
$group: {
|
||||||
|
_id: "$_id.userId",
|
||||||
|
username: { $first: "$_id.username" },
|
||||||
|
duplicatedCircuits: {
|
||||||
|
$push: "$_id.circuitname"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (usersWithDuplicateCircuits.length > 0) {
|
||||||
|
console.log("Utenti con circuitname duplicati:");
|
||||||
|
usersWithDuplicateCircuits.forEach(user => {
|
||||||
|
console.log("Username:", user.username);
|
||||||
|
console.log("Circuiti duplicati:", user.duplicatedCircuits);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (correggi) {
|
||||||
|
// CORREGGI DUPLICATI NEI CIRCUITI !
|
||||||
|
for (const user of usersWithDuplicateCircuits) {
|
||||||
|
// Troviamo l'utente dal suo _id e aggiorniamo il suo documento
|
||||||
|
const arraycirc = await User.findOne({_id: user._id}).lean();
|
||||||
|
|
||||||
|
let risdel = await User.updateOne(
|
||||||
|
{ _id: user._id },
|
||||||
|
{ $pull: { "profile.mycircuits": { circuitname: { $in: user.duplicatedCircuits } } } }
|
||||||
|
);
|
||||||
|
|
||||||
|
let risadd = await User.updateOne(
|
||||||
|
{ _id: user._id },
|
||||||
|
{ $push: { "profile.mycircuits": { $each: user.duplicatedCircuits.map(circuitname => ({ circuitname, date: arraycirc.profile.mycircuits.find((rec) => rec.circuitname === circuitname).date })) } } }
|
||||||
|
);
|
||||||
|
console.log('DEL', risdel, 'risadd', risadd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("*** FINE DUPLICATI *** ");
|
||||||
|
} else {
|
||||||
|
console.log("Nessun utente ha circuitname duplicati.");
|
||||||
|
}
|
||||||
|
|
||||||
let numtransazionitot = 0;
|
let numtransazionitot = 0;
|
||||||
|
|
||||||
const arrcircuits = await Circuit.find({ idapp }).lean();
|
const arrcircuits = await Circuit.find({ idapp }).lean();
|
||||||
|
|||||||
Reference in New Issue
Block a user