From 3ec8cff73fb5becaa8d122fc5a653f85a1be13c7 Mon Sep 17 00:00:00 2001
From: Ulung32 <13521122@mahasiswa.itb.ac.id>
Date: Fri, 17 Nov 2023 01:08:32 +0700
Subject: [PATCH] add getTrackDetail (call from soap)

---
 src/components/template/PesananCard.php       | 20 ++++++
 src/components/track/Track.php                | 31 ++++++---
 src/components/track/TrackDetail.php          | 69 +++++++++++++++++++
 src/controller/track/TrackController.php      |  1 +
 .../track/TrackDetailController.php           | 20 ++++++
 src/soap/DetailPesananSoap.php                |  4 +-
 src/soap/PesananSoap.php                      | 15 +++-
 7 files changed, 149 insertions(+), 11 deletions(-)
 create mode 100644 src/components/template/PesananCard.php
 create mode 100644 src/controller/track/TrackDetailController.php

diff --git a/src/components/template/PesananCard.php b/src/components/template/PesananCard.php
new file mode 100644
index 0000000..f1967f8
--- /dev/null
+++ b/src/components/template/PesananCard.php
@@ -0,0 +1,20 @@
+<?php
+function pesanan_card_template($namaPesanan, $harga, $status, $idPesanan) {
+    $href = "href='/trackDetail/$idPesanan'";
+    $redirectText = "Detail Pesanan";
+
+    $html = <<<"EOT"
+    <article>
+        <a $href>
+            <div class="article-preview">
+                <h2>$namaPesanan</h2>
+                <h4>$harga</h4>
+                <p>$status</p>
+                <h1>$redirectText</h1>
+            </div>
+        </a>
+    </article>
+EOT;
+
+    echo $html;
+}
\ No newline at end of file
diff --git a/src/components/track/Track.php b/src/components/track/Track.php
index 79037b2..c72001e 100644
--- a/src/components/track/Track.php
+++ b/src/components/track/Track.php
@@ -20,20 +20,35 @@
             <span class="centering">
                 <ul>
                     <?php
-                    include_once(dirname(__DIR__) . "/template/HistoryCard.php");
+                    include_once(dirname(__DIR__) . "/template/PesananCard.php");
 
                     ?>
                     <section class="articles">
                     <?php
                     $index = 1;
-                    foreach ($this->data['pesanan'] as $pesanan) {
-                        history_card_template(
-                            "Pesanan".$index,
-                            $pesanan['price'],
-                            $pesanan['status'],
-                            $pesanan['id']);
-                        $index++;
+
+
+                    // var_dump(count($this->data['pesanan']));
+                    if(is_array($this->data['pesanan']->return)){
+                        foreach ($this->data['pesanan']->return as $pesanan) {
+                            pesanan_card_template(
+                                "Pesanan".$index,
+                                $pesanan->harga,
+                                $pesanan->status,
+                                $pesanan->id);
+                            $index++;
+                        }
+                    }else{
+                        foreach ($this->data['pesanan'] as $pesanan) {
+                            pesanan_card_template(
+                                "Pesanan".$index,
+                                $pesanan->harga,
+                                $pesanan->status,
+                                $pesanan->id);
+                            $index++;
+                        }
                     }
+                    
                     ?>
                     </section>
                 </ul>
diff --git a/src/components/track/TrackDetail.php b/src/components/track/TrackDetail.php
index e69de29..d0fefc3 100644
--- a/src/components/track/TrackDetail.php
+++ b/src/components/track/TrackDetail.php
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <title>Track detail</title>
+    <link rel="stylesheet" href="../../styles/Global.css">
+    <link rel="stylesheet" href="../../styles/history/HistoryDetail.css">
+</head>
+
+<body>
+    <?php
+    include(dirname(__DIR__) . '/template/Navbar.php');
+    ?>
+    <div>
+        <h1>Detail Pesanan</h1>
+        <div class="container">
+            <label>Nama Kurir : </label> 
+            <p><?=$this->data['pesanan']->return->alamat?></p>
+            <label>Biaya ongkir : </label> 
+            <p><?=$this->data['pesanan']->return->biaya_pengiriman?></p>
+            <label>Status : </label> 
+            <p><?=$this->data['pesanan']->return->status?></p>
+            <label>Keterangan : </label> 
+            <p><?=$this->data['pesanan']->return->keterangan?></p>
+            <label>Biaya ongkir : </label> 
+            <p><?=$this->data['pesanan']->return->biaya_pengiriman?></p>
+            <label>Alamat : </label> 
+            <p><?=$this->data['pesanan']->return->alamat?></p>
+
+            <h3>Pesanan Details</h3>
+            <table>
+                <tr>
+                    <th>Product Name</th>
+                    <th>Quantity</th>
+                </tr>
+                <?php 
+                    $temp = "";
+                    if(is_array($this->data['detailpesanan']->return)){
+                        foreach ($this->data['detailpesanan']->return as $product) { 
+                            $namaproduk = $product->nama_product;
+                            $quantity = $product->quantity;
+                            $temp .="
+                                <tr>
+                                    <td>$namaproduk</td>
+                                    <td>$quantity</td>
+                                </tr>
+                            ";
+                        } 
+                    }else{
+                        // var_dump($this->data['detailpesanan']);
+                        $namaproduk = $this->data['detailpesanan']->return->nama_product;
+                        $quantity = $this->data['detailpesanan']->return->quantity;
+                        $temp .="
+                            <tr>
+                                <td>$namaproduk</td>
+                                <td>$quantity</td>
+                            </tr>
+                        ";
+                    }
+                    echo $temp;
+                    ?>
+            </table>
+
+
+        </div>
+    </div>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/controller/track/TrackController.php b/src/controller/track/TrackController.php
index ba4461d..b5181fb 100644
--- a/src/controller/track/TrackController.php
+++ b/src/controller/track/TrackController.php
@@ -7,6 +7,7 @@ class TrackController extends Controller{
         $userId = $_SESSION['user_id'];
         PesananSoap::setSoapClient("pesanan");
         $result = PesananSoap::getPesanan($userId);
+        
 
         $data = [
             'pesanan' => $result
diff --git a/src/controller/track/TrackDetailController.php b/src/controller/track/TrackDetailController.php
new file mode 100644
index 0000000..6d3332d
--- /dev/null
+++ b/src/controller/track/TrackDetailController.php
@@ -0,0 +1,20 @@
+<?php
+require_once __DIR__ . '/../../Soap/DetailPesananSoap.php';
+require_once __DIR__ . '/../../Soap/PesananSoap.php';
+class TrackDetailController extends Controller{
+    public function index($id = 0) {
+        PesananSoap::setSoapClient("pesanan");
+        $pesanan = PesananSoap::getPesananByIdPesanan($id);
+        DetailPesananSoap::setSoapClient("detailPesanan");
+        $detail = DetailPesananSoap::getDetailPesanan($id);
+
+        $data = [
+            'pesanan' => $pesanan,
+            'detailpesanan' => $detail
+        ];
+        $this->render($data);
+
+
+        $this->render();
+    }
+}
\ No newline at end of file
diff --git a/src/soap/DetailPesananSoap.php b/src/soap/DetailPesananSoap.php
index 591e655..b5d63f3 100644
--- a/src/soap/DetailPesananSoap.php
+++ b/src/soap/DetailPesananSoap.php
@@ -1,7 +1,7 @@
 <?php
 
 require_once  __DIR__ . '/BaseSoap.php';
-class PesananSoap extends BaseSoap{
+class DetailPesananSoap extends BaseSoap{
     public static SoapClient $client;
     public static string $service;
 
@@ -18,7 +18,7 @@ class PesananSoap extends BaseSoap{
 
     public static function getDetailPesanan(int $idPesanan){
         $result = static::$client->__soapCall('getDetailPesanan', array(
-            'addPesanan' => array(
+            'getDetailPesanan' => array(
                 'arg0' => $idPesanan
             )
         ));
diff --git a/src/soap/PesananSoap.php b/src/soap/PesananSoap.php
index d6c25e5..e6c7cc0 100644
--- a/src/soap/PesananSoap.php
+++ b/src/soap/PesananSoap.php
@@ -38,13 +38,26 @@ class PesananSoap extends BaseSoap{
     }
 
     public static function getPesanan($userId){
-        var_dump($userId);
         $result = static::$client->__soapCall('getPesananByIdUser', array(
             'getPesananByIdUser' => array(
                 'arg0' => $userId,
             )
         ));
+        
+        if(empty((array) $result)){
+            return null;
+        }
+
+        return $result;
+    }
 
+    public static function getPesananByIdPesanan($pesananId){
+        $result = static::$client->__soapCall('getPesananByIdPesanan', array(
+            'getPesananByIdPesanan' => array(
+                'arg0' => $pesananId,
+            )
+        ));
+        
         if(empty((array) $result)){
             return null;
         }
-- 
GitLab