const fs = require('fs');
const file = 'c:/Users/kde/Desktop/wassili_V2/routes/merchant.js';
let content = fs.readFileSync(file, 'utf8');

// Fix 1: Add length limits
const findBlock1 = `        if (!items || items.length === 0 || !dropoff) {
            return res.status(400).json({ message: 'المنتجات وعنوان التوصيل مطلوبان' });
        }`;

const replaceBlock1 = `        if (!items || items.length === 0 || !dropoff) {
            return res.status(400).json({ message: 'المنتجات وعنوان التوصيل مطلوبان' });
        }
        
        // 🛡️ CRITICAL FIX: Payload size limits to prevent DB DOS
        if (notes && typeof notes === 'string' && notes.length > 500) {
            return res.status(400).json({ message: 'وصف الطلب طويل جداً (الحد الأقصى 500 حرف)' });
        }
        if (dropoff && dropoff.address && dropoff.address.length > 300) {
            return res.status(400).json({ message: 'عنوان التوصيل طويل جداً (الحد الأقصى 300 حرف)' });
        }`;

if (content.includes(findBlock1)) {
    content = content.replace(findBlock1, replaceBlock1);
} else {
    console.error("Block 1 not found");
}

// Fix 2: Prevent Mass Assignment
const findBlock2 = `        // معالجة حقل stock بشكل صريح قبل التحديث
        const updateData = { ...req.body };`;

const replaceBlock2 = `        // معالجة حقل stock بشكل صريح قبل التحديث
        const updateData = { ...req.body };
        
        // 🛡️ CRITICAL FIX: Prevent Mass Assignment of protected fields
        delete updateData._id;
        delete updateData.placeId;`;

if (content.includes(findBlock2)) {
    content = content.replace(findBlock2, replaceBlock2);
} else {
    console.error("Block 2 not found");
}

fs.writeFileSync(file, content);
console.log("merchant.js backend fixes applied successfully.");
