const express = require('express'); const router = express.Router(); const supabase = require('../services/supabase'); const { requireAuth } = require('../middleware/auth'); const { asyncHandler } = require('../middleware/security'); // GET /vehicles — List all vehicles router.get('/', requireAuth, asyncHandler(async (req, res) => { const { data: vehicles } = await supabase .from('vehicles') .select('*') .order('number'); res.render('pages/vehicles/list', { vehicles: vehicles || [] }); })); // GET /vehicles/:id — Vehicle detail with loads router.get('/:id', requireAuth, asyncHandler(async (req, res) => { const { data: vehicle } = await supabase .from('vehicles').select('*').eq('id', req.params.id).single(); if (!vehicle) return res.status(404).render('pages/404'); const { data: loads } = await supabase .from('loads') .select('*, shipper:shippers(name)') .eq('vehicle_id', req.params.id) .order('date', { ascending: false, nullsFirst: false }); res.render('pages/vehicles/detail', { vehicle, loads: loads || [], }); })); // POST /vehicles — Create/update vehicle router.post('/', requireAuth, asyncHandler(async (req, res) => { const { number, type, city, state, owner_name, owner_phone, is_active } = req.body; const id = number.replace(/\s/g, '').toLowerCase(); await supabase.from('vehicles').upsert({ id, number: number.toUpperCase().replace(/\s/g, ''), type: type || 'open', city: city || 'Thiruvananthapuram', state: state || 'Kerala', owner_name: owner_name || null, owner_phone: owner_phone || null, is_active: is_active === 'true' || is_active === 'on', }); res.redirect('/vehicles/' + encodeURIComponent(id)); })); module.exports = router;