const { Region, Zone } = require('../models'); exports.getRegions = async (req, res) => { try { const regions = await Region.findAll({ order: [['name', 'ASC']] }); res.json({ success: true, regions }); } catch (error) { console.error('Get regions error:', error); res.status(500).json({ success: false, message: 'Error fetching regions' }); } }; exports.createRegion = async (req, res) => { try { const { regionName } = req.body; if (!regionName) { return res.status(400).json({ success: false, message: 'Region name is required' }); } await Region.create({ name: regionName }); res.status(201).json({ success: true, message: 'Region created successfully' }); } catch (error) { console.error('Create region error:', error); res.status(500).json({ success: false, message: 'Error creating region' }); } }; exports.updateRegion = async (req, res) => { try { const { id } = req.params; const { regionName, isActive } = req.body; const region = await Region.findByPk(id); if (!region) { return res.status(404).json({ success: false, message: 'Region not found' }); } await region.update({ name: regionName || region.name, updatedAt: new Date() }); res.json({ success: true, message: 'Region updated successfully' }); } catch (error) { console.error('Update region error:', error); res.status(500).json({ success: false, message: 'Error updating region' }); } }; exports.getZones = async (req, res) => { try { const { regionId } = req.query; const where = {}; if (regionId) { where.regionId = regionId; } const zones = await Zone.findAll({ where, include: [{ model: Region, as: 'region', attributes: ['name'] }], order: [['name', 'ASC']] }); res.json({ success: true, zones }); } catch (error) { console.error('Get zones error:', error); res.status(500).json({ success: false, message: 'Error fetching zones' }); } }; exports.createZone = async (req, res) => { try { const { regionId, zoneName, zoneCode } = req.body; if (!regionId || !zoneName) { return res.status(400).json({ success: false, message: 'Region ID and zone name are required' }); } await Zone.create({ regionId, name: zoneName }); res.status(201).json({ success: true, message: 'Zone created successfully' }); } catch (error) { console.error('Create zone error:', error); res.status(500).json({ success: false, message: 'Error creating zone' }); } }; exports.updateZone = async (req, res) => { try { const { id } = req.params; const { zoneName, zoneCode, isActive } = req.body; const zone = await Zone.findByPk(id); if (!zone) { return res.status(404).json({ success: false, message: 'Zone not found' }); } await zone.update({ name: zoneName || zone.name, updatedAt: new Date() }); res.json({ success: true, message: 'Zone updated successfully' }); } catch (error) { console.error('Update zone error:', error); res.status(500).json({ success: false, message: 'Error updating zone' }); } };