mowing and properties
This commit is contained in:
@@ -83,8 +83,15 @@ router.post('/sessions', validateRequest(mowingSessionSchema), async (req, res,
|
||||
// GET /api/mowing/sessions - list sessions for user
|
||||
router.get('/sessions', async (req, res, next) => {
|
||||
try {
|
||||
const { property_id } = req.query;
|
||||
const params = [req.user.id];
|
||||
let where = 'ms.user_id=$1';
|
||||
if (property_id) {
|
||||
params.push(property_id);
|
||||
where += ` AND p.id=$${params.length}`;
|
||||
}
|
||||
const result = await pool.query(
|
||||
`SELECT ms.*, p.name as property_name, ue.custom_name as equipment_name,
|
||||
`SELECT ms.*, p.name as property_name, ue.custom_name as equipment_name, ue.cutting_width_inches,
|
||||
STRING_AGG(ls.name, ', ') as section_names,
|
||||
SUM(ls.area) as total_area
|
||||
FROM mowing_sessions ms
|
||||
@@ -92,11 +99,11 @@ router.get('/sessions', async (req, res, next) => {
|
||||
LEFT JOIN user_equipment ue ON ms.equipment_id=ue.id
|
||||
JOIN mowing_session_sections lss ON lss.session_id = ms.id
|
||||
JOIN lawn_sections ls ON lss.lawn_section_id = ls.id
|
||||
WHERE ms.user_id=$1
|
||||
WHERE ${where}
|
||||
GROUP BY ms.id, p.name, ue.custom_name
|
||||
ORDER BY ms.created_at DESC
|
||||
LIMIT 200`,
|
||||
[req.user.id]
|
||||
params
|
||||
);
|
||||
res.json({ success: true, data: { sessions: result.rows } });
|
||||
} catch (error) {
|
||||
@@ -109,7 +116,7 @@ router.get('/sessions/:id', async (req, res, next) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const sessionRes = await pool.query(
|
||||
`SELECT ms.*, p.name as property_name, ue.custom_name as equipment_name
|
||||
`SELECT ms.*, p.name as property_name, ue.custom_name as equipment_name, ue.cutting_width_inches
|
||||
FROM mowing_sessions ms
|
||||
JOIN properties p ON ms.property_id=p.id
|
||||
LEFT JOIN user_equipment ue ON ms.equipment_id=ue.id
|
||||
@@ -218,8 +225,15 @@ router.put('/plans/:id/status', async (req, res, next) => {
|
||||
// Alias /logs to sessions to be consistent with Applications
|
||||
router.get('/logs', async (req, res, next) => {
|
||||
try {
|
||||
const { property_id } = req.query;
|
||||
const params = [req.user.id];
|
||||
let where = 'ms.user_id=$1';
|
||||
if (property_id) {
|
||||
params.push(property_id);
|
||||
where += ` AND p.id=$${params.length}`;
|
||||
}
|
||||
const rs = await pool.query(
|
||||
`SELECT ms.*, p.name as property_name, ue.custom_name as equipment_name,
|
||||
`SELECT ms.*, p.name as property_name, ue.custom_name as equipment_name, ue.cutting_width_inches,
|
||||
STRING_AGG(ls.name, ', ') as section_names,
|
||||
SUM(ls.area) as total_area
|
||||
FROM mowing_sessions ms
|
||||
@@ -227,10 +241,10 @@ router.get('/logs', async (req, res, next) => {
|
||||
LEFT JOIN user_equipment ue ON ms.equipment_id=ue.id
|
||||
JOIN mowing_session_sections lss ON lss.session_id = ms.id
|
||||
JOIN lawn_sections ls ON lss.lawn_section_id = ls.id
|
||||
WHERE ms.user_id=$1
|
||||
WHERE ${where}
|
||||
GROUP BY ms.id, p.name, ue.custom_name
|
||||
ORDER BY ms.created_at DESC
|
||||
LIMIT 200`, [req.user.id]);
|
||||
LIMIT 200`, params);
|
||||
res.json({ success: true, data: { logs: rs.rows } });
|
||||
} catch (error) { next(error); }
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user