From fbad4cf8400afdc69c26014933571049ef330b0b Mon Sep 17 00:00:00 2001
From: Moreau Elise <moreau.elise13@gmail.com>
Date: Sun, 25 Oct 2020 18:13:44 +0100
Subject: [PATCH] add contaminated info

---
 app/routes.php                                |  1 +
 .../Actions/User/CreateUserAction.php         |  4 +-
 .../Actions/User/ModifyUserAction.php         |  5 +-
 src/Domain/Group/Group.php                    | 11 +++
 src/Domain/User/User.php                      | 90 ++++++++++---------
 templates/user/create_user.twig               |  5 ++
 templates/user/modify_user.twig               |  5 ++
 7 files changed, 78 insertions(+), 43 deletions(-)

diff --git a/app/routes.php b/app/routes.php
index 17b3964..d555329 100644
--- a/app/routes.php
+++ b/app/routes.php
@@ -151,6 +151,7 @@ return function (App $app) {
     $app->group(
         '/api', function (Group $group) {
             $group->get('/users', ListUsersJson::class);
+            $group->get('/{id}/userscontaminated', UsersToJson::class);
         }
     );
 };
diff --git a/src/Application/Actions/User/CreateUserAction.php b/src/Application/Actions/User/CreateUserAction.php
index 6bb6f6a..0f727ac 100755
--- a/src/Application/Actions/User/CreateUserAction.php
+++ b/src/Application/Actions/User/CreateUserAction.php
@@ -24,6 +24,7 @@ class CreateUserAction extends UserAction
         $mail = $this->checkvalue($parsedRequestBody['mail']);
         $password = $this->checkvalue($parsedRequestBody['password']);
         $confirmPassword = $this->checkvalue($parsedRequestBody['confirmpassword']);
+        $contaminated = isset($parsedRequestBody['contaminated']) ? true : false;
 
         if ($password != $confirmPassword) {
             return $this->twig->render(
@@ -33,6 +34,7 @@ class CreateUserAction extends UserAction
                     "firstname" => $firstname,
                     "lastname" => $lastname,
                     "mail" => $mail,
+                    "contaminated" => $contaminated,
                     "password" => null,
                     "confirmpassword" => null,
                     "password_message" => "Passwords don't match",
@@ -46,7 +48,7 @@ class CreateUserAction extends UserAction
 
         $date = new DateTime('now');
 
-        $user = new User(null, $username, $firstname, $lastname, $mail, $password, $date);
+        $user = new User(null, $username, $firstname, $lastname, $mail, $password, $date, $contaminated);
         $this->em->persist($user);
         $this->em->flush();
 
diff --git a/src/Application/Actions/User/ModifyUserAction.php b/src/Application/Actions/User/ModifyUserAction.php
index 13bc56f..7623616 100644
--- a/src/Application/Actions/User/ModifyUserAction.php
+++ b/src/Application/Actions/User/ModifyUserAction.php
@@ -24,6 +24,8 @@ class ModifyUserAction extends UserAction
         $mail = $this->checkvalue($parsedRequestBody['mail']);
         $password = $this->checkvalue($parsedRequestBody['password']);
         $confirmPassword = $this->checkvalue($parsedRequestBody['confirmpassword']);
+        $confirmPassword = $this->checkvalue($parsedRequestBody['confirmpassword']);
+        $contaminated = isset($parsedRequestBody['contaminated']) ? true : false;
 
         if ($password != $confirmPassword) {
             return $this->twig->render(
@@ -33,6 +35,7 @@ class ModifyUserAction extends UserAction
                     "firstname" => $firstname,
                     "lastname" => $lastname,
                     "mail" => $mail,
+                    "contaminated" => $contaminated,
                     "password" => null,
                     "confirmpassword" => null,
                     "password_message" => "Passwords don't match",
@@ -51,7 +54,7 @@ class ModifyUserAction extends UserAction
         $user_db->setFirstname($firstname);
         $user_db->setLastname($lastname);
         $user_db->setMail($mail);
-
+        $user_db->setContaminated($contaminated);
         $this->em->persist($user_db);
         $this->em->flush();
 
diff --git a/src/Domain/Group/Group.php b/src/Domain/Group/Group.php
index cb0f4c3..bd664a5 100755
--- a/src/Domain/Group/Group.php
+++ b/src/Domain/Group/Group.php
@@ -98,7 +98,18 @@ class Group implements JsonSerializable
             }
         }
         return false;
+    }
+
+    public function getContaminatedUsers(): array
+    {
+        $contaminated = [];
+        for ($i = 0; $i < count($this->users); $i += 1){
+            if ($this->users[i]->getContaminated == 1) {
+                array_push($contaminated, $this->users[i]);
+            }
+        }
 
+        return $contaminated;
     }
 
     /**
diff --git a/src/Domain/User/User.php b/src/Domain/User/User.php
index 18bdb17..b0632e2 100755
--- a/src/Domain/User/User.php
+++ b/src/Domain/User/User.php
@@ -84,6 +84,39 @@ class User implements JsonSerializable
      */
     private $location;
 
+    /**
+     * @param int|null $id
+     * @param string   $username
+     * @param string   $firstName
+     * @param string   $lastName
+     * @param string   $mail
+     * @param string   $password
+     * @param date   $joinDate
+     */
+
+    public function __construct(
+        ?int $id,
+        string $username,
+        string $firstName,
+        string $lastName,
+        string $mail,
+        string $password,
+        DateTime $joinDate,
+        bool $contaminated
+    ) {
+        $this->id = $id;
+        $this->username = strtolower($username);
+        $this->firstName = ucfirst($firstName);
+        $this->lastName = ucfirst($lastName);
+        $this->password = $password;
+        $this->mail = strtolower($mail);
+        $this->contaminated = $contaminated;
+        $this->joinDate = $joinDate;
+        $this->groups = new \Doctrine\Common\Collections\ArrayCollection();
+        $this->admins = new \Doctrine\Common\Collections\ArrayCollection();
+
+    }
+
     /**
      * @return int|null
      */
@@ -179,7 +212,10 @@ class User implements JsonSerializable
     */
     public function isCurrentUser(): bool
     {
-        return $_SESSION['userId'] == $this->id;
+        if (isset($_SESSION['userId'])){
+            return $_SESSION['userId'] == $this->id;
+        }
+        return false;
     }
 
     /**
@@ -195,7 +231,7 @@ class User implements JsonSerializable
      */
     public function setFirstname($firstName)
     {
-        $this->$firstName = $firstName;
+        $this->firstName = $firstName;
     }
 
     /**
@@ -203,7 +239,7 @@ class User implements JsonSerializable
      */
     public function setLastname($lastName)
     {
-        $this->$lastName = $lastName;
+        $this->lastName = $lastName;
     }
     
     /**
@@ -211,7 +247,7 @@ class User implements JsonSerializable
      */
     public function setMail($mail)
     {
-        $this->$mail = $mail;
+        $this->mail = $mail;
     }
 
     /**
@@ -230,6 +266,14 @@ class User implements JsonSerializable
     {
         $this->location = $location;
     }
+
+    /**
+     * Set property
+     */
+    public function setContaminated($contaminated)
+    {
+        $this->contaminated = $contaminated;
+    }
     
     public function addGroup(Group $group){
         $this->groups->add($group);
@@ -270,40 +314,4 @@ class User implements JsonSerializable
             'join_date' => $this->getJoinDateString()
         ];
     }
-
-
-
-
-    /**
-     * @param int|null $id
-     * @param string   $username
-     * @param string   $firstName
-     * @param string   $lastName
-     * @param string   $mail
-     * @param string   $password
-     * @param date   $joinDate
-     */
-
-    public function __construct(
-        ?int $id,
-        string $username,
-        string $firstName,
-        string $lastName,
-        string $mail,
-        string $password,
-        DateTime $joinDate
-    ) {
-        $this->id = $id;
-        $this->username = strtolower($username);
-        $this->firstName = ucfirst($firstName);
-        $this->lastName = ucfirst($lastName);
-        $this->password = $password;
-        $this->mail = strtolower($mail);
-        $this->contaminated = false;
-        $this->joinDate = $joinDate;
-        $this->groups = new \Doctrine\Common\Collections\ArrayCollection();
-        $this->admins = new \Doctrine\Common\Collections\ArrayCollection();
-
-    }
-
-}
+}
\ No newline at end of file
diff --git a/templates/user/create_user.twig b/templates/user/create_user.twig
index aabc7e0..be9ec9a 100644
--- a/templates/user/create_user.twig
+++ b/templates/user/create_user.twig
@@ -40,6 +40,11 @@
             </ul>
         </div>
         {% endif %}
+    <div class="field">
+        <input type="checkbox" name="contaminated"> 
+            <label for="contaminated">Contaminated</label>
+        </input>
+    </div>
     </div>
     <input type="submit" class="ui submit button">
 </form>
diff --git a/templates/user/modify_user.twig b/templates/user/modify_user.twig
index 14b8070..f6b3ac6 100644
--- a/templates/user/modify_user.twig
+++ b/templates/user/modify_user.twig
@@ -41,6 +41,11 @@
         </div>
         {% endif %}
     </div>
+    <div class="field">
+    <input type="checkbox" name="contaminated" id="contaminated"> 
+        <label for="contaminated">Contaminated</label>
+    </input>
+    </div>
     <input type="submit" class="ui submit button">
 </form>
 </div>
-- 
GitLab