88 lines
No EOL
2.7 KiB
TypeScript
88 lines
No EOL
2.7 KiB
TypeScript
import express from 'express';
|
|
import { DisputeFlowService } from './dispute-flow.service';
|
|
|
|
const router = express.Router();
|
|
|
|
// Create a new dispute
|
|
router.post('/disputes', async (req, res) => {
|
|
try {
|
|
const dispute = await DisputeFlowService.createDispute(req.body);
|
|
res.status(201).json(dispute);
|
|
} catch (error) {
|
|
console.error('Error creating dispute:', error);
|
|
res.status(500).json({ error: 'Failed to create dispute' });
|
|
}
|
|
});
|
|
|
|
// Add evidence to a dispute
|
|
router.post('/disputes/:id/evidence', async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const { actorUserId, ...evidenceData } = req.body;
|
|
|
|
await DisputeFlowService.addEvidence(parseInt(id), actorUserId, evidenceData);
|
|
res.status(200).json({ message: 'Evidence added successfully' });
|
|
} catch (error) {
|
|
console.error('Error adding evidence:', error);
|
|
res.status(500).json({ error: 'Failed to add evidence' });
|
|
}
|
|
});
|
|
|
|
// Update dispute status
|
|
router.post('/disputes/:id/status', async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const { actorUserId, newStatus } = req.body;
|
|
|
|
await DisputeFlowService.updateDisputeStatus(parseInt(id), actorUserId, newStatus);
|
|
res.status(200).json({ message: 'Status updated successfully' });
|
|
} catch (error) {
|
|
console.error('Error updating dispute status:', error);
|
|
res.status(500).json({ error: 'Failed to update status' });
|
|
}
|
|
});
|
|
|
|
// Resolve a dispute
|
|
router.post('/disputes/:id/resolve', async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const { actorUserId, ...decisionData } = req.body;
|
|
|
|
await DisputeFlowService.resolveDispute(parseInt(id), actorUserId, decisionData);
|
|
res.status(200).json({ message: 'Dispute resolved successfully' });
|
|
} catch (error) {
|
|
console.error('Error resolving dispute:', error);
|
|
res.status(500).json({ error: 'Failed to resolve dispute' });
|
|
}
|
|
});
|
|
|
|
// Get dispute details
|
|
router.get('/disputes/:id', async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const dispute = await DisputeFlowService.getDispute(parseInt(id));
|
|
|
|
if (!dispute) {
|
|
return res.status(404).json({ error: 'Dispute not found' });
|
|
}
|
|
|
|
res.json(dispute);
|
|
} catch (error) {
|
|
console.error('Error fetching dispute:', error);
|
|
res.status(500).json({ error: 'Failed to fetch dispute' });
|
|
}
|
|
});
|
|
|
|
// Get dispute events
|
|
router.get('/disputes/:id/events', async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const events = await DisputeFlowService.getDisputeEvents(parseInt(id));
|
|
res.json(events);
|
|
} catch (error) {
|
|
console.error('Error fetching dispute events:', error);
|
|
res.status(500).json({ error: 'Failed to fetch dispute events' });
|
|
}
|
|
});
|
|
|
|
export default router; |