diff --git a/src/Controller/InvitationController.php b/src/Controller/InvitationController.php index 2120a274f8b70ef0eaf7df593c5064413c6a70ff..ef4d7693a56e1280b954a1288c13d87533af4ba1 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 e08c1f5cc3565d2e7599478d8e54cc8053003942..8cd12256ad66757e6a357948b61e54e3ce5faacc 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 3054e1e9a4561a1358a37f1dee96fce0808fb19d..44f53435d78af835b325ed4225d59f26b0d4fc80 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">