From 7ff0dbb8c47544b6034d8c53c9f859c5c71e839b Mon Sep 17 00:00:00 2001 From: Zahdi <ZahdiMohcine20@gmail.com> Date: Wed, 26 Mar 2025 10:30:28 +0100 Subject: [PATCH] [progress] --- src/Controller/InvitationController.php | 17 +++++++++++++++++ src/Entity/User.php | 10 ++++++++++ templates/invitation/index.html.twig | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/Controller/InvitationController.php b/src/Controller/InvitationController.php index 2120a274..ef4d7693 100644 --- a/src/Controller/InvitationController.php +++ b/src/Controller/InvitationController.php @@ -95,6 +95,21 @@ final class InvitationController extends AbstractController } + #[Route('/accept_invitation/{id}' , name: 'app_accept_invitation' , methods:['POST', 'GET'])] + public function acceptInvitation(Invitation $invitation ){ + $user = $this->getUser(); + if ($user) { + $user->acceptInvitation($invitation->getId()); + return new Response('Invitation accepté avec succès!', Response::HTTP_OK); + } else { + return $this->createAccessDeniedException("Vous pouvez accèder cette API sans authentification!") ; + } + } + + + + + private function generateJointCreationURL(int $invitation_id): string { $secretKey = 'top_secret_key_789/*-'; $hash = hash_hmac('sha256', (string) $invitation_id, $secretKey); @@ -131,6 +146,8 @@ final class InvitationController extends AbstractController return (int) $invitation_id; } + + } /* $form = $this->createForm(InvitationType::class, $invitation); diff --git a/src/Entity/User.php b/src/Entity/User.php index e08c1f5c..8cd12256 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -220,5 +220,15 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface return $this; } + public function acceptInvitation(int $invitation_id) { + for ($i = 0 ; $i < sizeof($this->invitations) ; $i++ ){ + if ($this->invitations[$i]->getId() == $invitation_id) { + $wishlist = $this->invitations[$i]->getWishlist() ; + unset($this->invitations[$i]) ; + $this->addToAuthorWhishlists($wishlist); + } + } + } + } diff --git a/templates/invitation/index.html.twig b/templates/invitation/index.html.twig index 3054e1e9..44f53435 100644 --- a/templates/invitation/index.html.twig +++ b/templates/invitation/index.html.twig @@ -37,7 +37,7 @@ <p>Email Inviter :{{invitation.inviter.email ?? 'Unavailable'}} </p> </div> <div class="wishlist-actions"> - <button title="Accept"><span>✔</span></button> + <button title="Accept"><span><a href="{{path('app_accept_invitation', {'id': invitation.id})}}" >✔</a></span></button> <button title="Delete"><span>🗑️</span></button> </div> <div class="wishlist-items"> -- GitLab