Dokumentasi

Aplikasi jlantah berbasis website


  • Created: 20 Maret 2022
  • Update: 30 Maret 2022

Halaman dokumentasi ini akan diperbaharui seiring dengan fitur yang didevelop.


Instalasi

Aplikasi jlantah berbasis website ini dibuild menggunakan framework laravel dengan mengambil API sebagai sumber data. Concern utama dalam pembuatan aplikasi ini terletak pada controller, view dan route. Controller berfungsi untuk mengolah logic aplikasi, view berfungsi untuk menampilkan data dan route berfungsi untuk menentukan rute url ketika dipanggil. Langkah-langkah instalasi aplikasi laravel ke server (dalam hal ini adalah shared hosting) adalah sebagai berikut :

  1. Upload source code ke public_html pada shared hosting, jika file yang diupload berbentuk zip, maka silakan lakukan extract pada file tersebut.
  2. Jika file tersebut sudah diextract, maka pindahkan hasil extract tersebut ke root folder public_html. Sehingga struktur file nya adalah public_html/file_source_code
  3. Dikarenakan server yang digunakan adalah shared hosting, maka default url aplikasi jika diakses adalah http://nama_domain/public. Untuk menghilangkan tambahan url public, agar secara default dapat diakses menggunakan domain utama, maka diperlukan langkah-langkah berikut :
    • Buat satu folder baru di root public_html, sebagai contoh laravel.
    • Kemudian pindahkan seluruh file dan folder yang terdapat pada root public_html kecuali folder public, ke dalam folder laravel.
    • Langkah selanjutnya adalah, pindahkan seluruh file yang ada di dalam folder public, ke folder root public_html, sehingga struktur nya seperti ini :

    • Setelah itu silakan edit file index.php yang terdapat pada root public_html. Lalu sesuaikan path pemanggilan file autoload.php dan app.php dengan menambahkan nama folder yang telah dibuat sebelumnya (dalam hal ini nama foldernya adalah laravel). Lakukan perubahan seperti gambar di bawah ini :

    • Setelah melakukan perubahan pada file index.php, silakan Anda akses domain utama yang digunakan, jika berhasil maka secara default url yang terbuka tidak ada tambahan '/' (slash) public .


Set env

Setelah website berhasil terbuka, maka langkah selanjutnya adalah melakukan konfigurasi pada file .env. Silakan buka file .env yang terdapat pada root folder public_html. Ubah pada bagian APP_DEBUG menjadi false, agar debug/notice error tidak ditampilkan ketika website dibuka. Kemudian ubah juga pada bagian API_URL dengan alamat IP untuk API production yang digunakan.

Dalam tampilan shared hosting, jika file .env tidak ditemukan silakan Anda klik menu setting yang terdapat di pojok kanan atas, kemudian beri tanda ceklis pada bagian 'Show Hidden Files (dotfiles)'.


Clear Cache

Jika Anda menjumpai cache pada aplikasi dan ingin melakukan pembersihan cache, Anda dapat melakukan proses clear cache yang meliputi pembersihan cache aplikasi, cache route , cache config dan cache view. Akan tetapi jika server yang digunakan berbentuk shared hosting, maka Anda perlu mengakses melalui fitur SSH/terminal yang terdapat pada cpanel.


Route

Route berperan sebagai penghubung antara user dengan keseluruhan framework. Untuk melakukan perubahan atau penambahan route, Anda dapat melakukan perubahan pada file web.php yang terdapat pada routes/web.php


Autentikasi

Sebelum mengakses fitur yang terdapat dalam website jlantah, diperlukan autentikasi berupa email dan password. Email dan password yang telah diinput kemudian akan divalidasi datanya oleh API. Jika data yang diinput cocok, maka akan didirect ke halaman dashboard, akan tetapi jika data yang diinput tidak cocok maka akan dikembalikan ke halaman login.

Login

Akses url untuk mengakses halaman login didefinisikan dalam route Route::resource('/', 'LoginController'). Berdasarkan route tersebut maka dapat diartikan bahwa controller LoginController.php adalah controller yang bertugas untuk menghandle proses login. Path LoginController.php dapat Anda temukan pada folder app/Http/Controllers/LoginController.php. Function yang berfungsi untuk menampilkan view dari halaman login adalah function public function index(Request $request), sedangkan function yang berfungsi untuk mengolah proses login adalah public function login(Request $request) seperti di bawah ini :

            
              public function login(Request $request)
              {
                  $api = env('API_URL');

                  $curl = curl_init();

                  curl_setopt_array($curl, array(
                  CURLOPT_URL => ''.$api.'api/auth/web',
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_ENCODING => '',
                  CURLOPT_MAXREDIRS => 10,
                  CURLOPT_TIMEOUT => 0,
                  CURLOPT_FOLLOWLOCATION => true,
                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                  CURLOPT_CUSTOMREQUEST => 'POST',
                  CURLOPT_POSTFIELDS =>'{
                      "email": "'.$request->email.'",
                      "password": "'.$request->password.'",
                      "fcm_token": "'.$request->token.'"
                  }',
                  CURLOPT_HTTPHEADER => array(
                      'Content-Type: application/json'
                  ),

                  ));

                  $response = curl_exec($curl);
                  curl_close($curl);
                  $responseData = json_decode($response, true);
                  $data = $responseData['status'];
                  
                  if ($data=='success') {

                      $curl = curl_init();
                      curl_setopt_array($curl, array(
                        CURLOPT_URL => ''.$api.'api/profile/me',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'GET',
                        CURLOPT_HTTPHEADER => array(
                          'x-auth-token: '.$responseData['token'].''
                        ),
                      ));

                      $response = curl_exec($curl);
                      curl_close($curl);
                      $responseDataProfile = json_decode($response, true);
                      $id = $responseDataProfile['id'];
                      $level_user = $responseDataProfile['level_user'];
                      $nama = $responseDataProfile['nama'];

                      $request->session()->put('token',$responseData['token']);
                      $request->session()->put('client_secret',$responseData['client_secret']);
                      $request->session()->put('uid',$id);
                      $request->session()->put('level_user',$level_user);
                      $request->session()->put('nama',$nama);

                      if ($level_user==1 || $level_user==3) {
                          return \redirect()->to( 'dashboard' );
                      } else {
                          return \redirect()->to( 'dashboard_hub' );
                      }
                      

                  } else {

                      $message = 'error';
                      return view('login', ['message' => $message]);
                  }
                  
              }
            
          

Function login di atas digunakan untuk melakukan validasi data email dan password yang telah diinputkan oleh user. Variabel $api, merupakan variable yang digunakan untuk menyimpan data url API (API_URL) yang didefinisikan dalam file .env. Kemudian data email dan password tersebut dikirim dengan method POST ke API api/auth/web. Output atau return dari pengiriman data tersebut adalah response data yang disimpan dalam variable $data . Jika status success, maka akan diteruskan untuk memanggil API (method GET) api/profile/me dengan menyertakan http_header berupa token dan client_secret yang didapat dari variable $data.

Dari pemanggilan API api/profile/me, didapatkan response data berupa id, level_user, dan nama yang kemudian masing-masing data tersebut disimpan dalam SESSION $request->session()->put('nama_session', variable). Setalah didapatkan level_user, kemudian terdapat kondisi untuk melakukan redirect return \redirect()->to( 'destinasi_route' ) sesuai dengan level_user yang didapat.

Jika data email dan password yang dimasukkan tidak cocok dengan yang ada di database, maka akan didirect kembali ke halaman login, dengan menyertakan pesan kesalahan yang ada di dalam variable $message, return view('login', ['message' => $message])

Logout

Setiap kali mengakses fitur atau menu dalam website, dibutuhkan setidaknya 2 (dua) value yaitu token dan client_secret yang didapatkan dari pemanggilan API login (api/auth/web). Untuk menjalankan logout, maka Anda harus menghapus kedua value tersebut yang disimpan dalam SESSION. Untuk menghapus atau menghilangkan kedua value tersebut, bisa menggunakan perintah session forget seperti ini $request->session()->forget('nama_session'). Untuk lebih detailnya Anda bisa mengecek pada function logout yang terdapat pada LoginController.php.

            
              public function logout(Request $request)
                {
                    $request->session()->forget('token');
                    $request->session()->forget('client_secret');
                    return \redirect()->to( '' );
                }
            
          

Pada perintah di atas, sistem akan menghapus dua value pada SESSION yaitu token dan client_secret yang kemudian akan didirect menuju route ('') . Jika merujuk pada route laravel (routes/web.php), maka route('') maka akan menuju halaman utama login (Route::resource('/', 'LoginController')).


Lupa Password

Fitur yang tersedia untuk mereset password dari sisi user adalah lupa password. Dalam route laravel, Anda dapat menemukan pada bagian Route::resource('/lupa_password', 'LupapasswordController'). Dalam controller LupapasswordController.php, function index() berfungsi untuk menampilkan halaman lupa password. Dari halaman tersebut user harus memasukkan inputan alamat email yang kemudian oleh API (http://nama_domain/sendEmailForgot) akan dicek terlebih dahulu datanya ke database. Dari hasil pengecekan melalui API tersebut, halaman view (resources/views/lupa_password.blade.php) akan membuat kondisi seperti ini :

            
              $.ajax({
                    url: "../sendEmailForgot",
                    type: "PUT",
                    data: { _token: _token, verify_token: verify_token, email: email },
                    success: function (data) {
                        
                        if(data.status==='success') {
                        swal("Sukses!", "Permintaan reset password berhasil dikirim ke email!", "success").then(function() {
                          window.location = "/";
                        });  
                        } else {
                           swal("Gagal!", ""+data.message+"", "error")
                        }
                    },
                });
            
          

Jika status return atau response dari API adalah success , maka sistem akan melakukan direct ke halaman utama (window.location = "/";), dimana user akan menerima email berupa link untuk melakukan perubahan password (proses pengiriman email diproses oleh API). Sedangkan jika status return atau response dari API tidak sama dengan sukses, maka akan ditampilkan pesan kesalahan (swal("Gagal!", ""+data.message+"", "error")).


Admin

Admin merupakan salah satu group user dalam aplikasi jlantah yang mempunyai akses data atau akses menu paling tinggi. Dalam menu admin terdapat beberapa menu seperti dashboard, data master, data user, data mitra, data order, data delivery order, data pencairan poin dan lain sebagainya. Lebih lanjut mengenai penjelasan dari masing-masing menu dapat Anda temukan melalui penjelasan di bawah ini.


Dashboard

Dashboard berfungsi untuk menampilkan data statistik, data order terbaru dan data pencairan terbaru. Route dashboard admin dapat Anda temukan pada bagian Route::resource('/dashboard', 'DashboardController'). Pada DashboardController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/dashboard.blade.php.

            
                $.ajax({
                    url: 'loadDataDashboard/'+start+'/'+end,
                    type: 'get',
                    dataType: 'json',
                    success: function(response){

                      ....
                        
                    },
                });
            
          

View dashboard.blade.php, akan memanggil data melalui ajax dengan destinasi route loadDataDashboard/'+start+'/'+end. Parameter start merupakan tanggal awal dan parameter end merupakan parameter tanggal akhir. Url ajax loadDataDashboard/'+start+'/'+end jika Anda cek pada routes/web.php akan mengarah pada Route::get('/loadDataDashboard/{start}/{end}', 'DashboardController@loadDataDashboard'). Function loadDataDashboard pada DashboardController.php inilah yang bertugas untuk melakukan pemanggilan data ke API http://nama_domain/api/admin/dashboard?start_date='.$start_date.'&end_date='.$end_date.' dengan memanfaatkan http client Guzzle. Selengkapnya tentang Guzzle, dapat Anda temukan disini.


Data Master

Dalam data master terdapat beberapa sub menu seperti data alasan user cancel, user reject, mitra cancel, mitra reject, behaviour, bank, aset mitra dan jenis usaha. Data master berfungsi sebagai data acuan untuk digunakan di beberapa fungsi halaman aplikasi baik website maupun mobile. Secara umum, konsep dari data master menggunakan fungsi CRUD (Create, Read, Update, Delete). Penjelasan singkat mengenai masing-masing fungsi CRUD akan dijelaskan pada penjelasan di bawah ini

.
  • Create Data

  • Fungsi untuk menghandle create data dihandle oleh fungsi public function insertNamaMenu(Request $request) pada controller DatamembercancelController.php, DatamemberrejectController.php, DatamitraController.php, DatamitrarejectController.php, DataasetmitraController.php dan DatajenisusahaController.php.

                    
                        
                        public function insertNamaDataMaster(Request $request) {
                
                            $form_data = array(
                                'field'        =>    $request->field,
                                'field_1'        =>  $request->field_1,
                                'field_2'        =>  $request->field_2,
                            );
    
                            $postdata = json_encode($form_data);
    
                            $token = $request->session()->get('token');
                            $client_secret = $request->session()->get('client_secret');
                            $httpMethod = "POST";
                            $body = $postdata;
                            $sign = new Signature();
                            $signature = $sign->_createSignature($httpMethod, $body);
                            $url = env('API_URL');
    
                            $curl = curl_init();
    
                            curl_setopt_array($curl, array(
                              CURLOPT_URL => 'URL API',
                              CURLOPT_RETURNTRANSFER => true,
                              CURLOPT_ENCODING => '',
                              CURLOPT_MAXREDIRS => 10,
                              CURLOPT_TIMEOUT => 0,
                              CURLOPT_FOLLOWLOCATION => true,
                              CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                              CURLOPT_CUSTOMREQUEST => 'POST',
                              CURLOPT_POSTFIELDS => $postdata,
                              CURLOPT_HTTPHEADER => array(
                                'x-auth-token: '.$token.'',
                                'x-auth-client: '.$client_secret.'',
                                'x-auth-signature: '.$signature.'',
                                'Content-Type: application/json'
                              ),
                            ));
    
                            $response = curl_exec($curl);
                            $convert = json_decode($response,true);
                            $data = $convert['status'];
                            $message = $convert['message'];
                            curl_close($curl);
                            return response()->json(['status' => $data , 'message' => $message]);
                        }
                    
                  

    Fungsi insert di atas menggunakan method POST harus menyertakan header berupa token, client secret dan auth signature. Token dan client_secret diperoleh dari proses login yang kemudian disimpan dalam SESSION, sedangkan auth_signature merupakan isian data yang diinput oleh user, yang diproses menggunakan encode-decode oleh fungsi helper Signature. Helper signature dapat Anda ditemukan pada app/Helpers/Signature.php.


    Dari sisi view, request untuk melakukan create data dihandle oleh ajax seperti berikut ini :

                    
                    $.ajax({
                        url:"insertNamaDataMaster",
                        method:"POST",
                        data: new FormData(this),
                        contentType: false,
                        cache:false,
                        processData: false,
                        dataType:"json",
                        beforeSend: function(){
                        $('.loader').css("visibility", "visible");
                        },
                        success:function(data)
                        {
                            .....
                        },
                    });
                    
                  
  • Read Data

  • Fungsi untuk menampilkan data pada setiap data master dihandle oleh fungsi function loadDataNamaMenu(Request $request, $limit, $page) di setiap controller data master .

                    
    
                       public function loadDataNamaDataMaster(Request $request, $limit, $page) {
    
                          $token = $request->session()->get('token');
                          $client_secret = $request->session()->get('client_secret');
                          $httpMethod = "GET";
                          $body = "{}";
                          $sign = new Signature();
                          $signature = $sign->_createSignature($httpMethod, $body);
    
                          $api = env('API_URL');
    
                          $client = new  \GuzzleHttp\Client(); 
                          $response = $client->request("GET", 'http://nama_domain&page='.$page.'&limit='.$limit.'&sort=desc', 
                              ['headers' => [
                                  'x-auth-token' => ''.$token.'',
                                  'x-auth-client' => ''.$client_secret.'',
                                  'x-auth-signature' => ''.$signature.'']
                              ]); 
    
                          $data = json_decode((string) $response->getBody(), true);
                          echo json_encode($data);
                      }
                        
                    
                  

    Fungsi loadData di atas akan memanggil atau merequest ke API dengan menyertakan header token, client_secret dan signature. Token dan client_secret didapatkan dari proses login yang disimpan di dalam SESSION, sedangkan signature didapatkan dengan memangil helper Signature. Pada bagian loadData signature didapatkan dari variable $body yang kemudian dibungkus dalam helper Signature. Adapun untuk url API terdapat beberapa tambahan parameter yaitu page (halaman pagination), limit (jumlah data yang ditampilkan) dan desc (urutan data).

    Sedangkan dari sisi view, untuk memanggil data ke API menggunakan ajax seperti berikut ini :

                    
                        function loadData(limit, page){
                          $.ajax({
                          url: 'loadDataNamaDataMaster/'+limit+'/'+page,
                          type: 'get',
                          dataType: 'json',
                            success: function(response){
    
                              ....
                                
                            },
                          });
                        }
                    
                  
  • Update Data

  • Fungsi untuk melakukan update data pada setiap data master dihandle oleh fungsi function updateNamaMenu(Request $request) pada controller setiap data master.

                    
                    public function updateNamaDataMaster(Request $request) {
                      $form_data = array(
                            'field'        =>  $request->field,
                            'field_1'        =>  $request->field,
                            'field_2'        =>  $request->field,
                      );
    
                      $postdata = json_encode($form_data);
    
                      $token = $request->session()->get('token');
                      $client_secret = $request->session()->get('client_secret');
                      $httpMethod = "PUT";
                      $body = $postdata;
                      $sign = new Signature();
                      $signature = $sign->_createSignature($httpMethod, $body);
                      $url = env('API_URL');
    
                      $curl = curl_init();
    
                      curl_setopt_array($curl, array(
                        CURLOPT_URL => URL API,
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'PUT',
                        CURLOPT_POSTFIELDS => $postdata,
                        CURLOPT_HTTPHEADER => array(
                          'x-auth-token: '.$token.'',
                          'x-auth-client: '.$client_secret.'',
                          'x-auth-signature: '.$signature.'',
                          'Content-Type: application/json'
                        ),
                      ));
    
                      $response = curl_exec($curl);
                      $convert = json_decode($response,true);
                      $data = $convert['status'];
                      $message = $convert['message'];
                      curl_close($curl);
                      return response()->json(['status' => $data , 'message' => $message]);       
                    }
                    
                  

    Secara umum proses update data tidak jauh berbeda dengan proses create data. Data yang telah diinput oleh user kemudian dibungkus oleh helper Signature yang kemudian dimasukkan ke dalam headers bersama dengan token dan client_secret. Yang membedakan dengan proses create data adalah method pengiriman data, dimana dalam proses update data menggunakan method PUT.

    Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax seperti berikut ini :

                    
                    $.ajax({
                      url: "updateNamaDataMaster",
                      type: "PUT",
                      data: { _token: _token, _id: _id, field: field, field_1:field_1, field_2:field_2 },
                      success: function (data) {
    
                        .....
    
                      },
                    });
                    
                  
  • Delete Data
  • Fungsi untuk melakukan hapus data pada setiap data master dihandle oleh fungsi function deleteNamaMenu(Request $request, $id) pada controller setiap data master.

                    
                    public function deleteNamaDataMaster(Request $request, $id) {
    
                        $token = $request->session()->get('token');
                        $client_secret = $request->session()->get('client_secret');
                        $httpMethod = "DELETE";
                        $body = "{}";
                        $sign = new Signature();
                        $signature = $sign->_createSignature($httpMethod, $body);
                        $url = env('API_URL');
    
                        $curl = curl_init();
    
                        curl_setopt_array($curl, array(
                          CURLOPT_URL => 'URL API/'.$id.'',
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_ENCODING => '',
                          CURLOPT_MAXREDIRS => 10,
                          CURLOPT_TIMEOUT => 0,
                          CURLOPT_FOLLOWLOCATION => true,
                          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                          CURLOPT_CUSTOMREQUEST => 'DELETE',
                          CURLOPT_HTTPHEADER => array(
                            'x-auth-token: '.$token.'',
                            'x-auth-client: '.$client_secret.'',
                            'x-auth-signature: '.$signature.'',
                          ),
                        ));
    
                        $response = curl_exec($curl);
    
                        $convert = json_decode($response,true);
                        $data = $convert['status'];
                        curl_close($curl);
                        return response()->json(['status' => $data]);
    
                    }
                    
                  

    Pada code di atas, controller akan menangkap parameter yang dikirimkan dari view berupa variabel $id. Parameter tersebut digunakan dalam pemanggilan url API. Untuk menjalankan proses hapus data, diperlukan token, client secret dan signature. Token dan client secret diperoleh dari proses login yang disimpan dalam SESSION, sedangkan signature diperoleh dari variable $body yang kemudian dibungkus menggunakan helper signature.


Data User

Pada aplikasi website, data user berfungsi untuk menampilkan keseluruhan data user baik yang berstatus aktif maupun non-aktif. Selain itu, menu data user juga berfungsi untuk menampilkan detail informasi user seperti informasi dasar, detail alamat, dan detail riwayat order.

.
  • View Data

  • Cara membaca halaman data user dapat Anda temukan pada route Route::resource('/data_user', 'DatauserController'). Pada DatauserController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/data_user.blade.php

                    
                    $.ajax({
                        url: 'loadDataUser/'+limit+'/'+page+'/'+sort+'/'+search+'/'+status,
                        type: 'get',
                        dataType: 'json',
    
                        success: function(response){
                        ....
                        }
                    });
                    
                

    Fungsi ajax di atas merupakan request untuk memanggil data user ke API, dengan tambahan parameter seperti limit (jumlah data yang ingin ditampilkan), page (halaman pagination), sort (urutan data), search (kata pencarian) dan status (status user). Secara default di dalam data_user.blade.php pemanggilan data user, menggunakan function loadData(10,1,'desc','all',1), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan, 1 merupakan parameter page yang berarti halaman default pagination adalah 1, desc merupakan parameter sort yang berarti urutan data descending, all merupakan parameter search dimana dalam controller DatauserController.php function loadDataUser(Request $request, $limit, $page, $sort ,$search, $status) 'all' akan di-replace menjadi string kosong '', dan 1 merupakan parameter status yang berarti menunjukan status user aktif.

  • Detail Data

    Route untuk menghandle halaman detail data user adalah Route::get('/detail_user/{id}', 'DatauserController@detailUser'), dimana dalam controller DatauserController.php function detailUser(Request $request, $id) akan melakukan request ke beberapa API untuk menampilkan data informasi user, detail alamat, dan riwayat pemesanan.

    • Informasi User

    • Informasi user dapat Anda temukan pada controller DatauserController.php function detailUser(Request $request, $id). Di dalam function tersebut terdapat perintah untuk melakukan pemanggilan data ke API :
                          
                          $client = new  \GuzzleHttp\Client(); 
                          $response = $client->request("GET", ''.$api.'api/admin/user/'.$id.'', 
                              ['headers' => [
                                  'x-auth-token' => ''.$token.'',
                                  'x-auth-client' => ''.$client_secret.'',
                                  'x-auth-signature' => ''.$signature.'']
                              ]); 
      
                          $data = json_decode((string) $response->getBody(), true);
                          $detail = $data['data'];
                          
                      

      Variable $detail itulah yang berfungsi untuk menampung detail informasi dari user untuk selanjutnya datanya akan ditampilkan pada file admin/detail_user.blade.php.

    • Detail Alamat

    • Sama seperti informasi user, untuk mendapatkan detail alamat Anda bisa menemukan pada controller DatauserController.php function detailUser(Request $request, $id). Yang diperlukan untuk menampilkan detail alamat adalah response key berupa latitude dan longitude. Implementasi dari penggunaan key latitude dan longitude dapat Anda temukan pada file admin/detail_user.blade.php function initialize().

                      
                          function initialize() {
                            var valLat = "{{$detail['alamat']['0']['latitude']}}";
                            var valLong = "{{$detail['alamat']['0']['longitude']}}";
                            ....
                        }
      
                        google.maps.event.addDomListener(window, "load", initialize);
                      
                      
    • Riwayat Pemesanan

    • Masih dalam controller DatauserController.php function detailUser(Request $request, $id), untuk memanggil data riwayat pemesanan menggunakan request berikut :
                      
                          $clientorder = new  \GuzzleHttp\Client(); 
                          $response = $clientorder->request("GET", ''.$api.'api/admin/orders?page=1&limit=10&sort=desc&user_id='.$id.'', 
                              ['headers' => [
                                  'x-auth-token' => ''.$token.'',
                                  'x-auth-client' => ''.$client_secret.'',
                                  'x-auth-signature' => ''.$signature.'']
                              ]); 
      
                          $data = json_decode((string) $response->getBody(), true);
                          $riwayat = $data['data'];
                      
                      

      Result data pemanggilan ke API tersebut ditampung dalam variable $riwayat, untuk kemudian ditampilkan ke dalam view admin/detail_user.blade.php.

    • Aktifkan / Non-aktifkan User

    • Untuk mengaktifkan atau menon-aktikan status user, Anda perlu memperhatikan status active user. Status active user didapatkan dari pemanggilan data API pada poin informasi user sebelumnya. Di dalam file admin/detail_user.blade.php pengecekan status active dikonsidikan seperti ini :
                      
                        @if($detail['active']==1)
                              < button class="btn btn-danger confirm" >Non Aktifkan User
                        @else
                              < button class="btn btn-primary confirm" >Aktifkan User
                        @endif
                      
                      

      Jika $detail['active']==1 maka button yang tampil adalah button 'Non Aktifkan User', begitu pula sebaliknya jika $detail['active']==0 maka button yang tampil adalah button 'Aktifkan User'. Ketika user melakukan aksi click, maka halaman tersebut akan memanggil onclik class confirm, sesuai yang didefinisikan pada jquery.

                      
                        $(document).on('click', '.confirm', function(){
                          
                          .....
      
                          $('#id').val(id);
                          $('#value').val(value);
                          $('#text-konfirmasi').html('Apakah Anda ingin '+status+' user ini ?');
                          $('#modalConfirm').modal('show');
                      });
                      
                      

Data Mitra

Pada aplikasi website, data mitra berfungsi untuk menampilkan keseluruhan data mitra baik yang berstatus aktif maupun non-aktif. Selain itu, menu data mitra juga berfungsi untuk menampilkan detail informasi mitra seperti informasi dasar, file berkas dan detail riwayat order yang telah diambil.

.
  • View Data

  • Cara membaca halaman data mitra dapat Anda temukan pada route Route::resource('/data_mitra', 'DatamitraController'). Pada DatamitraController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/data_mitra.blade.php

    .
                      
                          $.ajax({
                            url: 'loadDataMitra/'+limit+'/'+page+'/'+sort+'/'+search,
                            type: 'get',
                            dataType: 'json',
    
                            success: function(response){
                            ....
                            }
                          });
                      
                    

    Fungsi ajax di atas merupakan request untuk memanggil data mitra ke API, dengan tambahan parameter seperti limit (jumlah data yang ingin ditampilkan), page (halaman pagination), sort (urutan data), dan search (kata pencarian). Secara default di dalam data_mitra.blade.php pemanggilan data mitra, menggunakan function loadData(10,1,'desc','all'), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan, 1 merupakan parameter page yang berarti halaman default pagination adalah 1, desc merupakan parameter sort yang berarti urutan data descending, dan all merupakan parameter search dimana dalam controller DatamitraController.php function loadDataMitra(Request $request, $limit, $page, $sort ,$search), 'all' akan di-replace menjadi string kosong ''.

  • Detail Data

    Route untuk menghandle halaman detail data mitra adalah Route::get('/detail_mitra/{id}', 'DatamitraController@detailMitra'), dimana dalam controller DatamitraController.php function detailMitra(Request $request, $id) akan melakukan request ke beberapa API untuk menampilkan data informasi mitra, file berkas, dan riwayat order.

    • Informasi mitra dan file berkas

    • Informasi mitra dan file berkas dapat Anda temukan pada controller DatamitraController.php function detailMitra(Request $request, $id). Di dalam function tersebut terdapat perintah untuk melakukan pemanggilan data ke API :

                              
                                  $client = new  \GuzzleHttp\Client(); 
                                  $response = $client->request("GET", ''.$api.'api/admin/user/'.$id.'', 
                                      ['headers' => [
                                          'x-auth-token' => ''.$token.'',
                                          'x-auth-client' => ''.$client_secret.'',
                                          'x-auth-signature' => ''.$signature.'']
                                      ]); 
      
                                  $data = json_decode((string) $response->getBody(), true);
                                  $detail = $data['data'];
      
                              
                            

      Variable $detail itulah yang berfungsi untuk menampung detail informasi dari mitra dan file berkas, untuk selanjutnya datanya akan ditampilkan pada file admin/detail_mitra.blade.php.

    • Detail Alamat

    • Sama seperti poin informasi mitra, untuk mendapatkan detail alamat Anda bisa menemukan pada controller DatamitraController.php function detailMitra(Request $request, $id). Yang diperlukan untuk menampilkan detail alamat adalah response key berupa latitude dan longitude. Implementasi dari penggunaan key latitude dan longitude dapat Anda temukan pada file admin/detail_user.blade.php function initialize().
                            
                                function initialize() {
                                    var valLat = "{{$detail['alamat']['0']['latitude']}}";
                                    var valLong = "{{$detail['alamat']['0']['longitude']}}";
                                    ....
                                }
      
                                google.maps.event.addDomListener(window, "load", initialize);
                            
                          
    • Riwayat Order

    • Masih dalam controller DatamitraController.php function detailMitra(Request $request, $id), untuk memanggil data riwayat order menggunakan request berikut :

                              
                                  $clientorder = new  \GuzzleHttp\Client(); 
                                  $response = $clientorder->request("GET", ''.$api.'api/admin/orders?page=1&limit=10&sort=desc&user_id='.$id.'', 
                                      ['headers' => [
                                          'x-auth-token' => ''.$token.'',
                                          'x-auth-client' => ''.$client_secret.'',
                                          'x-auth-signature' => ''.$signature.'']
                                      ]); 
      
                                  $data = json_decode((string) $response->getBody(), true);
                                  $riwayat = $data['data'];
                              
                            

      Result data pemanggilan ke API tersebut ditampung dalam variable $riwayat, untuk kemudian ditampilkan ke dalam view admin/detail_mitra.blade.php.

    • Aktifkan / Non-aktifkan Mitra

    • Untuk mengaktifkan atau menon-aktikan status mita, Anda perlu memperhatikan nilai mitra approved. Nilai mitra approved didapatkan dari pemanggilan data API pada poin informasi mitra sebelumnya. Di dalam file admin/detail_mitra.blade.php pengecekan nilai mitra approved dikonsidikan seperti ini :
                                
                                      @if($detail['mitra_approved']==1)
                                          < button class="btn btn-danger confirm" >Non Aktifkan Mitra
                                      @else
                                          < button class="btn btn-primary confirm" >Aktifkan Mitra
                                      @endif
                                
                            

      Jika $detail['mitra_approved']==1 maka button yang tampil adalah button 'Non Aktifkan Mitra', begitu pula sebaliknya jika $detail['mitra_approved']==0 maka button yang tampil adalah button 'Aktifkan Mitra'. Ketika user melakukan aksi click, maka halaman tersebut akan memanggil onclik class confirm, sesuai yang didefinisikan pada jquery.

                            
                                $(document).on('click', '.confirm', function(){
                          
                                  .....
      
                                $('#id').val(id);
                                $('#value').val(value);
                                $('#text-konfirmasi').html('Apakah Anda ingin '+status+' user ini ?');
                                $('#modalConfirm').modal('show');
                                });
                            
                            

Data Pool

Data pool berfungsi untuk menampilkan data pool yang telah dicreate sebelumnya baik yang berstatus aktif maupun non-aktif. Selain itu pada menu ini, user atau admin dapat melakukan beberapa aksi seperti melakukan pemblokiran pool, mengirim kembali email aktivasi, mengedit data dan memberikan approval atas data yang telah dibuat.

.
  • View Data

  • Cara membaca halaman data pool dapat Anda temukan pada route Route::resource('/data_hub', 'DatahubController'). Pada DatahubController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/data_hub.blade.php

    .
                      
                          $.ajax({
                            url: 'loadDataHub/'+limit+'/'+page+'/'+order+'/'+search+'/'+active+'/'+approve,
                            type: 'get',
                            dataType: 'json',
    
                            success: function(response){
                            ....
                            }
                          });
                      
                    

    Fungsi ajax di atas merupakan request untuk memanggil data pool ke API, dengan penyertaan parameter seperti limit (jumlah data yang ingin ditampilkan), page (halaman pagination), order (urutan data), search (kata pencarian), active (status active pool) dan approve (status persetujuan pada pool). Secara default di dalam data_hub.blade.php pemanggilan data hub, menggunakan function loadData(10,1,'desc','all','all','all'), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan, 1 merupakan parameter page yang berarti halaman default pagination adalah 1, desc merupakan parameter order yang berarti urutan data descending, all pertama merupakan parameter search, all kedua merupakan parameter active, dan all ketiga merupakan parameter untuk approve dimana dalam controller DatahubController.php function loadDataHub(Request $request, $limit, $page, $order, $search, $active, $approve), 'all' akan di-replace menjadi string kosong '', yang artinya untuk parameter search, active dan approve bernilai empty alias ditampilkan semua ketika halaman pool pertama kali di-load.

  • Create Data

  • Fungsi untuk menghandle create data dihandle oleh fungsi public function insertHub(Request $request) pada controller DatahubController.php

                    
                        
                        public function insertHub(Request $request) {
            
                            $form_data = array(
                                'nama_hub'        =>  $request->nama,
                                'email'        =>  $request->email,
                                'phone'        =>  $request->telepon,
                                'penanggung_jawab'        =>  $request->pic,
                                'alamat_lengkap'        =>  $request->alamat,
                                'latitude'        =>  $request->lat,
                                'longitude'        =>  $request->long,
                                'provinsi'        =>  $request->provinsi,
                                'kota'        =>  $request->kota,
                                'kecamatan'        =>  $request->kecamatan,
                                'kelurahan'        =>  $request->kelurahan
                            );
    
                            $postdata = json_encode($form_data);
                            $token = $request->session()->get('token');
                            $client_secret = $request->session()->get('client_secret');
                            $httpMethod = "POST";
                            $body = $postdata;
                            $sign = new Signature();
                            $signature = $sign->_createSignature($httpMethod, $body);
                            $url = env('API_URL');
    
                            $curl = curl_init();
    
                            curl_setopt_array($curl, array(
                              CURLOPT_URL => ''.$url.'api/admin/register_hub',
                              CURLOPT_RETURNTRANSFER => true,
                              CURLOPT_ENCODING => '',
                              CURLOPT_MAXREDIRS => 10,
                              CURLOPT_TIMEOUT => 0,
                              CURLOPT_FOLLOWLOCATION => true,
                              CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                              CURLOPT_CUSTOMREQUEST => 'POST',
                              CURLOPT_POSTFIELDS => $postdata,
                              CURLOPT_HTTPHEADER => array(
                                'x-auth-token: '.$token.'',
                                'x-auth-client: '.$client_secret.'',
                                'x-auth-signature: '.$signature.'',
                                'Content-Type: application/json'
                              ),
                            ));
    
                            $response = curl_exec($curl);
                            $convert = json_decode($response,true);
                            $data = $convert['status'];
                            $message = $convert['message'];
                            curl_close($curl);
                            return response()->json(['status' => $data , 'message' => $message]);
    
                        }
                    
                  

    Fungsi insert di atas menggunakan method POST harus menyertakan header berupa token, client secret dan auth signature. Token dan client_secret diperoleh dari proses login yang kemudian disimpan dalam SESSION, sedangkan auth_signature merupakan isian data yang diinput oleh user, yang diproses menggunakan encode-decode oleh fungsi helper Signature. Helper signature dapat Anda ditemukan pada app/Helpers/Signature.php.


    Dari sisi view, request untuk melakukan create data dihandle oleh ajax pada file admin/add_hub.blade.php seperti berikut ini :

                    
                    $.ajax({
                        url:"insertHub",
                        method:"POST",
                        data: new FormData(this),
                        contentType: false,
                        cache:false,
                        processData: false,
                        dataType:"json",
                        beforeSend: function(){
                        $('.loader').css("visibility", "visible");
                        },
                        success:function(data)
                        {
                            .....
                        },
                    });
                    
                  
  • Update Data

  • Fungsi untuk melakukan update data pada data pool dihandle oleh fungsi function updatePool(Request $request) pada controller DatahubController.php.

                      
                      public function updatePool(Request $request) {
                        $form_data = array(
                              ....
                        );
    
                        $postdata = json_encode($form_data);
    
                        $token = $request->session()->get('token');
                        $client_secret = $request->session()->get('client_secret');
                        $httpMethod = "PUT";
                        $body = $postdata;
                        $sign = new Signature();
                        $signature = $sign->_createSignature($httpMethod, $body);
                        $url = env('API_URL');
    
                        $curl = curl_init();
    
                        curl_setopt_array($curl, array(
                          CURLOPT_URL => ''.$url.'api/admin/update_hub',
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_ENCODING => '',
                          CURLOPT_MAXREDIRS => 10,
                          CURLOPT_TIMEOUT => 0,
                          CURLOPT_FOLLOWLOCATION => true,
                          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                          CURLOPT_CUSTOMREQUEST => 'PUT',
                          CURLOPT_POSTFIELDS => $postdata,
                          CURLOPT_HTTPHEADER => array(
                            'x-auth-token: '.$token.'',
                            'x-auth-client: '.$client_secret.'',
                            'x-auth-signature: '.$signature.'',
                            'Content-Type: application/json'
                          ),
                        ));
    
                        $response = curl_exec($curl);
                        $convert = json_decode($response,true);
                        $data = $convert['status'];
                        $message = $convert['message'];
                        curl_close($curl);
                        return response()->json(['status' => $data , 'message' => $message]);       
                      }
                      
                    

    Secara umum proses update data tidak jauh berbeda dengan proses create data. Data yang telah diinput oleh user kemudian dibungkus oleh helper Signature yang kemudian dimasukkan ke dalam headers bersama dengan token dan client_secret. Yang membedakan dengan proses create data adalah method pengiriman data, dimana dalam proses update data menggunakan method PUT.

    Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax pada file admin/edit_pool.blade.php seperti berikut ini :

                      
                      $.ajax({
                        url: "../updatePool",
                        type: "PUT",
                        data: { _token: _token, _id: _id, field: field, field_1:field_1, field_2:field_2 },
                        success: function (data) {
    
                          .....
    
                        },
                      });
                      
                    
  • Approve Data

  • Approve data digunakan sebagai persetujuan atas data yang sudah dicreate sebelumnya. Dalam menu data pool, terdapat 2 (dua) approval, yaitu approval pertama dan approval kedua

    .
    • Approval Pertama

    • Approval pertama merupakan proses persetujuan data setelah adanya penambahan data baru. Ketika data pertama kali di-create maka status approvednya adalah pending, setelah data tersebut melewati proses approved pertama maka status approvednya akan berubah menjadi approved. Letak file untuk melakukan approval terdapat pada admin/edit_pool.blade.php. Proses approval pertama dapat Anda temukan pada route Route::put('/approvePool', 'DatahubController@approvePool'). Berdasarkan route tersebut, alur kerja dari approval pertama terdapat pada controller DatahubController.php function approvePool(Request $request) seperti berikut :

                          
                              public function approvePool(Request $request) {
      
                                $form_data = array(
                                    .....
                                );
      
                                $postdata = json_encode($form_data);
      
                                $token = $request->session()->get('token');
                                $client_secret = $request->session()->get('client_secret');
                                $httpMethod = "PUT";
                                $body = $postdata;
                                $sign = new Signature();
                                $signature = $sign->_createSignature($httpMethod, $body);
                                $url = env('API_URL');
      
                                $curl = curl_init();
      
                                curl_setopt_array($curl, array(
                                  CURLOPT_URL => ''.$url.'api/admin/approve_hub',
                                  CURLOPT_RETURNTRANSFER => true,
                                  CURLOPT_ENCODING => '',
                                  CURLOPT_MAXREDIRS => 10,
                                  CURLOPT_TIMEOUT => 0,
                                  CURLOPT_FOLLOWLOCATION => true,
                                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                  CURLOPT_CUSTOMREQUEST => 'PUT',
                                  CURLOPT_POSTFIELDS => $postdata,
                                  CURLOPT_HTTPHEADER => array(
                                    'x-auth-token: '.$token.'',
                                    'x-auth-client: '.$client_secret.'',
                                    'x-auth-signature: '.$signature.'',
                                    'Content-Type: application/json'
                                  ),
                                ));
      
                                $response = curl_exec($curl);
                                $convert = json_decode($response,true);
                                $data = $convert['status'];
                                $message = $convert['message'];
                                curl_close($curl);
                                return response()->json(['status' => $data , 'message' => $message]);
                            }
      
                          
                        

      Pada function di atas, data yang dikirim dari user akan dikirim dengan method PUT ke alamat API http://nama_domain/api/admin/approve_hub. Berdasarkan request tersebut maka API akan mengembalikan response berupa key status dan key message yang selanjutnya response tersebut akan diolah oleh view admin/edit_pool.blade.php.

    • Approval Kedua

    • Setelah melewati proses approved pertama, maka flow selanjutnya adalah approval kedua. Approval pertama akan mengubah status approval menjadi approved, sedangkan approval kedua akan mengubah status approval menjadi final. Letak file untuk melakukan approval terdapat pada admin/edit_pool.blade.php. Proses approval kedua dapat Anda temukan pada route Route::put('/approvefinalPool', 'DatahubController@approvefinalPool'). Berdasarkan route tersebut, alur kerja dari approval kedua terdapat pada controller DatahubController.php function approvefinalPool(Request $request) seperti berikut :

                          
                              public function approvefinalPool(Request $request) {
      
                                $form_data = array(
                                    .....
                                );
      
                                $postdata = json_encode($form_data);
      
                                $token = $request->session()->get('token');
                                $client_secret = $request->session()->get('client_secret');
                                $httpMethod = "PUT";
                                $body = $postdata;
                                $sign = new Signature();
                                $signature = $sign->_createSignature($httpMethod, $body);
                                $url = env('API_URL');
      
                                $curl = curl_init();
      
                                curl_setopt_array($curl, array(
                                  CURLOPT_URL => ''.$url.'api/admin/approve_hub_final',
                                  CURLOPT_RETURNTRANSFER => true,
                                  CURLOPT_ENCODING => '',
                                  CURLOPT_MAXREDIRS => 10,
                                  CURLOPT_TIMEOUT => 0,
                                  CURLOPT_FOLLOWLOCATION => true,
                                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                  CURLOPT_CUSTOMREQUEST => 'PUT',
                                  CURLOPT_POSTFIELDS => $postdata,
                                  CURLOPT_HTTPHEADER => array(
                                    'x-auth-token: '.$token.'',
                                    'x-auth-client: '.$client_secret.'',
                                    'x-auth-signature: '.$signature.'',
                                    'Content-Type: application/json'
                                  ),
                                ));
      
                                $response = curl_exec($curl);
                                $convert = json_decode($response,true);
                                $data = $convert['status'];
                                $message = $convert['message'];
                                curl_close($curl);
                                return response()->json(['status' => $data , 'message' => $message]);
                            }
      
                          
                        

      Pada function di atas, data yang dikirim dari user akan dikirim dengan method PUT ke alamat API http://nama_domain/api/admin/approve_hub_final. Berdasarkan request tersebut maka API akan mengembalikan response berupa key status dan key message yang selanjutnya response tersebut akan diolah oleh view admin/edit_pool.blade.php.

  • Blokir Pool

  • Blokir pool berfungsi untuk menon-aktifkan status aktif dari pool tersebut, sehingga pool tidak bisa melakukan aktivitas login kembali. Perintah untuk menjalankan blokir terletak pada view admin/data_hub.blade.php, berupa icon 'fa fa-ban' yang disimpan dalam variable javascript var banned = "< a href='#' class='table-action banned' data-toggle='tooltip' id="+response['data'][i].id+" title='Blokir Hub'>Banned< /a>";. Jika icon tersebut diklik, maka akan menjalankan event onClick() dengan menggunakan selector class banned untuk memanggil popup konfirmasi. Jika popup konfirmasi tersebut disubmit, maka data akan dikirim menuju route changeUser seperti berikut ini :

                        
    
                            $.ajax({
                              url: "changeUser",
                              type: "PUT",
                              data: { _token: _token, id: id, value:value },
                              success: function (data) {
                                  
                                  .....
                                 
                              },
                          });
    
                        
                  

    Setelah itu, maka sistem akan memproses request tersebut menuju route Route::put('/changeUser', 'DatauserController@changeUser'). Dalam controller DatauserController.php function changeUser, form data akan diolah ke dalam format Signature bersama dengan token dan client_secret untuk selanjutnya dikirim menuju API http://nama_domain/api/admin/user_activate.

  • Resend Aktivasi

  • Resend Aktivasi digunakan untuk mengirimkan kembali email aktivasi kepada pool. Aksi ini muncul apabila sudah melewati approval kedua. Secara otomatis ketika user aplikasi melakukan klik approval kedua atau approval final, sistem akan mengirimkan email aktivasi kepada pool. Namun jika ada kendala seperti email lama terkirim, admin juga dapat melakukan pengiriman kembali email aktivasi. Perintah untuk menjalankan resend aktivasi terletak pada view admin/data_hub.blade.php, berupa icon 'fa fa-paper-plane' yang disimpan dalam variable javascript var resend = "< a href='#' class='table-action resend' id="+response['data'][i].id+" data-toggle='tooltip' title='Resend Aktivasi'>Icon";. Jika icon tersebut diklik, maka akan menjalankan event onClick() dengan menggunakan selector class resend untuk memanggil popup konfirmasi. Jika popup konfirmasi tersebut disubmit, maka data akan dikirim menuju route resendActivation seperti berikut ini :

                        
    
                            $.ajax({
                              url: "resendActivation",
                              type: "POST",
                              data: { _token: _token, id: id, value:value },
                              success: function (data) {
                                  
                                  .....
                                 
                              },
                          });
    
                        
                  

    Setelah itu, maka sistem akan memproses request tersebut menuju route Route::post('/resendActivation', 'DatahubController@resendActivation'). Dalam controller DatahubController.php function resendActivation, form data akan diolah ke dalam format Signature bersama dengan token dan client_secret untuk selanjutnya dikirim menuju API http://nama_domain/api/admin/resend_activation_hub.


Data Buyer

Menu data buyer merupakan menu yang digunakan untuk menampilkan data buyer atau data pembeli minyak jelantah dari pool. Dalam menu ini, terdapat beberapa kategori yang dipisahkan berdasarkan status dalam bentuk panel tab, yang meliputi inactive, approved dan active

.
  • Inactive

  • Data buyer inactive merupakan data buyer yang statusnya belum aktif, data ini berasal dari proses create data baru. Secara default ketika user membuat data baru maka status aktifnya adalah inactive.

    • View Data Buyer Inactive

    • Cara membaca halaman data buyer inactive dapat Anda temukan pada route Route::resource('/data_buyer', 'DatabuyerController'). Pada DatabuyerController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/data_buyer.blade.php

      .
                            
                                $.ajax({
                                  url: 'loadDataBuyer/'+limit+'/'+page,
                                  type: 'get',
                                  dataType: 'json',
      
                                  success: function(response){
                                  ....
                                  }
                                });
                            
                          

      Fungsi ajax di atas merupakan request untuk memanggil data buyer inactive ke API, dengan penyertaan parameter seperti limit (jumlah data yang ingin ditampilkan), dan page (halaman pagination). Secara default di dalam data_buyer.blade.php pemanggilan data buyer inactive, menggunakan function loadData(10,1), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan dan 1 merupakan parameter page yang berarti halaman default pagination adalah 1. Function pada DatabuyerController.php yang menangani proses request tampilan data adalah function loadDataBuyer(Request $request, $limit, $page).

    • Create Data Buyer Inactive

    • Fungsi untuk menghandle create data dihandle oleh fungsi public function insertBuyer(Request $request) pada controller DatabuyerController.php.

                            
                                
                                public function insertinsertBuyer(Request $request) {
                        
                                    $form_data = array(
                                        ...
                                    );
      
                                    $postdata = json_encode($form_data);
      
                                    $token = $request->session()->get('token');
                                    $client_secret = $request->session()->get('client_secret');
                                    $httpMethod = "POST";
                                    $body = $postdata;
                                    $sign = new Signature();
                                    $signature = $sign->_createSignature($httpMethod, $body);
                                    $url = env('API_URL');
      
                                    $curl = curl_init();
      
                                    curl_setopt_array($curl, array(
                                      CURLOPT_URL => ''.$url.'api/admin/buyer_add',
                                      CURLOPT_RETURNTRANSFER => true,
                                      CURLOPT_ENCODING => '',
                                      CURLOPT_MAXREDIRS => 10,
                                      CURLOPT_TIMEOUT => 0,
                                      CURLOPT_FOLLOWLOCATION => true,
                                      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                      CURLOPT_CUSTOMREQUEST => 'POST',
                                      CURLOPT_POSTFIELDS => $postdata,
                                      CURLOPT_HTTPHEADER => array(
                                        'x-auth-token: '.$token.'',
                                        'x-auth-client: '.$client_secret.'',
                                        'x-auth-signature: '.$signature.'',
                                        'Content-Type: application/json'
                                      ),
                                    ));
      
                                    $response = curl_exec($curl);
                                    $convert = json_decode($response,true);
                                    $data = $convert['status'];
                                    $message = $convert['message'];
                                    curl_close($curl);
                                    return response()->json(['status' => $data , 'message' => $message]);
                                }
                              
                            

      Dari sisi view, request untuk melakukan create data dihandle oleh ajax pada file admin/add_buyer.blade.php seperti berikut ini :

                              
                              $.ajax({
                                  url:"insertBuyer",
                                  method:"POST",
                                  data: new FormData(this),
                                  contentType: false,
                                  cache:false,
                                  processData: false,
                                  dataType:"json",
                                  beforeSend: function(){
                                  $('.loader').css("visibility", "visible");
                                  },
                                  success:function(data)
                                  {
                                      .....
                                  },
                              });
                              
                            
    • Update Data Buyer Inactive

    • Fungsi untuk melakukan update data pada data buyer inactive dihandle oleh fungsi function updateBuyer(Request $request) pada controller DatabuyerController.php.

                            
                            public function updateBuyer(Request $request) {
                              $form_data = array(
                                    ....
                              );
      
                              $postdata = json_encode($form_data);
      
                              $token = $request->session()->get('token');
                              $client_secret = $request->session()->get('client_secret');
                              $httpMethod = "PUT";
                              $body = $postdata;
                              $sign = new Signature();
                              $signature = $sign->_createSignature($httpMethod, $body);
                              $url = env('API_URL');
      
                              $curl = curl_init();
      
                              curl_setopt_array($curl, array(
                                CURLOPT_URL => ''.$url.'api/admin/buyer_update',
                                CURLOPT_RETURNTRANSFER => true,
                                CURLOPT_ENCODING => '',
                                CURLOPT_MAXREDIRS => 10,
                                CURLOPT_TIMEOUT => 0,
                                CURLOPT_FOLLOWLOCATION => true,
                                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                CURLOPT_CUSTOMREQUEST => 'PUT',
                                CURLOPT_POSTFIELDS => $postdata,
                                CURLOPT_HTTPHEADER => array(
                                  'x-auth-token: '.$token.'',
                                  'x-auth-client: '.$client_secret.'',
                                  'x-auth-signature: '.$signature.'',
                                  'Content-Type: application/json'
                                ),
                              ));
      
                              $response = curl_exec($curl);
                              $convert = json_decode($response,true);
                              $data = $convert['status'];
                              $message = $convert['message'];
                              curl_close($curl);
                              return response()->json(['status' => $data , 'message' => $message]);       
                            }
                            
                          

      Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax pada file admin/edit_buyer.blade.php seperti berikut ini :

                            
                            $.ajax({
                              url: "../updateBuyer",
                              type: "PUT",
                              data: { _token: _token, _id: _id, field: field, field_1:field_1, field_2:field_2 },
                              success: function (data) {
      
                                .....
      
                              },
                            });
                            
                          
    • Approval Data Buyer Inactive

    • Approval data buyer inactive merupakan proses persetujuan data tahap pertama setelah adanya penambahan data baru. Ketika data pertama kali di-create maka statusnya adalah inactive, setelah data tersebut melewati proses approval pertama maka statusnya akan berubah menjadi approved. Letak file untuk melakukan approval terdapat pada admin/edit_buyer.blade.php pada bagian < a href='javascript:void(0)' class="btn btn-warning approve">Approve< /a>. Proses approval pertama dapat Anda temukan pada route Route::put('/approveBuyer', 'DatabuyerController@approveBuyer'). Berdasarkan route tersebut, alur kerja dari approval pertama terdapat pada controller DatabuyerController.php function approveBuyer(Request $request) seperti berikut :

                            
                            public function approveBuyer(Request $request) {
      
                                $form_data = array(
                                    ....
                                );
      
                                $postdata = json_encode($form_data);
      
                                $token = $request->session()->get('token');
                                $client_secret = $request->session()->get('client_secret');
                                $httpMethod = "PUT";
                                $body = $postdata;
                                $sign = new Signature();
                                $signature = $sign->_createSignature($httpMethod, $body);
                                $url = env('API_URL');
      
                                $curl = curl_init();
      
                                curl_setopt_array($curl, array(
                                  CURLOPT_URL => ''.$url.'api/admin/buyer_approved',
                                  CURLOPT_RETURNTRANSFER => true,
                                  CURLOPT_ENCODING => '',
                                  CURLOPT_MAXREDIRS => 10,
                                  CURLOPT_TIMEOUT => 0,
                                  CURLOPT_FOLLOWLOCATION => true,
                                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                  CURLOPT_CUSTOMREQUEST => 'PUT',
                                  CURLOPT_POSTFIELDS => $postdata,
                                  CURLOPT_HTTPHEADER => array(
                                    'x-auth-token: '.$token.'',
                                    'x-auth-client: '.$client_secret.'',
                                    'x-auth-signature: '.$signature.'',
                                    'Content-Type: application/json'
                                  ),
                                ));
      
                                $response = curl_exec($curl);
                                $convert = json_decode($response,true);
                                $data = $convert['status'];
                                $message = $convert['message'];
                                curl_close($curl);
                                return response()->json(['status' => $data , 'message' => $message]);       
                            }
                            
                          

  • Approved

  • Data buyer approved merupakan data buyer yang sudah mendapatkan approval pertama. Meskipun sudah mendapatkan approval pertama, namun akun buyer tersebut belum bisa melakukan login ke dalam sistem. Dalam panel tab approved, terdapat beberapa aksi yang dapat dilakukan oleh seperti berikut ini :

    • View Data Buyer Approved

    • Cara membaca halaman data buyer approved dapat Anda temukan pada route Route::resource('/data_buyer_approved', 'DatabuyerapprovedController'). Pada DatabuyerapprovedController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/data_buyer_approved.blade.php

      .
                            
                                $.ajax({
                                  url: 'loadDataBuyerApproved/'+limit+'/'+page,
                                  type: 'get',
                                  dataType: 'json',
      
                                  success: function(response){
                                  ....
                                  }
                                });
                            
                          

      Fungsi ajax di atas merupakan request untuk memanggil data buyer approved ke API, dengan penyertaan parameter seperti limit (jumlah data yang ingin ditampilkan), dan page (halaman pagination). Secara default di dalam data_buyer_approved.blade.php pemanggilan data buyer approved, menggunakan function loadData(10,1), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan dan 1 merupakan parameter page yang berarti halaman default pagination adalah 1. Function pada DatabuyerapprovedController.php yang menangani proses request tampilan data adalah function loadDataBuyer(Request $request, $limit, $page).

    • Update Data Buyer Approved

    • Fungsi untuk melakukan update data pada data buyer approved dihandle oleh fungsi function updateBuyer(Request $request) pada controller DatahubController.php.

                            
                            public function updateBuyer(Request $request) {
      
                              $form_data = array(
                                  'buyer_id'        =>  $request->id,
                                  'nama'        =>  $request->nama,
                                  'kode'        =>  $request->kode,
                                  'nama_pic'        =>  $request->nama_pic,
                                  'phone_pic'        =>  $request->phone_pic,
                                  'alamat'        =>  $request->alamat,
                                  'latitude'        =>  $request->lat,
                                  'longitude'        =>  $request->long,
                                  'provinsi'        =>  $request->provinsi,
                                  'kota'        =>  $request->kota,
                                  'kecamatan'        =>  $request->kecamatan,
                                  'kelurahan'        =>  $request->kelurahan,
                                  'kode_pos'        =>  $request->kode_pos,
                                  'status'        =>  $request->status,
                                  'email'        =>  $request->email,
                              );
      
                              $postdata = json_encode($form_data);
      
                              $token = $request->session()->get('token');
                              $client_secret = $request->session()->get('client_secret');
                              $httpMethod = "PUT";
                              $body = $postdata;
                              $sign = new Signature();
                              $signature = $sign->_createSignature($httpMethod, $body);
                              $url = env('API_URL');
      
                              $curl = curl_init();
      
                              curl_setopt_array($curl, array(
                                CURLOPT_URL => ''.$url.'api/admin/buyer_update',
                                CURLOPT_RETURNTRANSFER => true,
                                CURLOPT_ENCODING => '',
                                CURLOPT_MAXREDIRS => 10,
                                CURLOPT_TIMEOUT => 0,
                                CURLOPT_FOLLOWLOCATION => true,
                                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                CURLOPT_CUSTOMREQUEST => 'PUT',
                                CURLOPT_POSTFIELDS => $postdata,
                                CURLOPT_HTTPHEADER => array(
                                  'x-auth-token: '.$token.'',
                                  'x-auth-client: '.$client_secret.'',
                                  'x-auth-signature: '.$signature.'',
                                  'Content-Type: application/json'
                                ),
                              ));
      
                              $response = curl_exec($curl);
                              $convert = json_decode($response,true);
                              $data = $convert['status'];
                              $message = $convert['message'];
                              curl_close($curl);
                              return response()->json(['status' => $data , 'message' => $message]);       
                          }
                            
                          

      Secara umum proses update data tidak jauh berbeda dengan proses create data. Data yang telah diinput oleh user kemudian dibungkus oleh helper Signature yang kemudian dimasukkan ke dalam headers bersama dengan token dan client_secret. Yang membedakan dengan proses create data adalah method pengiriman data, dimana dalam proses update data menggunakan method PUT.

      Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax pada file admin/edit_buyer_approved.blade.php seperti berikut ini :

                            
                            $.ajax({
                              url: "../updateBuyer",
                              type: "PUT",
                              data: { _token: _token, _id: _id, field: field, field_1:field_1, field_2:field_2 },
                              success: function (data) {
      
                                .....
      
                              },
                            });
                            
                          
    • Approval Data Buyer Approved (Approval Final)

    • Approval yang terdapat pada menu data buyer approved merupakan approval tahap akhir, dimana ketika user sudah melakukan aksi pada approval final, maka akun buyer akan dinyatakan aktif. Letak file approval final berada pada admin/edit_buyer_approved.php pada bagian < a href='javascript:void(0)' class="btn btn-warning approve">Approve< /a>. Sedangkan untuk routenya dapat Anda temukan pada Route::put('/approvefinalBuyer', 'DatabuyerapprovedController@approvefinalBuyer'). Berdasarkan route tersebut, alur kerja dari approval final terdapat pada controller DatabuyerapprovedController.php function approvefinalBuyer(Request $request) seperti berikut :

                            
                            public function approvefinalBuyer(Request $request) {
      
                                $form_data = array(
                                    ....
                                );
      
                                $postdata = json_encode($form_data);
      
                                $token = $request->session()->get('token');
                                $client_secret = $request->session()->get('client_secret');
                                $httpMethod = "PUT";
                                $body = $postdata;
                                $sign = new Signature();
                                $signature = $sign->_createSignature($httpMethod, $body);
                                $url = env('API_URL');
      
                                $curl = curl_init();
      
                                curl_setopt_array($curl, array(
                                  CURLOPT_URL => ''.$url.'api/admin/buyer_approved_final',
                                  CURLOPT_RETURNTRANSFER => true,
                                  CURLOPT_ENCODING => '',
                                  CURLOPT_MAXREDIRS => 10,
                                  CURLOPT_TIMEOUT => 0,
                                  CURLOPT_FOLLOWLOCATION => true,
                                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                  CURLOPT_CUSTOMREQUEST => 'PUT',
                                  CURLOPT_POSTFIELDS => $postdata,
                                  CURLOPT_HTTPHEADER => array(
                                    'x-auth-token: '.$token.'',
                                    'x-auth-client: '.$client_secret.'',
                                    'x-auth-signature: '.$signature.'',
                                    'Content-Type: application/json'
                                  ),
                                ));
      
                                $response = curl_exec($curl);
                                $convert = json_decode($response,true);
                                $data = $convert['status'];
                                $message = $convert['message'];
                                curl_close($curl);
                                return response()->json(['status' => $data , 'message' => $message]);       
                            }
                            
                          

  • Active

  • Panel tab data buyer active merupakan kategori data buyer yang statusnya sudah aktif setelah mendapatkan approval kedua. Dalam panel tab ini, hanya ada 2 (dua) jenis aksi yaitu view data dan update data.

    • View Data Buyer Active

    • Cara membaca halaman data buyer active dapat Anda temukan pada route Route::resource('/data_buyer_active', 'DatabuyeractiveController'). Pada DatabuyeractiveController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/data_buyer_active.blade.php

      .
                            
                                $.ajax({
                                  url: 'loadDataBuyerActive/'+limit+'/'+page,
                                  type: 'get',
                                  dataType: 'json',
      
                                  success: function(response){
                                  ....
                                  }
                                });
                            
                          

      Fungsi ajax di atas merupakan request untuk memanggil data buyer active ke API, dengan penyertaan parameter seperti limit (jumlah data yang ingin ditampilkan), dan page (halaman pagination). Secara default di dalam data_buyer_active.blade.php pemanggilan data buyer active, menggunakan function loadData(10,1), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan dan 1 merupakan parameter page yang berarti halaman default pagination adalah 1. Function pada DatabuyeractiveController.php yang menangani proses request tampilan data adalah function loadDataBuyer(Request $request, $limit, $page).

    • Update Data Buyer Active

    • Fungsi untuk melakukan update data pada data buyer active dihandle oleh fungsi function updateBuyer(Request $request) pada controller DatabuyeractiveController.php.

                            
                            public function updateBuyer(Request $request) {
                              $form_data = array(
                                    ....
                              );
      
                              $postdata = json_encode($form_data);
      
                              $token = $request->session()->get('token');
                              $client_secret = $request->session()->get('client_secret');
                              $httpMethod = "PUT";
                              $body = $postdata;
                              $sign = new Signature();
                              $signature = $sign->_createSignature($httpMethod, $body);
                              $url = env('API_URL');
      
                              $curl = curl_init();
      
                              curl_setopt_array($curl, array(
                                CURLOPT_URL => ''.$url.'api/admin/buyer_update',
                                CURLOPT_RETURNTRANSFER => true,
                                CURLOPT_ENCODING => '',
                                CURLOPT_MAXREDIRS => 10,
                                CURLOPT_TIMEOUT => 0,
                                CURLOPT_FOLLOWLOCATION => true,
                                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                CURLOPT_CUSTOMREQUEST => 'PUT',
                                CURLOPT_POSTFIELDS => $postdata,
                                CURLOPT_HTTPHEADER => array(
                                  'x-auth-token: '.$token.'',
                                  'x-auth-client: '.$client_secret.'',
                                  'x-auth-signature: '.$signature.'',
                                  'Content-Type: application/json'
                                ),
                              ));
      
                              $response = curl_exec($curl);
                              $convert = json_decode($response,true);
                              $data = $convert['status'];
                              $message = $convert['message'];
                              curl_close($curl);
                              return response()->json(['status' => $data , 'message' => $message]);       
                            }
                            
                          

      Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax pada file admin/edit_buyer_active.blade.php seperti berikut ini :

                            
                            $.ajax({
                              url: "../updateBuyer",
                              type: "PUT",
                              data: { _token: _token, _id: _id, field: field, field_1:field_1, field_2:field_2 },
                              success: function (data) {
      
                                .....
      
                              },
                            });
                            
                          


Data Harga

Data harga terdiri dari 3 (tiga) panel tab, yaitu temporary, active dan history. Penjelasan dari masing-masing panel tab adalah sebagai berikut :

.
  • Temporary

  • Data harga temporary adalah daftar harga yang bersifat sementara. Setelah menjalankan create data, status dari harga tersebut belum aktif. Aksi yang terdapat pada panel tab temporary adalah create data, update data dan approve data (approve pertama).
    • Create Data

    • Fungsi untuk menghandle create data dihandle oleh fungsi public function insertHarga(Request $request) pada controller DatahargaController.php

                        
                            
                            public function insertHarga(Request $request) {
              
                                $form_data = array(
                                    ...
                                );
      
                                $postdata = json_encode($form_data);
      
                                $token = $request->session()->get('token');
                                $client_secret = $request->session()->get('client_secret');
                                $httpMethod = "POST";
                                $body = $postdata;
                                $sign = new Signature();
                                $signature = $sign->_createSignature($httpMethod, $body);
                                $url = env('API_URL');
      
                                $curl = curl_init();
      
                                curl_setopt_array($curl, array(
                                  CURLOPT_URL => ''.$url.'api/admin/price_category_add',
                                  CURLOPT_RETURNTRANSFER => true,
                                  CURLOPT_ENCODING => '',
                                  CURLOPT_MAXREDIRS => 10,
                                  CURLOPT_TIMEOUT => 0,
                                  CURLOPT_FOLLOWLOCATION => true,
                                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                  CURLOPT_CUSTOMREQUEST => 'POST',
                                  CURLOPT_POSTFIELDS => $postdata,
                                  CURLOPT_HTTPHEADER => array(
                                    'x-auth-token: '.$token.'',
                                    'x-auth-client: '.$client_secret.'',
                                    'x-auth-signature: '.$signature.'',
                                    'Content-Type: application/json'
                                  ),
                                ));
      
                                $response = curl_exec($curl);
                                $convert = json_decode($response,true);
                                $data = $convert['status'];
                                $message = $convert['message'];
                                curl_close($curl);
                                return response()->json(['status' => $data , 'message' => $message]);
      
                            }
                            
                          
                        

      Fungsi insert di atas menggunakan method POST harus menyertakan header berupa token, client secret dan auth signature. Token dan client_secret diperoleh dari proses login yang kemudian disimpan dalam SESSION, sedangkan auth_signature merupakan isian data yang diinput oleh user, yang diproses menggunakan encode-decode oleh fungsi helper Signature. Helper signature dapat Anda ditemukan pada app/Helpers/Signature.php.


      Dari sisi view, request untuk melakukan create data dihandle oleh ajax pada file admin/add_harga.blade.php seperti berikut ini :

                          
                          $.ajax({
                              url:"insertHarga",
                              method:"POST",
                              data: new FormData(this),
                              contentType: false,
                              cache:false,
                              processData: false,
                              dataType:"json",
                              beforeSend: function(){
                              $('.loader').css("visibility", "visible");
                              },
                              success:function(data)
                              {
                                  .....
                              },
                          });
                          
                        
    • Update Data

    • Fungsi untuk melakukan update data pada data harga temporary dihandle oleh fungsi function updateHarga(Request $request) pada controller DatahargaController.php.

                            
                            public function updateHarga(Request $request) {
      
                              $form_data = array(
                                  ...
                              );
      
                              $postdata = json_encode($form_data);
      
                              $token = $request->session()->get('token');
                              $client_secret = $request->session()->get('client_secret');
                              $httpMethod = "PUT";
                              $body = $postdata;
                              $sign = new Signature();
                              $signature = $sign->_createSignature($httpMethod, $body);
                              $url = env('API_URL');
      
                              $curl = curl_init();
      
                              curl_setopt_array($curl, array(
                                CURLOPT_URL => ''.$url.'api/admin/price_category_update',
                                CURLOPT_RETURNTRANSFER => true,
                                CURLOPT_ENCODING => '',
                                CURLOPT_MAXREDIRS => 10,
                                CURLOPT_TIMEOUT => 0,
                                CURLOPT_FOLLOWLOCATION => true,
                                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                CURLOPT_CUSTOMREQUEST => 'PUT',
                                CURLOPT_POSTFIELDS => $postdata,
                                CURLOPT_HTTPHEADER => array(
                                  'x-auth-token: '.$token.'',
                                  'x-auth-client: '.$client_secret.'',
                                  'x-auth-signature: '.$signature.'',
                                  'Content-Type: application/json'
                                ),
                              ));
      
                              $response = curl_exec($curl);
                              $convert = json_decode($response,true);
                              $data = $convert['status'];
                              $message = $convert['message'];
                              curl_close($curl);
                              return response()->json(['status' => $data , 'message' => $message]);       
                          }
                            
                          

      Secara umum proses update data tidak jauh berbeda dengan proses create data. Data yang telah diinput oleh user kemudian dibungkus oleh helper Signature yang kemudian dimasukkan ke dalam headers bersama dengan token dan client_secret. Yang membedakan dengan proses create data adalah method pengiriman data, dimana dalam proses update data menggunakan method PUT.

      Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax pada file admin/edit_harga.blade.php seperti berikut ini :

                            
                            $.ajax({
                              url: "../updateHarga",
                              type: "PUT",
                              data: { _token: _token, _id: _id, field: field, field_1:field_1, field_2:field_2 },
                              success: function (data) {
      
                                .....
      
                              },
                            });
                            
                          
    • Approve Data (Approve Pertama)

    • Approval pertama merupakan proses persetujuan data setelah adanya penambahan data baru. Ketika data pertama kali di-create maka status approvednya adalah pending, setelah data tersebut melewati proses approved pertama maka status approvednya akan berubah menjadi active. Letak file untuk melakukan approval terdapat pada admin/edit_harga.blade.php. Proses approval pertama dapat Anda temukan pada route Route::put('/approvePool', 'DatahargaController@approveHarga'). Berdasarkan route tersebut, alur kerja dari approval pertama terdapat pada controller DatahargaController.php function approveHarga(Request $request) seperti berikut :

                          
                              public function approvePool(Request $request) {
      
                                $form_data = array(
                                    .....
                                );
      
                                $postdata = json_encode($form_data);
      
                                $token = $request->session()->get('token');
                                $client_secret = $request->session()->get('client_secret');
                                $httpMethod = "POST";
                                $body = $postdata;
                                $sign = new Signature();
                                $signature = $sign->_createSignature($httpMethod, $body);
                                $url = env('API_URL');
      
                                $curl = curl_init();
      
                                curl_setopt_array($curl, array(
                                  CURLOPT_URL => ''.$url.'api/admin/price_category_approve',
                                  CURLOPT_RETURNTRANSFER => true,
                                  CURLOPT_ENCODING => '',
                                  CURLOPT_MAXREDIRS => 10,
                                  CURLOPT_TIMEOUT => 0,
                                  CURLOPT_FOLLOWLOCATION => true,
                                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                  CURLOPT_CUSTOMREQUEST => 'PUT',
                                  CURLOPT_POSTFIELDS => $postdata,
                                  CURLOPT_HTTPHEADER => array(
                                    'x-auth-token: '.$token.'',
                                    'x-auth-client: '.$client_secret.'',
                                    'x-auth-signature: '.$signature.'',
                                    'Content-Type: application/json'
                                  ),
                                ));
      
                                $response = curl_exec($curl);
                                $convert = json_decode($response,true);
                                $data = $convert['status'];
                                $message = $convert['message'];
                                curl_close($curl);
                                return response()->json(['status' => $data , 'message' => $message]);
                            }
      
                          
                        

      Pada function di atas, data yang dikirim dari user akan dikirim dengan method POST ke endpoint API http://nama_domain/api/admin/price_category_approve.. Berdasarkan request tersebut maka API akan mengembalikan response berupa key status dan key message yang selanjutnya response tersebut akan diolah oleh view admin/edit_harga.blade.php.

  • Active
  • History

Data Order

Data order merupakan kumpulan data dari pemesanan yang dilakukan oleh user apps melalui aplikasi mobile. Dalam menu data order terdapat beberapa status pemesanan seperti completed, reject, cancel, order pickup dan sebagainya. Nilai dari masing-masing status mengambil dari reponse yang diberikan oleh API. Dalam menu ini terdapat 2 (jenis) aksi yaitu view data dan detail data.

  • View Data

  • Cara membaca halaman data order dapat Anda temukan pada route Route::resource('/data_pesanan', 'DatapesananController'). Pada DatapesananController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/data_pesanan.blade.php

    .
                      
                          $.ajax({
                            url: 'loadDataPesanan/'+limit+'/'+page+'/'+search,
                            type: 'get',
                            dataType: 'json',
    
                            success: function(response){
                            ....
                            }
                          });
                      
                    

    Fungsi ajax di atas merupakan request untuk memanggil data order ke API, dengan penyertaan parameter seperti limit (jumlah data yang ingin ditampilkan), page (halaman pagination) dan search (kata pencarian). Secara default di dalam admin/data_pesanan.blade.php pemanggilan data order, menggunakan function loadData(10,1,'all'), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan, 1 merupakan parameter page yang berarti halaman default pagination adalah 1 dan all merupakan parameter search dimana dalam controller DatapesananController.php function loadDataPesanan(Request $request, $limit, $page, $search), 'all' akan di-replace menjadi string kosong '', yang artinya untuk parameter search bernilai empty alias ditampilkan semua ketika halaman order pertama kali di-load.

  • Detail Data

  • Detail data order dapat Anda temukan pada controller DatapesananController.php function detailPesanan(Request $request, $id). Di dalam function tersebut terdapat syntax untuk melakukan pemanggilan data ke API menggunakan Guzzle:

                      
                          $client = new  \GuzzleHttp\Client(); 
                          $response = $client->request("GET", ''.$api.'api/admin/order/'.$id.'',  
                              ['headers' => [
                                  'x-auth-token' => ''.$token.'',
                                  'x-auth-client' => ''.$client_secret.'',
                                  'x-auth-signature' => ''.$signature.'']
                              ]); 
    
                          $data = json_decode((string) $response->getBody(), true);
                          $detail = $data['data'];
    
                      
                    

    Variable $detail itulah yang berfungsi untuk menampung detail order, untuk selanjutnya data tersebut akan diolah atau ditampilkan pada file admin/detail_pesanan.blade.php.


Delivery Order

Menu delivery order merupakan menu yang digunakan untuk melakukan pencatatan barang keluar dari pool ke buyer. Langkah pertama, admin akan membuat pencatatan barang keluar / delivery order, kemudian data tersebut akan di approve oleh pic, setelah mendapat approval data akan muncul di user pool. Tugas pool adalah melakukan konfirmasi terhadap data yang masuk , setelah pool melakukan konfirmasi maka data dinyatakan selesai / completed. Di tampilan menu delivery order admin, terdapat panel tab sebanyak 4 (empat) jenis dengan status yang berbeda, yaitu pending, approved, progress dan completed.

  • Pending

    Panel tab menu pending delivery order menampilkan data delivery order dengan status pending. Dalam panel tab ini, ada 4 (empat) aksi yang dapat dilakukan yaitu sebagai berikut :

    • View Data Delivery Order Pending

    • Cara membaca halaman data delivery order panel tab pending dapat Anda temukan pada route Route::get('/barang_keluar', 'KeluarbarangController@cekData'). Pada KeluarbarangController.php, function cekData(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/keluar_barang.blade.php

      .
                            
                                $.ajax({
                                  url: 'loadDataBarang/'+limit+'/'+page+'/'+search,
                                  type: 'get',
                                  dataType: 'json',
      
                                  success: function(response){
                                  ....
                                  }
                                });
                            
                          

      Fungsi ajax di atas merupakan request untuk memanggil data delivery order ke API, dengan penyertaan parameter seperti limit (jumlah data yang ingin ditampilkan), page (halaman pagination) dan search (kata pencarian). Secara default di dalam keluar_barang.blade.php pemanggilan data delivery order pending, menggunakan function loadData(10,1,'all'), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan, 1 merupakan parameter page yang berarti halaman default pagination adalah 1 dan 'all' merupakan parameter search dimana dalam controller KeluarbarangController.php function loadDataBarang(Request $request, $limit, $page, $search), 'all' akan di-replace menjadi string kosong '', yang artinya untuk parameter search bernilai empty alias ditampilkan semua ketika halaman delivery order panel tab pending pertama kali di-load.

    • Create Data Delivery Order Pending

    • Fungsi untuk menghandle create data dihandle oleh fungsi public function insertBarang(Request $request) pada controller KeluarbarangController.php

                        
                            
                            public function insertBarang(Request $request) {
                
                                $form_data = array(
                                    ...
                                );
      
                                $postdata = json_encode($form_data);
                                $token = $request->session()->get('token');
                                $client_secret = $request->session()->get('client_secret');
                                $httpMethod = "POST";
                                $body = $postdata;
                                $sign = new Signature();
                                $signature = $sign->_createSignature($httpMethod, $body);
                                $url = env('API_URL');
      
                                $curl = curl_init();
      
                                curl_setopt_array($curl, array(
                                  CURLOPT_URL => ''.$url.'api/admin/delivery_order_add',
                                  CURLOPT_RETURNTRANSFER => true,
                                  CURLOPT_ENCODING => '',
                                  CURLOPT_MAXREDIRS => 10,
                                  CURLOPT_TIMEOUT => 0,
                                  CURLOPT_FOLLOWLOCATION => true,
                                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                  CURLOPT_CUSTOMREQUEST => 'POST',
                                  CURLOPT_POSTFIELDS => $postdata,
                                  CURLOPT_HTTPHEADER => array(
                                    'x-auth-token: '.$token.'',
                                    'x-auth-client: '.$client_secret.'',
                                    'x-auth-signature: '.$signature.'',
                                    'Content-Type: application/json'
                                  ),
                                ));
      
                                $response = curl_exec($curl);
                                $convert = json_decode($response,true);
                                $data = $convert['status'];
                                $message = $convert['message'];
                                curl_close($curl);
                                return response()->json(['status' => $data , 'message' => $message]);
      
                                }
                          
                        

      Fungsi insert di atas menggunakan method POST harus menyertakan header berupa token, client secret dan auth signature. Token dan client_secret diperoleh dari proses login yang kemudian disimpan dalam SESSION, sedangkan auth_signature merupakan isian data yang diinput oleh user, yang diproses menggunakan encode-decode oleh fungsi helper Signature. Helper signature dapat Anda ditemukan pada app/Helpers/Signature.php.


      Dari sisi view, request untuk melakukan create data dihandle oleh ajax pada file admin/add_keluar_barang.blade.php seperti berikut ini :

                          
                          $.ajax({
                              url:"insertBarang",
                              method:"POST",
                              data: new FormData(this),
                              contentType: false,
                              cache:false,
                              processData: false,
                              dataType:"json",
                              beforeSend: function(){
                              $('.loader').css("visibility", "visible");
                              },
                              success:function(data)
                              {
                                  .....
                              },
                          });
                          
                        
    • Update Data Delivery Order Pending

    • Fungsi untuk melakukan update data pada data data delivery order pending dihandle oleh fungsi function updateDelivery(Request $request) pada controller KeluarbarangController.php.

                            
                            public function updateBuyer(Request $request) {
      
                              $form_data = array(
                                  ...
                              );
      
                              $postdata = json_encode($form_data);
      
                              $token = $request->session()->get('token');
                              $client_secret = $request->session()->get('client_secret');
                              $httpMethod = "PUT";
                              $body = $postdata;
                              $sign = new Signature();
                              $signature = $sign->_createSignature($httpMethod, $body);
                              $url = env('API_URL');
      
                              $curl = curl_init();
      
                              curl_setopt_array($curl, array(
                                CURLOPT_URL => ''.$url.'api/admin/delivery_order_update',
                                CURLOPT_RETURNTRANSFER => true,
                                CURLOPT_ENCODING => '',
                                CURLOPT_MAXREDIRS => 10,
                                CURLOPT_TIMEOUT => 0,
                                CURLOPT_FOLLOWLOCATION => true,
                                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                CURLOPT_CUSTOMREQUEST => 'PUT',
                                CURLOPT_POSTFIELDS => $postdata,
                                CURLOPT_HTTPHEADER => array(
                                  'x-auth-token: '.$token.'',
                                  'x-auth-client: '.$client_secret.'',
                                  'x-auth-signature: '.$signature.'',
                                  'Content-Type: application/json'
                                ),
                              ));
      
                              $response = curl_exec($curl);
                              $convert = json_decode($response,true);
                              $data = $convert['status'];
                              $message = $convert['message'];
                              curl_close($curl);
                              return response()->json(['status' => $data , 'message' => $message]);       
                          }
                            
                          

      Secara umum proses update data tidak jauh berbeda dengan proses create data. Data yang telah diinput oleh user kemudian dibungkus oleh helper Signature yang kemudian dimasukkan ke dalam headers bersama dengan token dan client_secret. Yang membedakan dengan proses create data adalah method pengiriman data, dimana dalam proses update data menggunakan method PUT.

      Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax pada file admin/edit_keluar_barang.blade.php seperti berikut ini :

                            
                            $.ajax({
                              url: "../updateDelivery",
                              type: "PUT",
                              data: { _token: _token, _id: _id, field: field, field_1:field_1, field_2:field_2 },
                              success: function (data) {
      
                                .....
      
                              },
                            });
                            
                          
    • Approve Data Delivery Order Pending

    • Untuk berpindah posisi dari panel tab pending ke panel tab approved, diperlukan aksi approval untuk memindahkan data tersebut. Letak aksi approval berada pada file admin/edit_keluar_barang.blade.php. Proses approval dapat Anda temukan pada route Route::put('/approveDelivery', 'KeluarbarangController@approveDelivery'). Berdasarkan route tersebut, alur kerja dari approval terdapat pada controller KeluarbarangController.php function approveDelivery(Request $request) seperti berikut :

                            
                            public function approveDelivery(Request $request) 
                            {
                                $form_data = array(
                                    ....
                                );
      
      
                                $postdata = json_encode($form_data);
      
                                $token = $request->session()->get('token');
                                $client_secret = $request->session()->get('client_secret');
                                $httpMethod = "PUT";
                                $body = $postdata;
                                $sign = new Signature();
                                $signature = $sign->_createSignature($httpMethod, $body);
                                $url = env('API_URL');
      
                                $curl = curl_init();
      
                                curl_setopt_array($curl, array(
                                  CURLOPT_URL => ''.$url.'api/admin/delivery_order_approved',
                                  CURLOPT_RETURNTRANSFER => true,
                                  CURLOPT_ENCODING => '',
                                  CURLOPT_MAXREDIRS => 10,
                                  CURLOPT_TIMEOUT => 0,
                                  CURLOPT_FOLLOWLOCATION => true,
                                  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                  CURLOPT_CUSTOMREQUEST => 'PUT',
                                  CURLOPT_POSTFIELDS => $postdata,
                                  CURLOPT_HTTPHEADER => array(
                                    'x-auth-token: '.$token.'',
                                    'x-auth-client: '.$client_secret.'',
                                    'x-auth-signature: '.$signature.'',
                                    'Content-Type: application/json'
                                  ),
                                ));
      
                                $response = curl_exec($curl);
                                $convert = json_decode($response,true);
                                $data = $convert['status'];
                                $message = $convert['message'];
                                curl_close($curl);
                                return response()->json(['status' => $data , 'message' => $message]);
                            }
      
                            
                          
  • Approved
  • Progress
  • Completed

Pencairan Poin

Menu pencairan poin menampilkan data permintaan pencairan poin yang didapat oleh user dan mitra ke rekening mereka. Pada menu ini, terdapat 2 (dua) sub menu pencairan poin yaitu user dan mitra. Secara umum, tampilan dan fungsi dari masing-masing sub menu sama, hanya tipe user saja yang membedakan.

  • Pending

  • Pada panel tab pending user dan mitra terdapat aksi button 'ekspor'. Jika Anda melakukan klik pada button tersebut (tentunya dengan memilih data melalui checklist sebelumnya), maka sistem akan menampilkan popup yang berisi pilihan ekspor data berupa format xls atau csv. Masing-masing dari penggunaan xls dan csv dijelaskan pada penjabaran di bawah ini :

    • Xls pending

    • Ekspor xls pada panel pending akan menjalankan perintah download data berupa file excel. Anda dapat menemukan ekspor xls pending pada route Route::get('/download_user_pending/{tipe}/{bank}', 'PencairanpoinController@download_user_pending'). Pada PencairanpoinController.php function download_user_pending(Request $request, $tipe, $bank) akan melakukan request data ke API, dimana response dari pemanggilan tersebut disimpan dalam variable $poin.

                            
                              $client = new  \GuzzleHttp\Client(); 
                              $response = $client->request("GET", ''.$api.'api/admin/request_poin?tipe='.$tipe.'&page=1&limit=&sort=desc&nama_bank='.$bank.'&exported=false&search=',    
                                  ['headers' => [
                                      'x-auth-token' => ''.$token.'',
                                      'x-auth-client' => ''.$client_secret.'',
                                      'x-auth-signature' => ''.$signature.'']
                                  ]); 
      
                              $data = json_decode((string) $response->getBody(), true);
                              $poin = $data['data'];
                            
                      

      Data dari variable $poin selanjutnya akan diolah dalam file view admin/download_user_pending.blade.php. Dalam file tersebut, syntax yang digunakan untuk melakukan proses download data ke format xls adalah sebagai berikut :

                        
                          header("Content-type: application/vnd-ms-excel");
                          header("Content-Disposition: attachment; filename=Ekspor Pencairan Poin User Pending.xls");
                        
                      
    • Csv pending

    • Ekspor csv pada panel tab pending akan menjalankan perintah download data berupa file csv. Berbeda dengan ekspor xls yang hanya melakukan download data, ekspor csv selain memproses download data juga akan memindahkan posisi data ke panel tab selanjutnya yaitu tab exported. Proses untuk eskpor csv dapat Anda temukan pada route Route::put('/change_exported', 'PencairanpoinController@changeExported'). Pada PencairanpoinController.php function function changeExported(Request $request) akan mengirim data dengan method PUT ke endpoint http://nama_domain/api/admin/request_poin_export. Hasil dari proses tersebut akan mengembalikan data berupa json yang disimpan dalam variable $data, $message, $exported, $total_data dan $total_amount. Beberapa variable tersebut selanjutnya akan diproses pada file admin/pencairan_poin.blade.php untuk diconvert ke file csv. Masing-masing dari format csv bank mempunyai struktur yang berbeda sehingga masing-masing format mempunyai format tersendiri pada file view admin/pencairan_poin.blade.php.

      - Untuk format bank bca menggunakan function download_bca().
      - Untuk format bank mandiri menggunakn function download_mandiri().
      - Untuk format bank bni menggunakn function download_bni().
      - Untuk format lainya seperti ovo, gopay dan selain ke-3 bank di atas menggunakn function download_other().

  • Exported
  • Completed

Berita

Menu berita berfungsi untuk membuat berita yang ditampilkan dalam aplikasi mobile user dan mitra. Menu ini mempunyai aksi untuk create data, read data, update data dan delete data.

  • Create Data

  • Fungsi untuk menghandle create data dihandle oleh function insertBerita(Request $request) pada controller BeritaController.php dengan menggunakan http request Guzzle.

                    
                      public function insertBerita(Request $request) {
            
                        $hostname  = env('API_URL');
                        $token = $request->session()->get('token');
                        $client_secret = $request->session()->get('client_secret');
                        $file               = request('image');
                        $file_path          = $file->getPathname();
                        $file_mime          = $file->getMimeType('image');
                        $file_uploaded_name = $file->getClientOriginalName();
    
                        $uploadFileUrl = $hostname.'api/admin/news_add';
    
                                $client = new Client([
                                        'headers' => [
                                                'x-auth-token' => $token,
                                                'x-auth-client' => $client_secret,
                                        ]
                                ]);
    
                        try {
                            $response = $client->request("POST", $uploadFileUrl, [
                                'multipart' => [
                                    [
                                        'name'      => 'image',
                                        'filename' => $file_uploaded_name,
                                        'Mime-Type'=> $file_mime,
                                        'contents' => fopen($file_path, 'r'),
                                    ],
    
                                    [
                                    'name'     => 'title',
                                    'contents' => $request->title,
                                    ],
                                    ....
                                ]
                            ]);
                        } catch (Exception $e) {
    
                        }
    
                        $code   = $response->getStatusCode();
                        $response   = $response->getBody();
                        $responseData = json_decode($response, true);
                        $status = $responseData['status'];
                        return response()->json(['status' => $status]);
    
    
                    }
    
                    
                    

    Dari sisi view, request untuk melakukan create data dihandle pada file admin/add_berita.blade.php oleh ajax seperti berikut ini :

                    
                    $.ajax({
                        url:"insertBerita",
                        method:"POST",
                        data: new FormData(this),
                        contentType: false,
                        cache:false,
                        processData: false,
                        dataType:"json",
                        beforeSend: function(){
                        $('.loader').css("visibility", "visible");
                        },
                        success:function(data)
                        {
                            .....
                        },
                    });
                    
                  
  • Read Data

  • Cara membaca halaman data berita dapat Anda temukan pada route Route::resource('/berita', 'BeritaController'). Pada BeritaController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/berita.blade.php

                      
                      $.ajax({
                          url: 'loadDataBerita/'+limit+'/'+page,
                          type: 'get',
                          dataType: 'json',
    
                          success: function(response){
                          ....
                          }
                      });
                      
                  

    Fungsi ajax di atas merupakan request untuk memanggil data berita ke API, dengan tambahan parameter seperti limit (jumlah data yang ingin ditampilkan) dan page (halaman pagination). Secara default di dalam berita.blade.php pemanggilan data berita, menggunakan function loadData(10,1), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan dan 1 merupakan parameter page yang berarti halaman default pagination adalah 1.

  • Update Data

  • Fungsi untuk melakukan update data pada data berita dihandle oleh fungsi function updateBerita(Request $request) pada controller BeritaController.php.

                      
                        public function updateBerita(Request $request) {
    
                            $id = $request->id;
    
                            if ($request->image!="undefined") {
                                
                                $hostname  = env('API_URL');
                                $token = $request->session()->get('token');
                                $client_secret = $request->session()->get('client_secret');
                                $file               = request('image');
                                $file_path          = $file->getPathname();
                                $file_mime          = $file->getMimeType('image');
                                $file_uploaded_name = $file->getClientOriginalName();
    
                                
    
                                $uploadFileUrl = $hostname.'api/admin/news_update/'.$id.'';
    
                                        $client = new Client([
                                                'headers' => [
                                                        'x-auth-token' => $token,
                                                        'x-auth-client' => $client_secret,
                                                ]
                                        ]);
    
                                try {
                                  ...
                                } catch {
                                  ...
    
                                }
    
                            else {
                                ...
                            }
                        }
                      
                    

    Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax pada file admin/edit_berita.blade.php seperti berikut ini :

                      
                      $.ajax({
                        url: '../updateBerita',
                        type: 'POST',
                        data: data,
                        contentType: false,
                        processData: false,
                        success: function(data) {
    
                          .....
    
                        },
                      });
                      
                    
  • Delete Data

  • Fungsi untuk melakukan hapus data pada data berita dihandle oleh function deleteBerita(Request $request, $id) pada controller BeritaController.php.

                    
                    public function deleteBerita(Request $request, $id) {
    
                        $token = $request->session()->get('token');
                        $client_secret = $request->session()->get('client_secret');
                        $httpMethod = "DELETE";
                        $body = "{}";
                        $sign = new Signature();
                        $signature = $sign->_createSignature($httpMethod, $body);
                        $url = env('API_URL');
    
                        $curl = curl_init();
    
                        curl_setopt_array($curl, array(
                          CURLOPT_URL => ''.$url.'api/admin/news_delete/'.$id.'',
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_ENCODING => '',
                          CURLOPT_MAXREDIRS => 10,
                          CURLOPT_TIMEOUT => 0,
                          CURLOPT_FOLLOWLOCATION => true,
                          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                          CURLOPT_CUSTOMREQUEST => 'DELETE',
                          CURLOPT_HTTPHEADER => array(
                            'x-auth-token: '.$token.'',
                            'x-auth-client: '.$client_secret.'',
                            'x-auth-signature: '.$signature.'',
                          ),
                        ));
    
                        $response = curl_exec($curl);
    
                        $convert = json_decode($response,true);
                        $data = $convert['status'];
                        curl_close($curl);
                        // dd($response);
                        return response()->json(['status' => $data]);
    
                    }
                    
                  

    Pada code di atas, controller akan menangkap parameter yang dikirimkan dari view berupa variabel $id. Parameter tersebut digunakan dalam pemanggilan endpoint API. Untuk menjalankan proses hapus data, diperlukan token, client secret dan signature. Token dan client secret diperoleh dari proses login yang disimpan dalam SESSION, sedangkan signature diperoleh dari variable $body yang kemudian dibungkus menggunakan helper signature.


Pool

Pool merupakan salah satu group user dalam aplikasi jlantah dimana proses pembuatan akunnya dibuat terlebih dahulu oleh admin. Dalam halaman pool terdapat beberapa menu seperti dashboard, data order, delivery order, dan inventory. Lebih lanjut mengenai pembahasan dari masing-masing menu akan dijelaskan pada uraian di bawah ini.


Dashboard Pool

Dashboard berfungsi untuk menampilkan data statistik, data order terbaru dan data pencairan terbaru. Route dashboard pool dapat Anda temukan pada bagian Route::get('/dashboard_hub', 'DashboardController@dataHub'). Pada DashboardController.php, function dataHub(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file hub/dashboard.blade.php.

            
                $.ajax({
                    url: 'loadDataDashboard/'+start+'/'+end,
                    type: 'get',
                    dataType: 'json',
                    success: function(response){

                      ....
                        
                    },
                });
            
          

View dashboard.blade.php, akan memanggil data melalui ajax dengan destinasi route loadDataDashboard/'+start+'/'+end. Parameter start merupakan tanggal awal dan parameter end merupakan parameter tanggal akhir. Url ajax loadDataDashboard/'+start+'/'+end jika Anda cek pada routes/web.php akan mengarah pada Route::get('/loadDataDashboard/{start}/{end}', 'DashboardController@loadDataDashboard'). Function loadDataDashboard pada DashboardController.php inilah yang bertugas untuk melakukan pemanggilan data ke API http://nama_domain/api/admin/dashboard?start_date='.$start_date.'&end_date='.$end_date.' dengan memanfaatkan http client Guzzle. Selengkapnya tentang Guzzle, dapat Anda temukan disini.


Data Order Pool

Data order merupakan kumpulan data dari data pemesanan yang diantar oleh mitra sesuai tujuan pool. Jadi dalam menu ini secara credential data yang ada sudah disesuaikan berdasarkan masing-masing pool. Dalam menu data order terdapat beberapa status pemesanan seperti completed, reject, cancel, order pickup dan sebagainya. Nilai dari masing-masing status mengambil dari reponse yang diberikan oleh API. Dalam menu ini terdapat 2 (jenis) aksi yaitu view data dan detail data.

  • View Data

  • Cara membaca halaman data order pool dapat Anda temukan pada route Route::get('/data_pesanan_hub', 'DatapesananController@dataHub'). Pada DatapesananController.php, function function dataHub(Request $request) berfungsi untuk menampilkan halaman data order pool yang dihandle pada file hub/data_pesanan_hub.blade.php

    .
                      
                          $.ajax({
                            url: 'loadDataPesananHub/'+limit+'/'+page+'/'+search,
                            type: 'get',
                            dataType: 'json',
    
                            success: function(response){
                            ....
                            }
                          });
                      
                    

    Fungsi ajax di atas merupakan request untuk memanggil data order ke endpoint API, dengan penyertaan parameter seperti limit (jumlah data yang ingin ditampilkan), page (halaman pagination) dan search (kata pencarian). Secara default di dalam hub/data_pesanan_hub.blade.php pemanggilan data order, menggunakan function loadData(10,1,'all'), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan, 1 merupakan parameter page yang berarti halaman default pagination adalah 1 dan all merupakan parameter search dimana dalam controller DatapesananController.php function loadDataPesananHub(Request $request, $limit, $page, $search), 'all' akan di-replace menjadi string kosong '', yang artinya untuk parameter search bernilai empty alias ditampilkan semua ketika halaman order pertama kali di-load.

  • Detail Data

  • Detail data order dapat Anda temukan pada controller DatapesananController.php function detailPesananHub(Request $request, $id). Di dalam function tersebut terdapat syntax untuk melakukan pemanggilan data ke endpoint API menggunakan Guzzle:

                      
                          $client = new  \GuzzleHttp\Client(); 
                          $response = $client->request("GET", ''.$api.'api/admin/order/'.$id.'',  
                              ['headers' => [
                                  'x-auth-token' => ''.$token.'',
                                  'x-auth-client' => ''.$client_secret.'',
                                  'x-auth-signature' => ''.$signature.'']
                              ]); 
    
                          $data = json_decode((string) $response->getBody(), true);
                          $detail = $data['data'];
    
                      
                    

    Variable $detail itulah yang berfungsi untuk menampung detail order, untuk selanjutnya data tersebut akan diolah atau ditampilkan pada file hub/detail_pesanan.blade.php.


Data Delivery Order Pool

Data deliver order merupakan menu yang berisi tentang daftar pengiriman barang kepada buyer, dimana data ini berasal dari data yang pertamanya dibuat admin kemudian disetujui oleh approval. Jika merujuk pada halaman admin, menu ini hampir sama seperti menu delivery order panel tab progress. Yang membedakan adalah dalam menu ini data yang dimuat adalah data yang sesuai dengan masing-masing pool. Dalam menu ini terdapat 2 (jenis) aksi yaitu view data dan confirm data.

  • View Data

  • Cara membaca halaman data delivery order pada pool dapat Anda temukan pada route Route::resource('/keluar_barang_hub', 'KeluarbarangController'). Pada KeluarbarangController.php, function function index(Request $request) berfungsi untuk menampilkan halaman data delivery order yang dihandle pada file hub/keluar_barang.blade.php

    .
                      
                          $.ajax({
                            url: 'loadDataBarangHub/'+limit+'/'+page+'/'+search,
                            type: 'get',
                            dataType: 'json',
    
                            success: function(response){
                            ....
                            }
                          });
                      
                    

    Fungsi ajax di atas merupakan request untuk memanggil data delivery order ke endpoint API, dengan penyertaan parameter seperti limit (jumlah data yang ingin ditampilkan), page (halaman pagination) dan search (kata pencarian). Secara default di dalam hub/keluar_barang.blade.php pemanggilan data delivery order, menggunakan function loadData(10,1,'all'), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan, 1 merupakan parameter page yang berarti halaman default pagination adalah 1 dan all merupakan parameter search dimana dalam controller KeluarbarangController.php function loadDataBarangHub(Request $request, $limit, $page, $search), 'all' akan di-replace menjadi string kosong '', yang artinya untuk parameter search bernilai empty alias ditampilkan semua ketika halaman order pertama kali di-load.

  • Confirm Data

  • Confirm data yang terdapat pada menu order pool berfungsi untuk memastikan jumlah volume yang ingin diambil oleh buyer sesuai dengan data yang diinput oleh pic/approval final. Pada menu delivery order admin panel tab progress berisi data yang telah mendapatkan approval kedua, data tersebut akan tampil pada menu delivery order pool. Halaman yang memuat tampilan confirm data dapat Anda temukan pada hub/data_pesanan_hub.blade.php. Pada file tersebut terdapat event onClik < a href='#' class='table-action confirm'> pada button confirm data. Button tersebut ketika disubmit akan menjalankan request ajax seperti berikut :

                      
                          $.ajax({
                              url: "confirmPesanan",
                              type: "POST",
                              data:new FormData(this),
                              contentType: false,
                              cache: false,
                              processData: false,
                              dataType:"json",
                              success: function (data) {
                                ....  
                                
                              },
                          });
    
                      
                    

    Request tersebut akan mengarah ke route Route::post('/confirmPesanan', 'DatapesananController@confirmPesanan'), dimana form data dari file view akan diproses oleh function confirmPesanan(Request $request) pada controller DatapesananController.php.


Inventory

Data inventory pada pool berisi tentang data jumlah volume barang keluar , volume barang masuk dan jumlah volumen berdasarkan no order. Menu ini berada pada route Route::resource('/inventory', 'InventoryController'). Pada controller InventoryController.php function index(Request $request) akan mereturn tampilan ke dalam file hub/inventory.blade.php.

            
                $.ajax({
                    url: 'loadDataInventory/'+limit+'/'+page,
                    type: "POST",
                    data:new FormData(this),
                    contentType: false,
                    cache: false,
                    processData: false,
                    dataType:"json",
                    success: function (data) {
                      ....  
                      
                    },
                });

            
          

Fungsi ajax di atas merupakan request untuk memanggil data inventory ke endpoint API, dengan penyertaan parameter seperti limit (jumlah data yang ingin ditampilkan) dan page (halaman pagination). Secara default di dalam hub/inventory.blade.php pemanggilan data inventory, menggunakan function loadData(10,1), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter, default 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan dan 1 merupakan parameter page yang berarti halaman default pagination adalah 1.


Superadmin

Superadmin merupakan salah satu group user dalam aplikasi jlantah yang bertugas untuk memanejemen user yang menggunakan aplikasi. Superadmin dapat membuat group user baru melalui menu role dan memberikan hak akses sesuai dengan jobdescnya. Selain itu superadmin juga dapat melakukan proses CRUD (create, read, update, delete) dalam pembuatan user aplikasi.


Dashboard Superadmin

Dashboard berfungsi untuk menampilkan data statistik, data order terbaru dan data pencairan terbaru. Route dashboard superadmin dapat Anda temukan pada bagian Route::get('/dashboard_superadmin', 'DashboardController@dataSuperadmin'). Pada DashboardController.php, function dataSuperadmin(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file superadmin/dashboard.blade.php.

            
                $.ajax({
                    url: 'loadDataDashboard/'+start+'/'+end,
                    type: 'get',
                    dataType: 'json',
                    success: function(response){

                      ....
                        
                    },
                });
            
          

View dashboard.blade.php, akan memanggil data melalui ajax dengan destinasi route loadDataDashboard/'+start+'/'+end. Parameter start merupakan tanggal awal dan parameter end merupakan parameter tanggal akhir. Url ajax loadDataDashboard/'+start+'/'+end jika Anda cek pada routes/web.php akan mengarah pada Route::get('/loadDataDashboard/{start}/{end}', 'DashboardController@loadDataDashboard'). Function loadDataDashboard pada DashboardController.php inilah yang bertugas untuk melakukan pemanggilan data ke API http://nama_domain/api/admin/dashboard?start_date='.$start_date.'&end_date='.$end_date.' dengan memanfaatkan http client Guzzle. Selengkapnya tentang Guzzle, dapat Anda temukan disini.


Role

Menu role berfungsi untuk mengelola group user dimana superadmin dapat melakukan penambahan, pengubahan dan penghapusan group user. Dalam membuat group user baru, superadmin dapat memberikan hak akses kepada group user tersebut sesuai dengan kebutuhan.

  • Create Data

  • Anda dapat menemukan proses create data pada route Route::post('/insertRole', 'RoleController@insertRole'). Fungsi untuk menghandle create data dihandle oleh function insertRole(Request $request) pada controller RoleController.php.

                  
    
                    public function insertRole(Request $request) {
    
                        $result = [];
                        $result['name'] = $request->name;
                        foreach ($request->menu as $values) {
                            $explode = explode('|',$values);
                            $id = $explode[0];
                            $slug = $explode[1];
                            $result['access_list'][] = [
                                'pages_id' => str_replace(" ","",$id),
                                'slug' => str_replace(" ","",$slug),
                            ];
    
                        }
    
                        $postdata = json_encode($result);   
    
                        $token = $request->session()->get('token');
                        $client_secret = $request->session()->get('client_secret');
                        $httpMethod = "POST";
                        $body = $postdata;
                        $sign = new Signature();
                        $signature = $sign->_createSignature($httpMethod, $body);
                        $url = env('API_URL');
    
                        $curl = curl_init();
    
                        curl_setopt_array($curl, array(
                          CURLOPT_URL => ''.$url.'api/admin/admin_role_add',
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_ENCODING => '',
                          CURLOPT_MAXREDIRS => 10,
                          CURLOPT_TIMEOUT => 0,
                          CURLOPT_FOLLOWLOCATION => true,
                          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                          CURLOPT_CUSTOMREQUEST => 'POST',
                          CURLOPT_POSTFIELDS => $postdata,
                          CURLOPT_HTTPHEADER => array(
                            'x-auth-token: '.$token.'',
                            'x-auth-client: '.$client_secret.'',
                            'x-auth-signature: '.$signature.'',
                            'Content-Type: application/json'
                          ),
                        ));
    
                        $response = curl_exec($curl);
                        $convert = json_decode($response,true);
                        $data = $convert['status'];
                        $message = $convert['message'];
                        curl_close($curl);
                        return response()->json(['status' => $data , 'message' => $message]);
                    }
                    
                  
                

    Dari sisi view, request untuk melakukan create data dihandle oleh ajax pada file admin/add_role.blade.php seperti berikut ini :

                  
                  $.ajax({
                      url:"insertRole",
                      method:"POST",
                      data: new FormData(this),
                      contentType: false,
                      cache:false,
                      processData: false,
                      dataType:"json",
                      beforeSend: function(){
                      $('.loader').css("visibility", "visible");
                      },
                      success:function(data)
                      {
                          .....
                      },
                  });
                  
                
  • Read Data

  • Cara membaca halaman data role dapat Anda temukan pada route Route::resource('/role', 'RoleController'). Pada RoleController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/data_role.blade.php.

                      
                      $.ajax({
                          url: 'loadDataRole/'+limit+'/'+page,
                          type: 'get',
                          dataType: 'json',
    
                          success: function(response){
                          ....
                          }
                      });
                      
                  

    Fungsi ajax di atas merupakan request untuk memanggil data role ke endpoint API, dengan tambahan parameter seperti limit (jumlah data yang ingin ditampilkan) dan page (halaman pagination). Secara default di dalam data_role.blade.php pemanggilan data role, menggunakan function loadData(10,1), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan dan 1 merupakan parameter page yang berarti halaman default pagination adalah 1.

  • Update Data

  • Fungsi untuk melakukan update data pada data role dihandle oleh fungsi function updateRole(Request $request) pada controller RoleController.php.

                  
    
                  public function updateRole(Request $request) {
    
                      $result = [];
                      $result['name'] = $request->name;
                      $menu = str_replace(" ","",$request->menu);
                      $explode = explode(',',$menu);
                                
                      for($i = 0; $i < count($explode); $i++){
                          $id = explode('|',$explode[$i]);
                          $id_ = $id[0];
                          $slug = explode('|',$explode[$i]);
                          $slug_ = $id[1];
                          $result['access_list'][] = [
                                  
                                  'pages_id' => $id_,
                                  'slug' => $slug_,
                          ];
                      }
    
                      $postdata = json_encode($result); 
    
                      $token = $request->session()->get('token');
                      $client_secret = $request->session()->get('client_secret');
                      $httpMethod = "PUT";
                      $body = $postdata;
                      $sign = new Signature();
                      $signature = $sign->_createSignature($httpMethod, $body);
                      $url = env('API_URL');
    
                      $curl = curl_init();
    
                      curl_setopt_array($curl, array(
                        CURLOPT_URL => ''.$url.'api/admin/admin_role_update/'.$request->role_id.'',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'PUT',
                        CURLOPT_POSTFIELDS => $postdata,
                        CURLOPT_HTTPHEADER => array(
                          'x-auth-token: '.$token.'',
                          'x-auth-client: '.$client_secret.'',
                          'x-auth-signature: '.$signature.'',
                          'Content-Type: application/json'
                        ),
                      ));
    
                      $response = curl_exec($curl);
                      $convert = json_decode($response,true);
                      $data = $convert['status'];
                      $message = $convert['message'];
                      curl_close($curl);
                      return response()->json(['status' => $data , 'message' => $message]);       
                  }
                  
                

    Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax pada file admin/edit_role.blade.php seperti berikut ini :

                  
                  $.ajax({
                    url: "../../updateRole",
                    type: "PUT",
                    data: { _token: _token, _id: _id, field: field, field_1:field_1, field_2:field_2 },
                    success: function (data) {
    
                      .....
    
                    },
                  });
                  
                
  • Delete Data
  • Fungsi untuk melakukan hapus data pada data role dihandle oleh function deleteRole(Request $request, $id) pada controller RoleController.php.

                    
                    public function deleteRole(Request $request, $id) {
    
                        $token = $request->session()->get('token');
                        $client_secret = $request->session()->get('client_secret');
                        $httpMethod = "DELETE";
                        $body = "{}";
                        $sign = new Signature();
                        $signature = $sign->_createSignature($httpMethod, $body);
                        $url = env('API_URL');
    
                        $curl = curl_init();
    
                        curl_setopt_array($curl, array(
                          CURLOPT_URL => ''.$url.'api/admin/admin_role_delete/'.$id.'',
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_ENCODING => '',
                          CURLOPT_MAXREDIRS => 10,
                          CURLOPT_TIMEOUT => 0,
                          CURLOPT_FOLLOWLOCATION => true,
                          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                          CURLOPT_CUSTOMREQUEST => 'DELETE',
                          CURLOPT_HTTPHEADER => array(
                            'x-auth-token: '.$token.'',
                            'x-auth-client: '.$client_secret.'',
                            'x-auth-signature: '.$signature.'',
                          ),
                        ));
    
                        $response = curl_exec($curl);
                        $convert = json_decode($response,true);
                        $data = $convert['status'];
                        curl_close($curl);
                        return response()->json(['status' => $data]);
                        
                    }
                    
                  

    Pada code di atas, controller akan menangkap parameter yang dikirimkan dari view berupa variabel $id. Parameter tersebut digunakan dalam pemanggilan endpoint API. Untuk menjalankan proses hapus data, diperlukan token, client secret dan signature. Token dan client secret diperoleh dari proses login yang disimpan dalam SESSION, sedangkan signature diperoleh dari variable $body yang kemudian dibungkus menggunakan helper signature.


User Aplikasi

Menu user aplikasi merupakan kelanjutan dari menu role, dimana group user yang sudah dicreate pada menu role akan digunakan pada menu user aplikasi ketika user menambahkan data baru. Menu user aplikasi digunakan untuk mengelola pengguna yang akan menggunakan aplikasi jlantah berbasis website. Pada menu ini, superadmin dapat melakukan proses CRUD (create, read, update, delete) data.

  • Create Data

  • Anda dapat menemukan proses create data pada route Route::post('/insertUserAplikasi', 'UserAplikasiController@insertUserAplikasi'). Fungsi untuk menghandle create data dihandle oleh function insertUserAplikasi(Request $request) pada controller UserAplikasiController.php.

                  
    
                    public function insertUserAplikasi(Request $request) {
    
                      $form_data = array(
                          ....
                      );
    
                      $postdata = json_encode($form_data);   
    
                      $token = $request->session()->get('token');
                      $client_secret = $request->session()->get('client_secret');
                      $httpMethod = "POST";
                      $body = $postdata;
                      $sign = new Signature();
                      $signature = $sign->_createSignature($httpMethod, $body);
                      $url = env('API_URL');
    
                      $curl = curl_init();
    
                      curl_setopt_array($curl, array(
                        CURLOPT_URL => ''.$url.'api/admin/user_admin_add',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'POST',
                        CURLOPT_POSTFIELDS => $postdata,
                        CURLOPT_HTTPHEADER => array(
                          'x-auth-token: '.$token.'',
                          'x-auth-client: '.$client_secret.'',
                          'x-auth-signature: '.$signature.'',
                          'Content-Type: application/json'
                        ),
                      ));
    
                      $response = curl_exec($curl);
                      $convert = json_decode($response,true);
                      $data = $convert['status'];
                      $message = $convert['message'];
                      curl_close($curl);
                      return response()->json(['status' => $data , 'message' => $message]);
                        
                    }
                    
                  
                

    Dari sisi view, request untuk melakukan create data dihandle oleh ajax pada file admin/add_user_aplikasi.blade.php seperti berikut ini :

                  
                  $.ajax({
                      url:"insertUserAplikasi",
                      method:"POST",
                      data: new FormData(this),
                      contentType: false,
                      cache:false,
                      processData: false,
                      dataType:"json",
                      beforeSend: function(){
                      $('.loader').css("visibility", "visible");
                      },
                      success:function(data)
                      {
                          .....
                      },
                  });
                  
                
  • Read Data

  • Cara membaca halaman data user aplikasi dapat Anda temukan pada route Route::resource('/user_aplikasi', 'UserAplikasiController'). Pada UserAplikasiController.php, function index(Request $request) berfungsi untuk menampilkan tampilan halaman yang dihandle pada file admin/user_aplikasi.blade.php.

                      
                      $.ajax({
                          url: 'loadDataUserAplikasi/'+limit+'/'+page,
                          type: 'get',
                          dataType: 'json',
    
                          success: function(response){
                          ....
                          }
                      });
                      
                  

    Fungsi ajax di atas merupakan request untuk memanggil data user aplikasi ke endpoint API, dengan tambahan parameter seperti limit (jumlah data yang ingin ditampilkan) dan page (halaman pagination). Secara default di dalam user_aplikasi.blade.php pemanggilan data user aplikasi, menggunakan function loadData(10,1), dimana function loadData merupakan fungsi yang akan menaungi request ajax pada kode di atas. Dalam default function loadData terdapat beberapa parameter default , 10 merupakan parameter limit yang berarti jumlah data default yang ditampilkan dan 1 merupakan parameter page yang berarti halaman default pagination adalah 1.

  • Update Data

  • Fungsi untuk melakukan update data pada data user aplikasi dihandle oleh fungsi function updateUserAplikasi(Request $request) pada controller UserAplikasiController.php.

                  
    
                  public function updateUserAplikasi(Request $request) {
    
                      $form_data = array(
                        ...
                      );
    
                      $postdata = json_encode($form_data); 
    
                      $token = $request->session()->get('token');
                      $client_secret = $request->session()->get('client_secret');
                      $httpMethod = "PUT";
                      $body = $postdata;
                      $sign = new Signature();
                      $signature = $sign->_createSignature($httpMethod, $body);
                      $url = env('API_URL');
    
                      $curl = curl_init();
    
                      curl_setopt_array($curl, array(
                        CURLOPT_URL => ''.$url.'api/admin/user_admin_update/'.$request->user_id.'',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_ENCODING => '',
                        CURLOPT_MAXREDIRS => 10,
                        CURLOPT_TIMEOUT => 0,
                        CURLOPT_FOLLOWLOCATION => true,
                        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                        CURLOPT_CUSTOMREQUEST => 'PUT',
                        CURLOPT_POSTFIELDS => $postdata,
                        CURLOPT_HTTPHEADER => array(
                          'x-auth-token: '.$token.'',
                          'x-auth-client: '.$client_secret.'',
                          'x-auth-signature: '.$signature.'',
                          'Content-Type: application/json'
                        ),
                      ));
    
                      $response = curl_exec($curl);
                      $convert = json_decode($response,true);
                      $data = $convert['status'];
                      $message = $convert['message'];
                      curl_close($curl);
                      return response()->json(['status' => $data , 'message' => $message]); 
                            
                  }
    
                  
                

    Sedangkan dari sisi view, request untuk melakukan update data dihandle oleh ajax pada file admin/edit_user_aplikasi.blade.php seperti berikut ini :

                  
                  $.ajax({
                    url: "../../updateUserAplikasi",
                    type: "PUT",
                    data: { _token: _token, _id: _id, field: field, field_1:field_1, field_2:field_2 },
                    success: function (data) {
    
                      .....
    
                    },
                  });
                  
                
  • Delete Data
  • Fungsi untuk melakukan hapus data pada data user aplikasi dihandle oleh function deleteUserAplikasi(Request $request, $id) pada controller UserAplikasiController.php.

                    
                    public function deleteUserAplikasi(Request $request, $id) {
    
                        $token = $request->session()->get('token');
                        $client_secret = $request->session()->get('client_secret');
                        $httpMethod = "DELETE";
                        $body = "{}";
                        $sign = new Signature();
                        $signature = $sign->_createSignature($httpMethod, $body);
                        $url = env('API_URL');
    
                        $curl = curl_init();
    
                        curl_setopt_array($curl, array(
                          CURLOPT_URL => ''.$url.'api/admin/user_admin_delete/'.$id.'',
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_ENCODING => '',
                          CURLOPT_MAXREDIRS => 10,
                          CURLOPT_TIMEOUT => 0,
                          CURLOPT_FOLLOWLOCATION => true,
                          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                          CURLOPT_CUSTOMREQUEST => 'DELETE',
                          CURLOPT_HTTPHEADER => array(
                            'x-auth-token: '.$token.'',
                            'x-auth-client: '.$client_secret.'',
                            'x-auth-signature: '.$signature.'',
                          ),
                        ));
    
                        $response = curl_exec($curl);
                        $convert = json_decode($response,true);
                        $data = $convert['status'];
                        curl_close($curl);
                        return response()->json(['status' => $data]);
                        
                    }
                    
                  

    Pada code di atas, controller akan menangkap parameter yang dikirimkan dari view berupa variabel $id. Parameter tersebut digunakan dalam pemanggilan endpoint API. Untuk menjalankan proses hapus data, diperlukan token, client secret dan signature. Token dan client secret diperoleh dari proses login yang disimpan dalam SESSION, sedangkan signature diperoleh dari variable $body yang kemudian dibungkus menggunakan helper signature.