const express = require('express');
const router = express.Router();

// Importă conexiunea la baza de date
const pool = require('../db'); 

// Importă middleware-ul de autentificare
const authenticateToken = require('../middleware/auth');

// Endpoint pentru a obține produsele - protejează ruta cu middleware-ul de autentificare
router.get('/', async (req, res) => {
    try {
        // Selectăm prima data înregistrată
        const [firstRow] = await pool.promise(0).query('SELECT data FROM sold ORDER BY data ASC LIMIT 1');
        
        if (firstRow.length === 0) {
            return res.status(404).json({ message: 'Nu există înregistrări în baza de date' });
        }

        const firstDate = firstRow[0].data;

        // Verificăm dacă data cerută este mai mică decât prima dată înregistrată
        const requestedDate = req.query.data; // Dacă există o dată în parametrii de interogare, o preluăm

        // Dacă data cerută este mai mică decât prima data înregistrată, returnăm sold 0.00
        if (requestedDate && requestedDate < firstDate) {
            return res.json([{ sold: 0.00 }]); // Returnăm un obiect cu sold 0.00
        }

        // Interogăm toate înregistrările din tabelul `sold`
        const [rows] = await pool.promise().query('SELECT * FROM sold ORDER BY data ASC');
        
        res.json(rows); // Returnăm toate înregistrările

    } catch (error) {
      
        res.status(500).json({ error: 'Eroare la interogarea bazei de date' });
    }
});
router.get('/data/:data', async (req, res) => { 
    const { data } = req.params; // Obține data din parametrii URL

    
    try {
        // Interogare pentru a selecta prima data înregistrată
        const [firstRow] = await pool.promise().query('SELECT data FROM sold ORDER BY data ASC LIMIT 1');
        
   
        
        if (firstRow.length === 0) {
            return res.status(404).json({ message: 'Nu există înregistrări în baza de date' });
        }

        const firstDate = firstRow[0].data;
      

        // Comparăm data selectată cu prima dată din baza de date
        if (data < firstDate) {
         
            return res.json({ sold_final_zi: 0.00 }); // Dacă data este mai mică decât prima dată, returnăm sold 0.00
        }

        // Calculăm suma tuturor înregistrărilor până la data specificată (inclusiv)
        const [sumResult] = await pool.promise().query(`
            SELECT SUM(sold) AS sold_final_zi 
            FROM sold 
            WHERE data <= ?`, [data]);

        const soldFinalZi = sumResult[0].sold_final_zi || 0.00; // Dacă suma este null, setăm 0.00

     

        res.json({ sold_final_zi: soldFinalZi }); // Returnăm soldul final ca JSON
    } catch (error) {
        console.error('Eroare la interogarea bazei de date:', error); // Logăm orice eroare apărută
        res.status(500).json({ error: 'Eroare la interogarea bazei de date' });
    }
});

module.exports = router;
