Dealer_Onboarding_Backend/controllers/masterController.js

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' });
}
};