feat(backend, frontend): Erweiterung der Falukant-Benutzerverwaltung um Branch- und Lageraktualisierungsfunktionen
- Hinzufügen von Routen und Methoden zur Verwaltung von Niederlassungen und Lagerbeständen im AdminController und AdminService. - Implementierung der Logik zum Abrufen von Niederlassungen und Aktualisieren von Lagerbeständen. - Anpassung der Benutzeroberfläche zur Unterstützung der neuen Funktionen, einschließlich eines Tab-Systems zur Anzeige von Benutzerdaten und Niederlassungen. - Aktualisierung der Übersetzungen für die neuen Funktionen in den Sprachdateien.
This commit is contained in:
@@ -13,6 +13,8 @@ class AdminController {
|
||||
this.searchUser = this.searchUser.bind(this);
|
||||
this.getFalukantUserById = this.getFalukantUserById.bind(this);
|
||||
this.changeFalukantUser = this.changeFalukantUser.bind(this);
|
||||
this.getFalukantUserBranches = this.getFalukantUserBranches.bind(this);
|
||||
this.updateFalukantStock = this.updateFalukantStock.bind(this);
|
||||
this.getRoomTypes = this.getRoomTypes.bind(this);
|
||||
this.getGenderRestrictions = this.getGenderRestrictions.bind(this);
|
||||
this.getUserRights = this.getUserRights.bind(this);
|
||||
@@ -137,6 +139,31 @@ class AdminController {
|
||||
}
|
||||
}
|
||||
|
||||
async getFalukantUserBranches(req, res) {
|
||||
try {
|
||||
const { userid: userId } = req.headers;
|
||||
const { falukantUserId } = req.params;
|
||||
const response = await AdminService.getFalukantUserBranches(userId, falukantUserId);
|
||||
res.status(200).json(response);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
res.status(403).json({ error: error.message });
|
||||
}
|
||||
}
|
||||
|
||||
async updateFalukantStock(req, res) {
|
||||
try {
|
||||
const { userid: userId } = req.headers;
|
||||
const { stockId } = req.params;
|
||||
const { quantity } = req.body;
|
||||
const response = await AdminService.updateFalukantStock(userId, stockId, quantity);
|
||||
res.status(200).json(response);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
res.status(403).json({ error: error.message });
|
||||
}
|
||||
}
|
||||
|
||||
async getRoomTypes(req, res) {
|
||||
try {
|
||||
const userId = req.headers.userid;
|
||||
|
||||
@@ -24,6 +24,8 @@ router.post('/contacts/answer', authenticate, adminController.answerContact);
|
||||
router.post('/falukant/searchuser', authenticate, adminController.searchUser);
|
||||
router.get('/falukant/getuser/:id', authenticate, adminController.getFalukantUserById);
|
||||
router.post('/falukant/edituser', authenticate, adminController.changeFalukantUser);
|
||||
router.get('/falukant/branches/:falukantUserId', authenticate, adminController.getFalukantUserBranches);
|
||||
router.put('/falukant/stock/:stockId', authenticate, adminController.updateFalukantStock);
|
||||
|
||||
// --- Minigames Admin ---
|
||||
router.get('/minigames/match3/campaigns', authenticate, adminController.getMatch3Campaigns);
|
||||
|
||||
@@ -15,6 +15,11 @@ import FalukantUser from "../models/falukant/data/user.js";
|
||||
import FalukantCharacter from "../models/falukant/data/character.js";
|
||||
import FalukantPredefineFirstname from "../models/falukant/predefine/firstname.js";
|
||||
import FalukantPredefineLastname from "../models/falukant/predefine/lastname.js";
|
||||
import Branch from "../models/falukant/data/branch.js";
|
||||
import FalukantStock from "../models/falukant/data/stock.js";
|
||||
import FalukantStockType from "../models/falukant/type/stock.js";
|
||||
import RegionData from "../models/falukant/data/region.js";
|
||||
import BranchType from "../models/falukant/type/branch.js";
|
||||
import Room from '../models/chat/room.js';
|
||||
|
||||
class AdminService {
|
||||
@@ -251,6 +256,63 @@ class AdminService {
|
||||
return user;
|
||||
}
|
||||
|
||||
async getFalukantUserBranches(userId, falukantUserId) {
|
||||
if (!(await this.hasUserAccess(userId, 'falukantusers'))) {
|
||||
throw new Error('noaccess');
|
||||
}
|
||||
|
||||
try {
|
||||
// Zuerst die Branches laden
|
||||
const branches = await Branch.findAll({
|
||||
where: {
|
||||
falukantUserId: falukantUserId
|
||||
}
|
||||
});
|
||||
|
||||
// Dann für jede Branch die zusätzlichen Daten laden
|
||||
const branchesWithData = await Promise.all(branches.map(async (branch) => {
|
||||
const region = await RegionData.findByPk(branch.regionId);
|
||||
const branchType = await BranchType.findByPk(branch.branchTypeId);
|
||||
const stocks = await FalukantStock.findAll({
|
||||
where: { branchId: branch.id },
|
||||
include: [{
|
||||
model: FalukantStockType,
|
||||
as: 'stockType',
|
||||
attributes: ['labelTr']
|
||||
}]
|
||||
});
|
||||
|
||||
return {
|
||||
...branch.toJSON(),
|
||||
region: region ? { name: region.name } : null,
|
||||
branchType: branchType ? { labelTr: branchType.labelTr } : null,
|
||||
stocks: stocks
|
||||
};
|
||||
}));
|
||||
|
||||
return branchesWithData;
|
||||
} catch (error) {
|
||||
console.error('Error in getFalukantUserBranches:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async updateFalukantStock(userId, stockId, quantity) {
|
||||
if (!(await this.hasUserAccess(userId, 'falukantusers'))) {
|
||||
throw new Error('noaccess');
|
||||
}
|
||||
|
||||
const stock = await FalukantStock.findByPk(stockId);
|
||||
if (!stock) {
|
||||
throw new Error('Stock not found');
|
||||
}
|
||||
|
||||
stock.quantity = quantity;
|
||||
await stock.save();
|
||||
|
||||
return stock;
|
||||
}
|
||||
|
||||
async changeFalukantUser(userId, falukantUserId, falukantData) {
|
||||
if (!(await this.hasUserAccess(userId, 'falukantusers'))) {
|
||||
throw new Error('noaccess');
|
||||
|
||||
Reference in New Issue
Block a user