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 = [
    {
      $sort: { IdStatoProdotto: 1, DataOra: -1 } // ordina per ID e DataOra decrescente
    },
    {
      $group: {
        _id: "$IdStatoProdotto",
        IdStatoProdotto: { $first: "$IdStatoProdotto" },
        Descrizione: { $first: "$Descrizione" },
        DataOra: { $first: "$DataOra" },
        // aggiungi altri campi se servono
      }
    },
    {
      $sort: { IdStatoProdotto: 1 } // opzionale, per ordinare il risultato
    },
    {
      $project: {
        _id: 1,
        IdStatoProdotto: 1,
        Descrizione: 1
        // rimuovi DataOra e aggiungi altri campi se servono
      }
    }

  ];

  const rec = await T_WEB_StatiProdotto.aggregate(myquery);
  return rec;
};


