feat(admin): implement region renaming functionality and update UI components
This commit is contained in:
@@ -57,6 +57,7 @@ class AdminController {
|
||||
this.getFalukantAllRegions = this.getFalukantAllRegions.bind(this);
|
||||
this.getFalukantRegionTypes = this.getFalukantRegionTypes.bind(this);
|
||||
this.createFalukantRegion = this.createFalukantRegion.bind(this);
|
||||
this.updateFalukantRegion = this.updateFalukantRegion.bind(this);
|
||||
this.deleteFalukantRegion = this.deleteFalukantRegion.bind(this);
|
||||
this.updateFalukantRegionMap = this.updateFalukantRegionMap.bind(this);
|
||||
this.getRegionDistances = this.getRegionDistances.bind(this);
|
||||
@@ -623,6 +624,19 @@ class AdminController {
|
||||
}
|
||||
}
|
||||
|
||||
async updateFalukantRegion(req, res) {
|
||||
try {
|
||||
const { userid: userId } = req.headers;
|
||||
const region = await AdminService.updateFalukantRegion(userId, req.params.id, req.body || {});
|
||||
res.status(200).json(region);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
const status = error.message === 'noaccess' ? 403
|
||||
: (error.message === 'regionNotFound' ? 404 : 400);
|
||||
res.status(status).json({ error: error.message });
|
||||
}
|
||||
}
|
||||
|
||||
async deleteFalukantRegion(req, res) {
|
||||
try {
|
||||
const { userid: userId } = req.headers;
|
||||
|
||||
@@ -65,6 +65,7 @@ router.get('/falukant/region-types', authenticate, adminController.getFalukantRe
|
||||
router.get('/falukant/regions', authenticate, adminController.getFalukantRegions);
|
||||
router.get('/falukant/regions/all', authenticate, adminController.getFalukantAllRegions);
|
||||
router.post('/falukant/regions', authenticate, adminController.createFalukantRegion);
|
||||
router.put('/falukant/regions/:id', authenticate, adminController.updateFalukantRegion);
|
||||
router.delete('/falukant/regions/:id', authenticate, adminController.deleteFalukantRegion);
|
||||
router.put('/falukant/regions/:id/map', authenticate, adminController.updateFalukantRegionMap);
|
||||
router.get('/falukant/region-distances', authenticate, adminController.getRegionDistances);
|
||||
|
||||
@@ -934,6 +934,30 @@ class AdminService {
|
||||
return region;
|
||||
}
|
||||
|
||||
async updateFalukantRegion(userId, regionId, { name } = {}) {
|
||||
if (!(await this.hasUserAccess(userId, 'falukantusers'))) {
|
||||
throw new Error('noaccess');
|
||||
}
|
||||
|
||||
const regionName = String(name || '').trim();
|
||||
if (!regionName) {
|
||||
throw new Error('missingName');
|
||||
}
|
||||
|
||||
const region = await RegionData.findByPk(regionId);
|
||||
if (!region) {
|
||||
throw new Error('regionNotFound');
|
||||
}
|
||||
|
||||
region.name = regionName;
|
||||
await region.save();
|
||||
|
||||
return RegionData.findByPk(region.id, {
|
||||
attributes: ['id', 'name', 'map', 'regionTypeId', 'parentId'],
|
||||
include: [{ model: RegionType, as: 'regionType', attributes: ['id', 'labelTr', 'parentId'] }],
|
||||
});
|
||||
}
|
||||
|
||||
async deleteFalukantRegion(userId, regionId) {
|
||||
if (!(await this.hasUserAccess(userId, 'falukantusers'))) {
|
||||
throw new Error('noaccess');
|
||||
|
||||
Reference in New Issue
Block a user