From c21056edb67ae53f82222a080f2225095a0f48dd Mon Sep 17 00:00:00 2001
From: afnanramadhan <13521011@std.stei.itb.ac.id>
Date: Fri, 17 Nov 2023 04:25:32 +0700
Subject: [PATCH] feat: fix subscribe

---
 public/js/detailfact.js               |  1 +
 server/controller/auth/DetailFact.php | 16 +++---
 server/controller/auth/Fact.php       | 77 +++++++++++++++++++++++++--
 server/controller/auth/Register.php   |  4 +-
 4 files changed, 85 insertions(+), 13 deletions(-)

diff --git a/public/js/detailfact.js b/public/js/detailfact.js
index d760379..c6871cb 100644
--- a/public/js/detailfact.js
+++ b/public/js/detailfact.js
@@ -14,6 +14,7 @@ const loadpage = (id) => {
             
             const parentElement = document.getElementById("content");
             const content = jsonObject['data'][0];
+            console.log(content.is_subscribe[0]);
             let subs = "";
             if(content.is_subscribe[0] == 'true'){
                 subs = "Unsubscribe";
diff --git a/server/controller/auth/DetailFact.php b/server/controller/auth/DetailFact.php
index 648b54b..7ee57cd 100644
--- a/server/controller/auth/DetailFact.php
+++ b/server/controller/auth/DetailFact.php
@@ -73,7 +73,7 @@ if(isset($_GET['subscribe'])){
         $data['data'][0]['path_photo'] = $path_photo;
         $data['data'][0]['author'] = $author;
         $data['data'][0]['total_subscriber'] = count((getSubs($uuid)));
-        $data['data'][0]['is_subscribe'] = isSubscribe($uuid, 1);
+        $data['data'][0]['is_subscribe'] = isSubscribe($uuid, $idUser);
         $data['data'][0]['uuid'] = $uuid;
         
         
@@ -260,13 +260,13 @@ function addExp($id){
 
     $soapRequest = '
     <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
-    <Body>
-        <addExpUser xmlns="http://Services.nutricraft.org/">
-            <arg0 xmlns="">'.$id.'</arg0>
-            <arg1 xmlns="">10</arg1>
-        </addExpUser>
-    </Body>
-</Envelope>';
+        <Body>
+            <addExpUser xmlns="http://Services.nutricraft.org/">
+                <arg0 xmlns="">'.$id.'</arg0>
+                <arg1 xmlns="">10</arg1>
+            </addExpUser>
+        </Body>
+    </Envelope>';
 
     $options = [
         CURLOPT_URL            => $serviceUrl,
diff --git a/server/controller/auth/Fact.php b/server/controller/auth/Fact.php
index 789df18..9235060 100644
--- a/server/controller/auth/Fact.php
+++ b/server/controller/auth/Fact.php
@@ -1,5 +1,8 @@
 <?php
 $API = $_ENV['USER_KEY'];
+$userCookie = $_COOKIE['user'];
+$userData = json_decode($userCookie);
+$idUser = $userData[0]->id;
 
 // u
 ///////////////////////////
@@ -8,13 +11,13 @@ if(isset($_GET['select'])){
     $search = $_GET['search'];
     if($search!=""){
         if($select=="Subscribed"){
-            $uuid = getUUID(1);
+            $uuid = getUUID($idUser);
             $post_data = json_encode(array(
-                'subscribers' => $uuid,
+                'subscribes' => $uuid,
                 'title' => $search,
             ));
 
-            $content = curl_init("http://nutricraft-express:8080/content/title/");
+            $content = curl_init("http://nutricraft-express:8080/content/title/subscriber");
             curl_setopt($content, CURLOPT_RETURNTRANSFER, true);
             curl_setopt($content, CURLOPT_POST, true);
             curl_setopt($content, CURLOPT_POSTFIELDS, $post_data);
@@ -151,7 +154,75 @@ if(isset($_GET['select'])){
         }
     }else{
         if($select=="Subscribed"){
+            $uuid = getUUID($idUser);
+            $post_data = json_encode(array(
+                'subscribes' => $uuid
+            ));
 
+            $content = curl_init("http://nutricraft-express:8080/content/subscriber");
+            curl_setopt($content, CURLOPT_RETURNTRANSFER, true);
+            curl_setopt($content, CURLOPT_POST, true);
+            curl_setopt($content, CURLOPT_POSTFIELDS, $post_data);
+            curl_setopt($content, CURLOPT_HTTPHEADER, array(
+                'Content-Type: application/json',
+            ));
+            $response = curl_exec($content);
+            if (curl_errno($content)) {
+                echo 'Curl error: ' . curl_error($content);
+            }
+            curl_close($content);        
+            $data = json_decode($response, true);        
+            $idPhotoArray = array_map(function($item) {
+                return $item['id_photo'];
+            }, $data['data']);
+        
+            $idCreatorArray = array_map(function($item) {
+                return $item['id_creator'];
+            }, $data['data']);
+            
+            $path_photo = array();
+            $creatorArr = array();
+            
+            for($i = 0; $i < count($idPhotoArray); $i++) {
+                $idPhoto = $idPhotoArray[$i];
+                $photo = curl_init();
+                curl_setopt($photo, CURLOPT_URL, "http://nutricraft-express:8080/image/$idPhoto?APIkey=$API");
+                curl_setopt($photo, CURLOPT_RETURNTRANSFER, 1);
+                $tempResponse = curl_exec($photo);
+                if (curl_errno($photo)) {
+                    echo 'Curl error: ' . curl_error($photo);
+                }
+                curl_close($photo);
+                $tempResponse = json_decode($tempResponse, true);
+                $url = $tempResponse['data']['url'];
+            
+                $path_photo[$i] = $url;
+            }
+            for($i = 0; $i < count($idCreatorArray); $i++) {
+                $idCreator = $idCreatorArray[$i];
+                $creator = curl_init();
+                curl_setopt($creator, CURLOPT_URL, "http://nutricraft-express:8080/user/$idCreator?APIkey=$API");
+                curl_setopt($creator, CURLOPT_RETURNTRANSFER, 1);
+                $tempResponse = curl_exec($creator);
+                if (curl_errno($creator)) {
+                    echo 'Curl error: ' . curl_error($creator);
+                }
+                curl_close($creator);
+                $tempResponse = json_decode($tempResponse, true);
+                $name = $tempResponse['data']['name'];
+                $creatorArr[$i] = $name;
+            }
+            
+            for($i = 0; $i < count($data['data']); $i++) {
+                $data['data'][$i]['path_photo'] = $path_photo[$i];
+                $data['data'][$i]['author'] = $creatorArr[$i];
+            }
+            
+            if ($data) {
+                echo json_encode($data);
+            } else {
+                echo 'API request failed';
+            }
         }else{
             $content = curl_init();
             curl_setopt($content, CURLOPT_URL, "http://nutricraft-express:8080/content?APIkey=$API");
diff --git a/server/controller/auth/Register.php b/server/controller/auth/Register.php
index 1695fda..2004028 100644
--- a/server/controller/auth/Register.php
+++ b/server/controller/auth/Register.php
@@ -33,7 +33,7 @@ if (isset($_POST['uname']) && isset($_POST['psw']) && isset($_POST['email']) &&
     $phoneNumber = $_POST['phoneNumber'];
     $user->Insert($username, $email, $phoneNumber, $password, "user");
     $id = $user->FindIdByEmail($email);
-    addCoins($id);
+    newUser($id);
     if(is_dir("../../../assets/user/$id" == false)){
         echo "<script>('create folder')</script>";
         mkdir("../../../assets/user/$id",0777,true);    
@@ -43,7 +43,7 @@ if (isset($_POST['uname']) && isset($_POST['psw']) && isset($_POST['email']) &&
 }
 
       
-function addCoins($id){
+function newUser($id){
     $serviceUrl =  $_ENV['SOAP_URL_USER_LEVEL']."?APIkey=".$_ENV["SOAP_KEY"];
    
     $soapRequest = '
-- 
GitLab