2025-04-18 13:23:59 +02:00
|
|
|
const mongoose = require('mongoose');
|
|
|
|
|
const { Schema } = mongoose;
|
|
|
|
|
|
|
|
|
|
mongoose.Promise = global.Promise;
|
|
|
|
|
mongoose.level = "F";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @typedef {Object} StatoProdotto
|
|
|
|
|
* @property {bigint} Id
|
|
|
|
|
* @property {number} IdStatoProdotto
|
|
|
|
|
* @property {string} Descrizione
|
|
|
|
|
* @property {Date} DataOra
|
|
|
|
|
* @property {boolean} Enabled
|
|
|
|
|
* @property {boolean} EnabledAlFresco
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
const StatoProdottoSchema = new Schema({
|
|
|
|
|
IdStatoProdotto: Number,
|
|
|
|
|
Descrizione: { type: String, maxlength: 100 },
|
|
|
|
|
DataOra: Date,
|
|
|
|
|
Enabled: Boolean,
|
|
|
|
|
EnabledAlFresco: Boolean
|
|
|
|
|
}, { collection: 't_web_statiprodottos' });
|
|
|
|
|
|
|
|
|
|
const T_WEB_StatiProdotto = module.exports = mongoose.model('T_WEB_StatiProdotto', StatoProdottoSchema);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module.exports.findAllIdApp = async function () {
|
|
|
|
|
const myfind = {};
|
|
|
|
|
|
|
|
|
|
const myquery = [
|
2025-04-22 18:30:48 +02:00
|
|
|
{
|
|
|
|
|
$sort: { DataOra: -1 } // Prima ordina per DataOra in modo decrescente
|
|
|
|
|
},
|
2025-04-18 13:23:59 +02:00
|
|
|
{
|
|
|
|
|
$group: {
|
2025-04-22 18:30:48 +02:00
|
|
|
_id: "$IdStatoProdotto", // Raggruppa per IdStatoProdotto
|
|
|
|
|
latestRecord: { $first: "$$ROOT" } // Prendi il primo record per ogni gruppo (cioè il più recente)
|
2025-04-18 13:23:59 +02:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
$lookup: {
|
|
|
|
|
from: 't_web_statiprodottos',
|
2025-04-22 18:30:48 +02:00
|
|
|
localField: '_id', // Usa _id che è l'IdStatoProdotto
|
2025-04-18 13:23:59 +02:00
|
|
|
foreignField: 'IdStatoProdotto',
|
|
|
|
|
as: 'record'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-04-22 18:30:48 +02:00
|
|
|
$replaceRoot: { newRoot: { $arrayElemAt: ["$record", 0] } } // Estrai il primo (e unico) record dal risultato di $lookup
|
2025-04-18 13:23:59 +02:00
|
|
|
},
|
|
|
|
|
{
|
2025-04-22 18:30:48 +02:00
|
|
|
$sort: { IdStatoProdotto: 1 } // Ordina per IdStatoProdotto, se necessario
|
2025-04-18 13:23:59 +02:00
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
|
2025-04-22 18:30:48 +02:00
|
|
|
const rec = await T_WEB_StatiProdotto.aggregate(myquery);
|
|
|
|
|
return rec;
|
2025-04-18 13:23:59 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|