- 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 { 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();
|
||||
|
||||
Reference in New Issue
Block a user