Files
apex/server/routes/plans.js
T
2026-02-13 00:21:53 +01:00

97 lines
2.8 KiB
JavaScript

/**
* 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' });
}
}