const { adminQueries } = require('../models/queries'); const db = require('../config/database'); const DEMO_ADMIN_ID = ''; exports.dashboard = (req, res) => { res.render('admin/dashboard'); }; exports.selectBuilding = async (req, res) => { try { // Hardcoded admin for demo purposes const adminResult = await db.getPool().query( `SELECT admin_id FROM admin WHERE name = 'Nikola' LIMIT 1` ); const admin_id = adminResult.rows[0]?.admin_id; if (!admin_id) { return res.status(404).send('Admin not found'); } const buildings = await adminQueries.getBuildingsByAdminId(admin_id); res.render('admin/select-building', { buildings, admin_id: admin_id }); } catch (error) { console.error('Error fetching buildings:', error); res.status(500).send('Database error'); } }; exports.selectFloor = async (req, res) => { try { const { building_id, admin_id } = req.query; const building = await adminQueries.getBuildingById(building_id); const floors = await adminQueries.getFloorsByBuildingId(building_id); res.render('admin/select-floor', { floors, building, admin_id: admin_id || building.admin_id }); } catch (error) { console.error('Error fetching floors:', error); res.status(500).send('Database error'); } }; exports.createUnitForm = async (req, res) => { try { const { floor_id, admin_id } = req.query; const floor = await adminQueries.getFloorById(floor_id); const building = await adminQueries.getBuildingById(floor.building_id); res.render('admin/create-unit', { building, floor, admin_id: admin_id || building.admin_id }); } catch (error) { console.error('Error loading form:', error); res.status(500).send('Database error'); } }; exports.createUnitSubmit = async (req, res) => { try { const { floor_id, unit_number, room_number, floor_area, status, price } = req.body; const isValid = await adminQueries.validateUnitNumber(floor_id, unit_number); if (!isValid) { return res.status(400).send(`Unit ${unit_number} already exists on this floor`); } const unitData = { unit_number, room_number: parseInt(room_number), floor_area: parseFloat(floor_area), status, price: parseFloat(price), image: req.files?.image?.[0]?.filename || 'default_unit.jpg', floorplan: req.files?.floorplan?.[0]?.filename || 'default_plan.pdf', vector_image: req.files?.vector_image?.[0]?.filename || 'default_vector.svg', }; const newUnit = await adminQueries.insertUnit(unitData, floor_id); const floor = await adminQueries.getFloorById(floor_id); const building = await adminQueries.getBuildingById(floor.building_id); res.render('admin/unit-created', { unit: newUnit, building, floor }); } catch (error) { console.error('Insert unit failed:', error.message); res.status(500).send('Unit could not be created. Please try again.'); } };