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