// ============================================
// WIZ DÉCO — Serveur Express + Mollie
// Lancement : node server.js
// URL locale : http://localhost:3000
// ============================================

const express = require('express');
const { createMollieClient } = require('@mollie/api-client');
const cors = require('cors');
const path = require('path');

// ⚠️ Remplace par ta clé API Mollie (my.mollie.com > Développeurs > Clés API)
// Clé de test : commence par test_
// Clé live    : commence par live_
const mollie = createMollieClient({ apiKey: 'test_scAvxt93tdFSFSFtHDWRQKbzJ5UfBS' });

const app = express();

app.use(express.static(path.join(__dirname)));
app.use(express.json());
app.use(cors());

// ─── ROUTE : Créer un paiement Mollie ───
app.post('/create-checkout-session', async (req, res) => {
  const { items } = req.body;

  if (!items || items.length === 0) {
    return res.status(400).json({ error: 'Panier vide' });
  }

  const total = items.reduce((s, i) => s + i.price * i.qty, 0);
  const livraison = total >= 80 ? 0 : 5.90;
  const totalFinal = total + livraison;

  const description = items.map(i => `${i.qty}x ${i.name}`).join(', ').substring(0, 255);

  try {
    const payment = await mollie.payments.create({
      amount: {
        currency: 'EUR',
        value: totalFinal.toFixed(2)
      },
      description: `Commande Wiz Déco — ${description}`,
      redirectUrl: 'http://localhost:3000/success.html',
      metadata: {
        items: JSON.stringify(items.map(i => ({ name: i.name, qty: i.qty, price: i.price })))
      }
    });

    res.json({ url: payment._links.checkout.href });

  } catch (err) {
    console.error('Mollie error:', err.message);
    res.status(500).json({ error: err.message });
  }
});

// ─── ROUTE : Vérifier le statut du paiement ───
app.get('/verify-payment', async (req, res) => {
  const { payment_id } = req.query;
  if (!payment_id) return res.status(400).json({ error: 'payment_id manquant' });

  try {
    const payment = await mollie.payments.get(payment_id);
    res.json({ status: payment.status }); // paid | pending | failed | canceled
  } catch (err) {
    res.status(400).json({ error: err.message });
  }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`\n✦ Wiz Déco — Serveur démarré`);
  console.log(`  → http://localhost:${PORT}`);
  console.log(`  → Ctrl+C pour arrêter\n`);
});