diff --git a/backend/src/entities/Group.ts b/backend/src/entities/Group.ts index 34126df..5327063 100644 --- a/backend/src/entities/Group.ts +++ b/backend/src/entities/Group.ts @@ -45,7 +45,7 @@ export class Group extends BaseEntity { @Field() event_type: string; - @Column() + @Column({ default: 0 }) @Field() piggy_bank: number; diff --git a/backend/src/resolvers/GroupResolver.ts b/backend/src/resolvers/GroupResolver.ts index 0dcba1f..7851212 100644 --- a/backend/src/resolvers/GroupResolver.ts +++ b/backend/src/resolvers/GroupResolver.ts @@ -28,8 +28,8 @@ class CreateGroupInput { @Field() event_type!: string; - @Field() - piggy_bank!: number; + @Field({ nullable: true, defaultValue: 0 }) + piggy_bank?: number; @Field() deadline!: Date; @@ -40,6 +40,15 @@ class CreateGroupInput { user_beneficiary?: string; } +@InputType() +class AddFundsInput { + @Field() + groupId!: number; + + @Field() + amount!: number; +} + @ObjectType() export class MyGroupsResponse { @Field(() => [Group]) @@ -121,7 +130,7 @@ export default class GroupResolver { user_admin: userAdmin, name: data.name, event_type: data.event_type, - piggy_bank: data.piggy_bank, + piggy_bank: data.piggy_bank ?? 0, deadline: data.deadline, user_beneficiary: beneficiaryUser ?? undefined, }); @@ -156,4 +165,34 @@ export default class GroupResolver { return group; } + + @UseMiddleware(RoleMiddleware()) + @Mutation(() => Group) + async addFundsToGroup(@Arg("data") data: AddFundsInput, @Ctx() ctx: ContextType) { + if (!ctx.user) throw new Error("Utilisateur non connecté"); + + // Vérifier que le groupe existe + const group = await Group.findOne({ + where: { id: data.groupId }, + relations: { groupMember: true }, + }); + + if (!group) throw new Error("Groupe introuvable"); + + // Vérifier que l'utilisateur est membre du groupe + const isMember = await GroupMember.findOne({ + where: { groupId: data.groupId, userId: ctx.user.id }, + }); + + if (!isMember) throw new Error("Vous n'êtes pas membre de ce groupe"); + + // Vérifier que le montant est positif + if (data.amount <= 0) throw new Error("Le montant doit être positif"); + + // Ajouter les fonds à la cagnotte + group.piggy_bank += data.amount; + await group.save(); + + return group; + } } diff --git a/frontend/src/components/Wishlist.tsx b/frontend/src/components/Wishlist.tsx index 5cffffb..3d27144 100644 --- a/frontend/src/components/Wishlist.tsx +++ b/frontend/src/components/Wishlist.tsx @@ -151,14 +151,6 @@ export default function Wishlist() {
Aucune idée pour l'instant.
-