// /components/dataImport/dataImportController.js 'use strict'; const catchAsync = require('../../utils/catchAsync'); const dataImportService = require('./dataImportService'); const AppError = require('../../utils/AppError'); const { successResponse } = require('../../utils/apiResponse'); exports.importJson = catchAsync(async (req, res) => { let payload = req.body; if (req.file?.buffer) { try { payload = JSON.parse(req.file.buffer.toString('utf8')); } catch { throw new AppError('VALIDATION_FAILED', null, 'Uploaded file is not valid JSON'); } } // Allow { data: { courses: [...] } } wrappers if (payload?.data?.courses || payload?.data?.payments) payload = payload.data; if (!payload?.courses && !payload?.payments) { throw new AppError('VALIDATION_FAILED', null, 'Invalid import payload'); } const result = await dataImportService.importData(payload); return successResponse(res, 200, 'Data imported successfully', result); });