Services_GarantieService.js

const CrudService = require("./CrudService");


/**
 * @extends Myintranet.Services.CrudService
 * @memberof Myintranet.Services
 * @inheritDoc
 */
class GarantieService extends CrudService {
    constructor(db) {
        super(db.Garantie);
        this.db = db;
    }


    async getAll(request) {
        try {
            let allData = await this.db.Garantie.findAll();
            if (allData.length === 0) {
                await this.insertInitialData();
                allData = await this.db.Garantie.findAll(); 
            }
            //console.log("je suisi ici",allData)
            return allData;
        } catch (error) {
            console.error('Erreur lors de la récupération des données :', error);
            throw error; 
        }
    }
 
async getOne(request){
    return await this.getAll(request)
}

    async insertInitialData() {
        try {
            const initialData = [
                { ca: "CA Alpha", montant: null, autres: "Chiffre d'affaire Alpha" },
                { ca: "CA Talent Factory", montant: null, autres: "Chiffre d'affaire Talent Factory" },
                { ca: "CA Rocketz", montant: null, autres: "Chiffre d'affaire Rocketz" },
                { ca: "CA BigBen", montant: null, autres: "Chiffre d'affaire Bigben" },
                { ca: "CA Portage Lab", montant: null, autres: "Chiffre d'affaire Portage Lab", style: "text-purple-700 font-bold" },
                { ca: "Total entrées de CA HT:", montant: null, autres: "Chiffre d'affaire Groupe", isTitle: true },
                { ca: "Total TVA Alpha", montant: null, autres: "virement Alpha" },
                { ca: "Total TVA Talent Factory", montant: null, autres: "virement Talent Factory" },
                { ca: "Total TVA Rocketz", montant: null, autres: "virement Rocketz" },
                { ca: "Total TVA BigBen", montant: null, autres: "virement Bigben" },
                { ca: "Total TVA Portage Lab", montant: null, autres: "virement Portage Lab", style: "text-purple-700 font-bold" },
                { ca: "Total TVA à collecté:", montant: null, autres: "TVA à provisionner", isTitle: true },
                { ca: "Total NET à Payer:", montant: null, autres: "paiement au 05 du mois en cours", style: "font-bold isTitle" },
                { ca: "Total Salaire Alpha", montant: null, autres: "virement Alpha" },
                { ca: "Total PAS Alpha", montant: null, autres: "Prélèvement à la source Alpha" },
                { ca: "Total Salaire Talent Factory", montant: null, autres: "virement Talent Factory" },
                { ca: "Total PAS Talent", montant: null, autres: "Prélèvement à la source Talent" },
                { ca: "Total Salaire Rocketz", montant: null, autres: "virement Rocketz" },
                { ca: "Total PAS Rocketz", montant: null, autres: "Prélèvement à la source Rocketz" },
                { ca: "Total Salaire BigBen", montant: null, autres: "virement Bigben" },
                { ca: "Total PAS BigBen", montant: null, autres: "virement Bigben" },
                { ca: "Total Salaire Portage Lab", montant: null, autres: "virement Portage Lab", style: "text-purple-700 font-bold" },
                { ca: "Total variables:", montant: null, autres: "paiement au 15 du mois en cours", isTitle: true },
                { ca: "Total Variable Alpha", montant: null, autres: "variable Alpha" },
                { ca: "Total Variable Talent Factory", montant: null, autres: "Variable talent Factory" },
                { ca: "Total Variable Rocketz", montant: null, autres: "Variable Rocketz" },
                { ca: "Total Variable BigBen", montant: null, autres: "Variable BigBen" },
                { ca: "Total Variable Portage Lab", montant: null, autres: "variable Portage Lab", style: "text-purple-700 font-bold" },
                { ca: "Apporteur affaires: Remise Escompte", montant: null, autres: " Total com à versé , Total Escompte à déduire", style: "text-purple-700 font-bold" },
                { ca: "Salaires + Vava (sans com ext):", montant: null, autres: "pour le mois en cours", isTitle: true },
                { ca: "Total Prov Charges Alpha", montant: null, autres: "a reporté pour paiement URSSAF fin trimestre" },
                { ca: "Total Prov Charges Talent Factory", montant: null, autres: "a reporté pour paiement URSSAF fin trimestre" },
                { ca: "Total Prov Charges Rocketz", montant: null, autres: "a reporté pour paiement URSSAF fin trimestre" },
                { ca: "Total Prov Charges BigBen", montant: null, autres: "a reporté pour paiement URSSAF fin trimestre" },
                { ca: "Total Prov Charges Portage Lab", montant: null, autres: "a reporté pour paiement URSSAF fin trimestre", style: "text-purple-700 font-bold" },
                { ca: "Frais gestion provisionné", montant: null, autres: "alpha", style: "text-yellow-500" },
                { ca: "Frais gestion provisionné", montant: null, autres: "talent factory", style: "text-yellow-500" },
                { ca: "Frais gestion provisionné", montant: null, autres: "rocketz", style: "text-yellow-500" },
                { ca: "Frais gestion provisionné", montant: null, autres: "bigben", style: "text-yellow-500" },
                { ca: "Frais gestion provisionné", montant: null, autres: "Portage Lab", style: "text-purple-700 font-bold" },
                { ca: "Total Frais gestion provisionné", montant: null, autres: "alpha + innov8 => Prov Alpha + Prov Innov8", isTitle: true },
                { ca: "Total Frais gestion réel calculé", montant: null, autres: "alpha + innov8 => CA - SALAIRE - VAVA - URSSAF", isTitle: true },
                { ca: "Total Frais gestion réel estimé", montant: null, autres: "alpha + innov8 (moyenne prov et calc)", isTitle: true },
                { ca: "Apport Affaire / Escompte", montant: null, autres: "" },
                { ca: "Classe Creme & Creme Fraiche & Creme Brulé", montant: null, autres: "remb crédit, assurance, essence, etc..." },
                { ca: "", montant: null, autres: "" },
                { ca: "Coût des Projet Externalisés", montant: null, autres: "" },
                { ca: "Equipe de réalisation (projet Birds)", montant: null, autres: "" },
                { ca: "Base Poissy", montant: null, autres: "loyer + charges + Sunnah du vendredi + divers" },
                { ca: "Cabinet Comptable", montant: null, autres: "DCA BC LBC SSD" },
                { ca: "Total Charge fixe hors salaire", montant: null, autres: "", isTitle: true },
                { ca: "Benefice Net (pessimiste)", montant: null, autres: "frais de gestion", style: "text-green-500 font-bold" },
                { ca: "CA minimum exigé", montant: null, autres: "" },
            ];
            await Promise.all(initialData.map(row => this.db.Garantie.create({
                ca: row.ca,
                montant: row.montant,
                autres: row.autres
            })));
        } catch (error) {
            console.error('Erreur lors de l\'insertion des données initiales :', error);
            throw error; 
        }
    }



    async update(request) {
        let {db} = this;
        let data = request.body
        console.log(data)
        try {
            for (let row of data) {
                // console.log(`Mise à jour du montant pour id: ${row.id}, montant: ${row.montant}`); 
                await db.Garantie.update(
                    { montant: row.montant },
                    { where: { id: row.id } }
                );
            }
            // console.log('Mise à jour réussie');
        } catch (error) {
            console.error('Erreur lors de la mise à jour :', error);
            throw error;
        }
      

    }

}

module.exports = GarantieService;