- FIX: duplicati dei Circuiti e Rimozione !

This commit is contained in:
Surya Paolo
2024-02-17 16:04:22 +01:00
parent 1268c961cf
commit 6d8a5ae137

View File

@@ -1235,6 +1235,8 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
const { MyGroup } = require('../models/mygroup');
const { SendNotif } = require('../models/sendnotif');
const idapp = tools.RISO;
try {
console.log('--------- INIZIO CONTROLLO CheckTransazioniCircuiti -----------');
@@ -1243,6 +1245,84 @@ CircuitSchema.statics.CheckTransazioniCircuiti = async function (correggi) {
else
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;
const arrcircuits = await Circuit.find({ idapp }).lean();