/** * Plans and cutting list routes */ import { generateAllPlans, generatePDFHtml } from '../services/planGenerator.js'; import { generateCuttingList, formatCuttingListForExport } from '../services/cuttingEngine.js'; /** * POST /api/plans/generate * Generate all 2D plans for a configuration */ export async function generatePlansRoute(req, res) { try { const { config, modules = [], colors = {} } = req.body; if (!config) { return res.status(400).json({ error: 'Configuration requise' }); } const plans = generateAllPlans(config, modules, colors); res.json({ success: true, plans }); } catch (error) { console.error('Plan generation error:', error); res.status(500).json({ error: error.message || 'Erreur de génération des plans' }); } } /** * POST /api/plans/cutting-list * Generate cutting list for a configuration */ export async function generateCuttingListRoute(req, res) { try { const { config, modules = [], colors = {} } = req.body; if (!config) { return res.status(400).json({ error: 'Configuration requise' }); } const cuttingList = generateCuttingList(config, colors, modules); res.json({ success: true, cuttingList }); } catch (error) { console.error('Cutting list error:', error); res.status(500).json({ error: error.message || 'Erreur de génération de la liste de débitage' }); } } /** * POST /api/plans/export-text * Export cutting list as text file */ export async function exportCuttingListText(req, res) { try { const { config, modules = [], colors = {} } = req.body; if (!config) { return res.status(400).json({ error: 'Configuration requise' }); } const cuttingList = generateCuttingList(config, colors, modules); const textContent = formatCuttingListForExport(cuttingList); res.setHeader('Content-Type', 'text/plain; charset=utf-8'); res.setHeader('Content-Disposition', 'attachment; filename="liste-debitage.txt"'); res.send(textContent); } catch (error) { console.error('Export text error:', error); res.status(500).json({ error: error.message || 'Erreur d\'export' }); } } /** * POST /api/plans/export-pdf * Export plans and cutting list as HTML (for PDF conversion) */ export async function exportPDFHtml(req, res) { try { const { config, modules = [], colors = {} } = req.body; if (!config) { return res.status(400).json({ error: 'Configuration requise' }); } const cuttingList = generateCuttingList(config, colors, modules); const html = generatePDFHtml(config, modules, cuttingList); res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.send(html); } catch (error) { console.error('Export PDF error:', error); res.status(500).json({ error: error.message || 'Erreur d\'export PDF' }); } }