import { Router } from 'express';
import {
  createIntegrationAsset,
  createIntegrationContract,
  createIntegrationProject,
  createIntegrationTicket,
  createIntegrationWorkOrder,
  deleteIntegrationAsset,
  deleteIntegrationContract,
  deleteIntegrationProject,
  deleteIntegrationTicket,
  deleteIntegrationWorkOrder,
  getIntegrationAssetById,
  getIntegrationProjectById,
  getIntegrationTicketById,
  listIntegrationAssets,
  listIntegrationContracts,
  listIntegrationProjects,
  listIntegrationTickets,
  listIntegrationWorkOrders,
  updateIntegrationAsset,
  updateIntegrationContract,
  updateIntegrationProject,
  updateIntegrationTicket,
  updateIntegrationWorkOrder,
  uploadIntegrationContractFile,
} from '../controllers/integrations.controller';
import { serviceAuth } from '../middleware/serviceAuth.middleware';
import {
  appendWarrantyItem,
  createWarranty,
  deleteWarranty,
  getRmaTransitions,
  getWarranty,
  listWarranty,
  transitionRma,
  updateWarranty,
  uploadWarrantyFiles,
} from '../controllers/integrationWarranty.controller';


const router = Router();

router.use(serviceAuth);

router.get('/csm/projects', listIntegrationProjects);
router.get('/csm/projects/:id', getIntegrationProjectById);
router.post('/csm/projects', createIntegrationProject);
router.put('/csm/projects/:id', updateIntegrationProject);
router.delete('/csm/projects/:id', deleteIntegrationProject);

router.get('/csm/assets', listIntegrationAssets);
router.get('/csm/assets/:id', getIntegrationAssetById);
router.post('/csm/assets', createIntegrationAsset);
router.put('/csm/assets/:id', updateIntegrationAsset);
router.delete('/csm/assets/:id', deleteIntegrationAsset);

router.get('/csm/contracts', listIntegrationContracts);
router.post('/csm/contracts', createIntegrationContract);
router.put('/csm/contracts/:id', updateIntegrationContract);
router.delete('/csm/contracts/:id', deleteIntegrationContract);
router.post('/csm/contracts/:id/upload', uploadIntegrationContractFile);

router.get('/csm/tickets', listIntegrationTickets);
router.get('/csm/tickets/:id', getIntegrationTicketById);
router.post('/csm/tickets', createIntegrationTicket);
router.put('/csm/tickets/:id', updateIntegrationTicket);
router.delete('/csm/tickets/:id', deleteIntegrationTicket);

router.get('/csm/work-orders', listIntegrationWorkOrders);
router.post('/csm/work-orders', createIntegrationWorkOrder);
router.put('/csm/work-orders/:id', updateIntegrationWorkOrder);
router.delete('/csm/work-orders/:id', deleteIntegrationWorkOrder);

// Warranty / RMA — CSM proxies its whole warranty surface here.
router.get('/csm/warranty-tickets', listWarranty);
router.post('/csm/warranty-tickets', createWarranty);
router.get('/csm/warranty-tickets/:id', getWarranty);
router.put('/csm/warranty-tickets/:id', updateWarranty);
router.delete('/csm/warranty-tickets/:id', deleteWarranty);
router.get('/csm/warranty-tickets/:id/rma-transitions', getRmaTransitions);
router.post('/csm/warranty-tickets/:id/rma-transition', transitionRma);
router.post('/csm/warranty-tickets/:id/upload/:kind', uploadWarrantyFiles);
// Generic append (attachments | assets | work-orders) — keep last so specific routes win.
router.post('/csm/warranty-tickets/:id/:kind', appendWarrantyItem);

export default router;


