plugin-financials/routes/assessments.js
2025-11-03 13:51:33 +02:00

81 lines
2.1 KiB
JavaScript

const express = require('express');
const router = express.Router();
const { specialAssessmentRepository } = require('../repositories');
/**
* GET /api/plugins/financials/assessments
* Get all special assessments for site
*/
router.get('/', async (req, res) => {
try {
const { site_id } = req.query;
if (!site_id) {
return res.status(400).json({
success: false,
error: 'Missing required parameter: site_id'
});
}
const assessments = await specialAssessmentRepository.findBySiteId(site_id);
res.json({
success: true,
data: assessments,
message: 'Special assessments retrieved successfully'
});
} catch (error) {
console.error('Failed to get special assessments:', error);
res.status(500).json({
success: false,
error: 'Failed to retrieve special assessments',
message: error.message
});
}
});
/**
* POST /api/plugins/financials/assessments
* Create special assessment
*/
router.post('/', async (req, res) => {
try {
const { site_id, assessment_name, description, total_amount, unit_count, due_date, project_type, created_by } = req.body;
if (!site_id || !assessment_name || !total_amount || !unit_count || !due_date) {
return res.status(400).json({
success: false,
error: 'Missing required fields: site_id, assessment_name, total_amount, unit_count, due_date'
});
}
const assessment = await specialAssessmentRepository.createAssessment({
site_id,
assessment_name,
description: description || '',
total_amount,
unit_count,
amount_per_unit: total_amount / unit_count,
due_date,
project_type: project_type || 'other',
status: 'pending',
created_by: created_by || 'system'
});
res.json({
success: true,
data: assessment,
message: 'Special assessment created successfully'
});
} catch (error) {
console.error('Failed to create special assessment:', error);
res.status(500).json({
success: false,
error: 'Failed to create special assessment',
message: error.message
});
}
});
module.exports = router;