const AccreditationPage = require("../models/accreditationPage"); const AUDIT_ACTIONS = require("../constants/auditAction"); const accreditationConfig = require("../utils/contentEditors/accreditationConfig"); const createPageContentController = require("./_createPageContentController"); const createRenderSingletonPageView = require("./_renderSingletonPageView"); const controller = createPageContentController({ model: AccreditationPage, modelName: "AccreditationPage", auditAction: AUDIT_ACTIONS.UPDATE_ACCREDITATION, editorConfig: accreditationConfig, preparePayload(rawPayload) { const payload = JSON.parse(JSON.stringify(rawPayload || {})); const tabs = Array.isArray(payload?.grid?.tabs) ? payload.grid.tabs : []; const seenTabs = new Set(); const duplicateTabs = []; tabs.forEach((tab) => { const normalizedTab = String(tab || "").trim().toLowerCase(); if (!normalizedTab) { return; } if (seenTabs.has(normalizedTab)) { duplicateTabs.push(String(tab || "").trim()); return; } seenTabs.add(normalizedTab); }); if (duplicateTabs.length > 0) { throw new Error( `Category tab already exists: ${duplicateTabs[0]}. Please use unique tab names.`, ); } return payload; }, }); controller.index = async function index(req, res) { try { return await createRenderSingletonPageView({ model: AccreditationPage, editorConfig: accreditationConfig, view: "admin/accreditation/index", })(req, res); } catch (error) { console.error("accreditation index error:", error); req.flash("error_msg", "Error loading Accreditation Management"); return req.session.save(() => res.redirect("/admin/dashboard")); } }; module.exports = controller;