Add heir management functionality in Falukant module
- Implemented setHeir method in FalukantService to designate a child as heir, including validation checks for user and child relationships. - Updated FalukantController to expose the setHeir endpoint, allowing users to set heirs via the API. - Enhanced FalukantRouter with a new route for setting heirs. - Modified FamilyView component to include UI elements for setting heirs, with success and error feedback. - Updated localization files in both German and English to include new translations related to heir management, improving user experience.
This commit is contained in:
@@ -92,6 +92,7 @@ class FalukantController {
|
||||
if (!result) throw { status: 404, message: 'No family data found' };
|
||||
return result;
|
||||
});
|
||||
this.setHeir = this._wrapWithUser((userId, req) => this.service.setHeir(userId, req.body.childCharacterId));
|
||||
this.acceptMarriageProposal = this._wrapWithUser((userId, req) => this.service.acceptMarriageProposal(userId, req.body.proposalId));
|
||||
this.getGifts = this._wrapWithUser((userId) => {
|
||||
console.log('🔍 getGifts called with userId:', userId);
|
||||
|
||||
9
backend/migrations/add_is_heir_to_child_relation.sql
Normal file
9
backend/migrations/add_is_heir_to_child_relation.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- Migration: Add is_heir column to child_relation table
|
||||
-- Date: 2025-12-08
|
||||
-- Description: Adds a boolean field to mark a child as the heir
|
||||
|
||||
ALTER TABLE falukant_data.child_relation
|
||||
ADD COLUMN IF NOT EXISTS is_heir BOOLEAN DEFAULT false;
|
||||
|
||||
COMMENT ON COLUMN falukant_data.child_relation.is_heir IS 'Marks whether this child is set as the heir';
|
||||
|
||||
@@ -38,6 +38,7 @@ router.get('/director/:branchId', falukantController.getDirectorForBranch);
|
||||
router.get('/directors', falukantController.getAllDirectors);
|
||||
router.post('/directors', falukantController.updateDirector);
|
||||
router.post('/family/acceptmarriageproposal', falukantController.acceptMarriageProposal);
|
||||
router.post('/family/set-heir', falukantController.setHeir);
|
||||
router.get('/family/gifts', falukantController.getGifts);
|
||||
router.get('/family/children', falukantController.getChildren);
|
||||
router.post('/family/gift', falukantController.sendGift);
|
||||
|
||||
@@ -2391,11 +2391,13 @@ class FalukantService extends BaseService {
|
||||
for (const rel of allRels) {
|
||||
const kid = rel.child;
|
||||
children.push({
|
||||
childCharacterId: kid.id,
|
||||
name: kid.definedFirstName?.name || 'Unknown',
|
||||
gender: kid.gender,
|
||||
age: calcAge(kid.birthdate),
|
||||
hasName: rel.nameSet,
|
||||
_createdAt: rel.createdAt,
|
||||
hasName: rel.nameSet,
|
||||
isHeir: rel.isHeir || false,
|
||||
_createdAt: rel.createdAt,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -2426,6 +2428,46 @@ class FalukantService extends BaseService {
|
||||
return family;
|
||||
}
|
||||
|
||||
async setHeir(hashedUserId, childCharacterId) {
|
||||
const user = await this.getFalukantUserByHashedId(hashedUserId);
|
||||
if (!user) throw new Error('User not found');
|
||||
const character = await FalukantCharacter.findOne({ where: { userId: user.id } });
|
||||
if (!character) throw new Error('Character not found for this user');
|
||||
|
||||
// Prüfe, ob das Kind wirklich ein Kind des aktuellen Charakters ist
|
||||
const childRelation = await ChildRelation.findOne({
|
||||
where: {
|
||||
childCharacterId: childCharacterId,
|
||||
[Op.or]: [
|
||||
{ fatherCharacterId: character.id },
|
||||
{ motherCharacterId: character.id }
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
if (!childRelation) {
|
||||
throw new Error('Child not found or not your child');
|
||||
}
|
||||
|
||||
// Setze alle anderen Kinder des gleichen Elternteils auf isHeir = false
|
||||
await ChildRelation.update(
|
||||
{ isHeir: false },
|
||||
{
|
||||
where: {
|
||||
[Op.or]: [
|
||||
{ fatherCharacterId: character.id },
|
||||
{ motherCharacterId: character.id }
|
||||
]
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
// Setze das ausgewählte Kind als Erben
|
||||
await childRelation.update({ isHeir: true });
|
||||
|
||||
return { success: true, childCharacterId };
|
||||
}
|
||||
|
||||
async getPossiblePartners(requestingCharacterId) {
|
||||
const proposals = await MarriageProposal.findAll({
|
||||
where: {
|
||||
|
||||
Reference in New Issue
Block a user