122 lines
3.1 KiB
JavaScript
122 lines
3.1 KiB
JavaScript
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' });
|
|
}
|
|
};
|