import { Router } from 'express' import multer from 'multer' import { upload, uploadFile } from '../controllers/upload' import { adminLogin, verifyAdmin } from '../controllers/adminAuth' import { adminGetProducts, adminGetProductDetail, adminCreateProduct, adminUpdateProduct, adminDeleteProduct, } from '../controllers/adminProduct' import { exportSpecData, importSpecData, adminGetSpecData, adminCreateSpecData, adminDeleteSpecData, adminUpdateSpecData, lookupByBarcodes } from '../controllers/specDataIO' import { getStockAlerts } from '../controllers/stockAlert' import { adminGetOrders, adminGetOrderDetail, adminCreateOrder, adminUpdateOrder, adminUpdateOrderStatus, adminReturnOrder, adminGetOrderReturns, } from '../controllers/adminOrder' import { adminGetMolds, adminCreateMold, adminUpdateMold, adminDeleteMold, } from '../controllers/adminMold' import { adminGetCategories, adminCreateCategory, adminDeleteCategory, adminGetCategoryFilters, adminSaveCategoryFilters, } from '../controllers/adminCategory' import { adminGetConfigs, adminUpdateConfig } from '../controllers/config' import { adminGetUsers } from '../controllers/adminUser' import { getGoldPriceLogs, getLatestGoldPrice, setGoldPrice, getPlatinumPriceLogs, getLatestPlatinumPrice, setPlatinumPrice } from '../controllers/goldPrice' const csvUpload = multer({ storage: multer.memoryStorage() }) export const adminRoutes = Router() // Admin login (no auth required) adminRoutes.post('/login', adminLogin) // All routes below require admin auth adminRoutes.use(verifyAdmin) // File upload adminRoutes.post('/upload', upload.single('file'), uploadFile) // Product CRUD adminRoutes.get('/products', adminGetProducts) adminRoutes.get('/products/:id', adminGetProductDetail) adminRoutes.post('/products', adminCreateProduct) adminRoutes.put('/products/:id', adminUpdateProduct) adminRoutes.delete('/products/:id', adminDeleteProduct) // Spec data CRUD + import/export adminRoutes.get('/products/:id/spec-data/export', exportSpecData) adminRoutes.post('/products/:id/spec-data/import', csvUpload.single('file'), importSpecData) adminRoutes.get('/products/:id/spec-data', adminGetSpecData) adminRoutes.post('/products/:id/spec-data', adminCreateSpecData) adminRoutes.delete('/products/:productId/spec-data/:specId', adminDeleteSpecData) adminRoutes.put('/products/:productId/spec-data/:specId', adminUpdateSpecData) // Spec data barcode lookup adminRoutes.post('/spec-data/lookup', lookupByBarcodes) // Stock alerts adminRoutes.get('/stock-alerts', getStockAlerts) // Order management adminRoutes.get('/orders', adminGetOrders) adminRoutes.get('/orders/:id', adminGetOrderDetail) adminRoutes.post('/orders', adminCreateOrder) adminRoutes.put('/orders/:id', adminUpdateOrder) adminRoutes.put('/orders/:id/status', adminUpdateOrderStatus) adminRoutes.post('/orders/:id/return', adminReturnOrder) adminRoutes.get('/orders/:id/returns', adminGetOrderReturns) // Mold management adminRoutes.get('/molds', adminGetMolds) adminRoutes.post('/molds', adminCreateMold) adminRoutes.put('/molds/:id', adminUpdateMold) adminRoutes.delete('/molds/:id', adminDeleteMold) // Category management adminRoutes.get('/categories', adminGetCategories) adminRoutes.post('/categories', adminCreateCategory) adminRoutes.delete('/categories/:id', adminDeleteCategory) adminRoutes.get('/categories/:id/filters', adminGetCategoryFilters) adminRoutes.post('/categories/:id/filters', adminSaveCategoryFilters) // System config management adminRoutes.get('/configs', adminGetConfigs) adminRoutes.put('/configs/:key', adminUpdateConfig) // User management adminRoutes.get('/users', adminGetUsers) // Gold price management adminRoutes.get('/gold-price', getGoldPriceLogs) adminRoutes.get('/gold-price/latest', getLatestGoldPrice) adminRoutes.post('/gold-price', setGoldPrice) // Platinum price management adminRoutes.get('/platinum-price', getPlatinumPriceLogs) adminRoutes.get('/platinum-price/latest', getLatestPlatinumPrice) adminRoutes.post('/platinum-price', setPlatinumPrice)