Refactor church career validation in FalukantService

- Moved church career checks to a more logical position in the transaction flow.
- Improved error handling by ensuring character existence is validated before checking for church office.
- Cleaned up commented code for better readability and maintainability.
This commit is contained in:
Torsten Schulz (local)
2026-01-22 16:54:29 +01:00
parent 4f786cdcc3
commit bceef9777a

View File

@@ -1769,19 +1769,16 @@ class FalukantService extends BaseService {
return await sequelize.transaction(async (t) => { return await sequelize.transaction(async (t) => {
const user = await getFalukantUserOrFail(hashedUserId, { transaction: t }); const user = await getFalukantUserOrFail(hashedUserId, { transaction: t });
const branch = await getBranchOrFail(user.id, branchId);
// Prüfe, ob User eine kirchliche Karriere hat (dann nur Direktoren können verkaufen) // Prüfe, ob User eine kirchliche Karriere hat (dann nur Direktoren können verkaufen)
const character = await FalukantCharacter.findOne({ where: { userId: user.id }, transaction: t }); const character = await FalukantCharacter.findOne({ where: { userId: user.id }, transaction: t });
if (character) { if (!character) throw new Error('No character found for user');
const churchOffice = await ChurchOffice.findOne({ where: { characterId: character.id }, transaction: t }); const churchOffice = await ChurchOffice.findOne({ where: { characterId: character.id }, transaction: t });
if (churchOffice) { if (churchOffice) {
throw new Error('churchCareerNoDirectTransactions'); throw new Error('churchCareerNoDirectTransactions');
} }
}
const branch = await getBranchOrFail(user.id, branchId);
const character = await FalukantCharacter.findOne({ where: { userId: user.id }, transaction: t });
if (!character) throw new Error('No character found for user');
const stocks = await FalukantStock.findAll({ const stocks = await FalukantStock.findAll({
where: { branchId: branch.id }, where: { branchId: branch.id },
@@ -1880,15 +1877,6 @@ class FalukantService extends BaseService {
return await sequelize.transaction(async (t) => { return await sequelize.transaction(async (t) => {
const falukantUser = await getFalukantUserOrFail(hashedUserId, { transaction: t }); const falukantUser = await getFalukantUserOrFail(hashedUserId, { transaction: t });
// Prüfe, ob User eine kirchliche Karriere hat (dann nur Direktoren können verkaufen)
const character = await FalukantCharacter.findOne({ where: { userId: falukantUser.id }, transaction: t });
if (character) {
const churchOffice = await ChurchOffice.findOne({ where: { characterId: character.id }, transaction: t });
if (churchOffice) {
throw new Error('churchCareerNoDirectTransactions');
}
}
const branch = await Branch.findOne({ const branch = await Branch.findOne({
where: { id: branchId, falukantUserId: falukantUser.id }, where: { id: branchId, falukantUserId: falukantUser.id },
include: [{ model: FalukantStock, as: 'stocks' }], include: [{ model: FalukantStock, as: 'stocks' }],
@@ -1896,8 +1884,15 @@ class FalukantService extends BaseService {
}); });
if (!branch) throw new Error('Branch not found'); if (!branch) throw new Error('Branch not found');
const stockIds = branch.stocks.map(s => s.id); const stockIds = branch.stocks.map(s => s.id);
// Prüfe, ob User eine kirchliche Karriere hat (dann nur Direktoren können verkaufen)
const character = await FalukantCharacter.findOne({ where: { userId: falukantUser.id }, transaction: t }); const character = await FalukantCharacter.findOne({ where: { userId: falukantUser.id }, transaction: t });
if (!character) throw new Error('No character for user'); if (!character) throw new Error('No character for user');
const churchOffice = await ChurchOffice.findOne({ where: { characterId: character.id }, transaction: t });
if (churchOffice) {
throw new Error('churchCareerNoDirectTransactions');
}
const inventory = await Inventory.findAll({ const inventory = await Inventory.findAll({
where: { stockId: stockIds }, where: { stockId: stockIds },
include: [ include: [