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:
@@ -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 });
|
||||||
|
|
||||||
// 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 });
|
|
||||||
if (character) {
|
|
||||||
const churchOffice = await ChurchOffice.findOne({ where: { characterId: character.id }, transaction: t });
|
|
||||||
if (churchOffice) {
|
|
||||||
throw new Error('churchCareerNoDirectTransactions');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const branch = await getBranchOrFail(user.id, branchId);
|
const branch = await getBranchOrFail(user.id, branchId);
|
||||||
|
|
||||||
|
// 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) throw new Error('No character found for user');
|
if (!character) throw new Error('No character found for user');
|
||||||
|
|
||||||
|
const churchOffice = await ChurchOffice.findOne({ where: { characterId: character.id }, transaction: t });
|
||||||
|
if (churchOffice) {
|
||||||
|
throw new Error('churchCareerNoDirectTransactions');
|
||||||
|
}
|
||||||
|
|
||||||
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: [
|
||||||
|
|||||||
Reference in New Issue
Block a user