Senin, 02 Juli 2018

Source Code Codeigniter Quran Bahasa Indonesia

Source Code ini di peruntukkan untuk akses data Al-Quran berbahasa Indonesia. dalam hal ini project yang di gunakan adalah project PHP dengan framework Codeigniter yang sudah include dengan library Rest Server untuk akses API, juga source code ini digunakan untuk akses melalui aplikasi android berikut ini penampakan awal hanya untuk registrasi mendapatkan token   Dalam Project Ini token wajib di daftarkan untuk mendapatkan akses reques ke web API Berikut adalah contoh mendaftarkan token, Token tersebut bisa di gunakan untuk melakukan request contoh penerapan request Surah http://localhost:85/quran.zialagiaza.com/api/quran/surah?token=c60e6dbfcdba0373b3b86c4e1dc00f1e8ef57de0 untuk melakukan hal yng sama namun untuk ayat-ayat Al-Quran bisa melakukan request dengan link sebagai berikut http://localhost:85/quran.zialagiaza.com/api/quran/quran?token=c60e6dbfcdba0373b3b86c4e1dc00f1e8ef57de0 ada satu lagi untuk request berdasarkan surah id contoh untuk menampilkan Umul Quran (Al-Fathihah) http://localhost:85/quran.zialagiaza.com/api/quran/quranid?token=c60e6dbfcdba0373b3b86c4e1dc00f1e8ef57de0&surah_id=1   link download https://www.4shared.com/s/fUC1h9Zr_ee dan silahkan import databasenya contoh penerapan sqllite Bulk data JSON untuk penerapan di android silahkan kunjugi saya di channel Bego Official semoga bermanfaat

Sabtu, 02 Juni 2018

Membuat Layanan RestFull API Codeigniter Serial Studi Kasus Perpustakaan Part 4

Halo Sobat Coding Library 

Pada Part 4 ini kita akan melakukan implementasi management transaksi di mana transaksi yang di maksud pada part ini ialah implementasi registrasi atau transaksi peminjaman buku pada layanan Web  Services Resfull API dengan Framework Codeigniter,

Kembali lagi saya ingatkan untuk teman-teman yang melihat halaman ini pada kesan pertama silahkan teman-teman kunjungi Part 1 agar dapat mengikuti proses pembuatan hingga sampai di part ke 4 ini.

Membuat Table
 
USE perpustakaan
CREATE TABLE sys_pinjam_h(
    pinjam_id varchar(20) primary key,
    pinjam_date date, 
    pinjam_sdate date, 
    pinjam_edate date,
    app_token varchar(60)
);

CREATE TABLE sys_pinjam_d(
 id int AUTO_INCREMENT PRIMARY key,
    pinjam_id varchar(20),
    books_id varchar(10),
    back_status enum('Y','N') DEFAULT 'N'
);

CREATE TABLE pinjam_temp(
  id int AUTO_INCREMENT PRIMARY key,
  books_id varchar(10),
  app_token varchar(60)
);

CREATE TABLE sys_seqno
(
  ltrno varchar(20),
  rtrno int,
  trno varchar(5)
)

Create File Helper (dalam folder helpers > global_helper.php)
<?php
 function create_id($param='', $tipe){
     $CI =& get_instance();
        $qry='SELECT COUNT(*) as hasil from sys_seqno where ltrno="'.$param.'" and trno="'.$tipe.'"';
        $query = $CI->db->query($qry);
        $row = $query->row();
         if ($row->hasil == 0) {
           $CI->db->query('INSERT INTO sys_seqno values("'.$param.'",1,"'.$tipe.'")');
        } else {

             $CI->db->query('UPDATE sys_seqno set rtrno=rtrno+1 where ltrno="'.$param.'" and trno="'.$tipe.'"');
        }

        $qry = "SELECT * FROM sys_seqno where ltrno='$param' and  trno='$tipe'";
        $query = $CI->db->query($qry);
        $rs = $query->row();
        if ($rs->rtrno < 10) {
            $ID = $param . '0000' . $rs->rtrno;
        } else if ($rs->rtrno >= 10 && $rs->rtrno <= 99) {
            $ID = $param . '000' . $rs->rtrno;
        } else if ($rs->rtrno >= 100 && $rs->rtrno <= 999) {
            $ID = $param . '00' . $rs->rtrno;
        } else if ($rs->rtrno >= 1000 && $rs->rtrno <= 9999) {
            $ID = $param . '0' . $rs->rtrno;
        }
        return $ID;
    }
 ?>

Buat Sebuah Controller (dalam folder api > Pinjam.php)

<?php
/**
 *
 */
require APPPATH . 'libraries/REST_Controller.php';
class Pinjam extends REST_Controller
{

  function __construct()
  {
    parent::__construct();
    $this->load->model('validation/model','val');
    $this->load->model('buku/buku_m','book');
    $this->load->model('pinjam/pinjam_m','pinjam');
    $this->load->helper('global');
  }

  function temp_post(){
    $id = $this->post('id');
    $token = $this->post('app_token');
    $valid = $this->val->cek_token($token);
    if ($token==""){
   $this->response(array('status'=>false,'error' =>'Invalid Aktifitas, Tidak memiliki Akses'),REST_Controller::HTTP_OK);
  }else if($valid==true){
   $this->response(array('status'=>true,'response'=>$this->pinjam->save_temp($id,$token)), REST_Controller::HTTP_OK);
  }else{
   $this->response(array('status'=>false,'error' =>'Not Found'),REST_Controller::HTTP_OK);
  }
  }
  function temp_delete(){
    $id = $this->delete('id');
    $token = $this->delete('app_token');
    $valid = $this->val->cek_token($token);
    if ($token==""){
   $this->response(array('status'=>false,'error' =>'Invalid Aktifitas, Tidak memiliki Akses'),REST_Controller::HTTP_OK);
  }else if($valid==true){
   $this->response(array('status'=>true,'response'=>$this->pinjam->delete_temp($id)), REST_Controller::HTTP_OK);
  }else{
   $this->response(array('status'=>false,'error' =>'Not Found'),REST_Controller::HTTP_OK);
  }
  }
  function save_post(){
    $pdate = $this->post('pdate');
    $psdate = $this->post('sdate');
    $pedate = $this->post('edate');
    $token = $this->post('app_token');
    $valid = $this->val->cek_token($token);
    $pinjam_id =create_id('PJ'.date('Ym'), 'PJM');
    if ($token==""){
      $this->response(array('status'=>false,'error' =>'Invalid Aktifitas, Tidak memiliki Akses'),REST_Controller::HTTP_OK);
    }else if($valid==true){
      $this->response(array('status'=>true,'response'=>$this->pinjam->save_tr_pinjam($pinjam_id, $pdate, $psdate, $pedate,$token)), REST_Controller::HTTP_OK);
    }else{
      $this->response(array('status'=>false,'error' =>'Not Found'),REST_Controller::HTTP_OK);
    }


  }
}

Buat Sebuah Model (dalam folder pinjam>Pinjam_m.php)
<?php

/**
 *
 */
class Pinjam_m extends CI_Model

{

  function __construct()
  {
    parent::__construct();
  }

  function save_temp($books_id, $token){
    $this->db->where('books_id', $books_id);
    $this->db->where('app_token', $token);
    $count = $this->db->count_all_results('pinjam_temp');
    if($count > 0){
      return "Buku Sudah Ditambahkan sebelumnya";
    }else{
          $arrayName = array('books_id' => $books_id, 'app_token' => $token);
          $this->db->insert('pinjam_temp', $arrayName);
          return "Buku Berhasil Ditambahkan";
    }
  }

  function delete_temp($id){
      $this->db->where('id',$id);
      $this->db->delete('pinjam_temp');
      return "Berhasil Dihapus";
  }

  function save_tr_pinjam($pinjam_id,$pdate, $psdate, $pedate, $token){

      $arrayName = array('pinjam_id' =>$pinjam_id ,'pinjam_date'=>$pdate,
                        'pinjam_sdate'=>$psdate, 'pinjam_edate'=>$pedate,
                        'app_token'=>$token );
      $this->db->insert('sys_pinjam_h', $arrayName);
      $this->save_detail($pinjam_id,$token);
      return "Transaksi Pinjam Berhasil";
  }
  function save_detail($p1, $p2)
  {
    $this->db->select('*')->from('pinjam_temp')->where('app_token',$p2);
    $query = $this->db->get();
    $data=array();
  if($query->num_rows() >0 ){
      foreach ($query->result() as $row) {
          $data[] = array('pinjam_id'=>$p1,
                          'books_id' => $row->books_id,
                          'back_status'=>'N');

   }
   $query->free_result();
   $this->db->insert_batch('sys_pinjam_d', $data);
      $this->deltemp($p2);
  }
  }
  function deltemp($value='')
  {
    $this->db->where('app_token',$value);
    $this->db->delete('pinjam_temp');

  }
}

Menjalan Layanan Restfull di Postman
diharapkan ikuti langkah tahapan berikut
  • Penyimpanan Temporary
   id dan app_token teman-teman sesuaikan dengan data yang di buat , disarankan masukan lebih dari satu id misalkan BK0001,BK0002, BK0003 agar lebih terasa progressnya,
 NB : Dalam pengimputan temporary tidak bisa input dua kode yang sama, jika sudah di masukkan ke temporary maka informasi yang tampil adalah "data sudah ada".
  • Menyimpan Data Transaksi
Untuk penyimpanan data transaksi asumsikan menggunakan token yang sama,  agar tidak terjadi error proses pada layanan web services Ini.


 NB: pada layanan web service ini tidak mencantumkan parameter id pinjam, karena id pinjam akan di generate secara otomatis dengan fungsi yang ada pada file global_helper.php tinggal memanggil fungsi yang ada pada file helper tersebut
dan hasilnya pada mysql akan terbentuk data peminjaman yaitu sys_pinjam_h dan sys_pinjam_d, juga pada sys_seqno yang di create melalui helper, juga akan menghapus data temporary berdasarkan app_token,


Sampai disini kita telah berhasil membuat layanan web service untuk melakukan transaksi peminjaman buku, mungkin teman-teman saya kasih PR sedikit dengan Soal sebagai berikut :
  1. Berapakah perhitungan buku setiap row atau setiap bukunya?
  2. lakukanlah update qty pada data buku di layanan webservices setelah transaksi peminjaman selesai jika anda sudah mendapatkan jawaban soal pertama.
Selamat mencoba, dan kita akan lanjutkan pada serial part selanjutnya yaitu melakukan transaksi pengembalian buku, yang nantikan akan diperhitungan telat saat pengembalian,


Jumat, 01 Juni 2018

Membuat Layanan RestFull API Codeigniter Serial Studi Kasus Perpustakaan Part 3

Kembali lagi di Coding Library,

Di Part 3 ini kita akan melakukan implementasi membuat layanan Web Services tentunya kita akan membuat tabel pada database yang sebelumnya telah kita buat. oh ya buat teman-teman yang hanya melihat halaman ini pada kesan pertama saya berharap teman-teman juga mengikuti sejak awal pembuatan atau konfigurasi RestFull API dengan Framework Codeigniter dan Library codeigniter Rest_server di Part 1  dan juga membuat authentikasi pada Part 2 dan silahkan teman-teman lanjut ke Part ini.

Baiklah teman-teman silahkan copy script membuat table berikut, namun saya menyarankan untuk mngetik langsung agar teman-teman bisa faham betul membuat table dengan script sql.

USE perpustakaan;
CREATE TABLE sys_category(
 books_cat_id varchar(5) PRIMARY KEY,
    book_cat_name varchar(30)
);
INSERT INTO sys_category VALUES('KS', 'Computer & Sains');
CREATE TABLE sys_publisher(
 publisher_id int AUTO_INCREMENT PRIMARY KEY,
    publisher_name varchar(100)
);
INSERT INTO sys_publisher VALUES(null,'BOOKS PUBLISHER');
CREATE TABLE sys_books
(
  books_id varchar(10) PRIMARY KEY,
  books_title varchar(100),
  books_cat_id varchar(5),
  books_description text,
  books_year varchar(4),
  books_qty int,
  publisher_id int 
);

Sekarang teman-teman buatkan sebuah file controller>api> dengan nama Books.php


<?php
/**
 *
 */
 require APPPATH . 'libraries/REST_Controller.php';
 class Books extends REST_Controller
 {

  function __construct()
  {
    parent::__construct();
    $this->load->model('validation/model','val');
    $this->load->model('buku/buku_m','book');

  }

  function index_get(){
    $token=$this->get('app_token');
    $id=$this->get('id');
  $valid = $this->val->cek_token($token);
  if ($token==""){
   $this->response(array('status'=>false,'error' =>'Invalid Aktifitas, Tidak memiliki Akses'),REST_Controller::HTTP_OK);
  }else if($valid==true){
   $this->response(array('status'=>true,'response'=>$this->book->get_books($id)), REST_Controller::HTTP_OK);
  }else{
   $this->response(array('status'=>false,'error' =>'Not Found'),REST_Controller::HTTP_OK);
  }
  }

  function index_post()
  {
      $books_id= $this->post('p1');
      $books_title= $this->post('p2');
      $books_cat_id= $this->post('p3');
      $books_description= $this->post('p4');
      $books_year= $this->post('p5');
      $books_qty= $this->post('p6');
      $publisher_id= $this->post('p7');
      if($books_id=="" || $books_title=="" || $books_cat_id=="" || $books_description=="" || $books_year=="" || $books_qty=="" || $publisher_id==""){
          $this->response('Mohon Lengkapi data', REST_Controller::HTTP_OK);
      }else{
          $arrayName = array('books_id' => $books_id,
                              'books_title' => $books_title,
                              'books_cat_id' => $books_cat_id,
                              'books_description' => $books_description,
                              'books_year' => $books_year,
                              'books_qty' => $books_qty,
                              'publisher_id'=> $publisher_id,
                            );
          $this->db->insert('sys_books',$arrayName);
          $this->response('Sukses', REST_Controller::HTTP_OK);
    }
  }
  function index_put()
  {
      $books_id= $this->put('p1');
      $books_title= $this->put('p2');
      $books_cat_id= $this->put('p3');
      $books_description= $this->put('p4');
      $books_year= $this->put('p5');
      $books_qty= $this->put('p6');
      $publisher_id= $this->put('p7');
      if($books_id=="" || $books_title=="" || $books_cat_id=="" || $books_description=="" || $books_year=="" || $books_qty=="" || $publisher_id==""){
          $this->response('Mohon Lengkapi data', REST_Controller::HTTP_OK);
      }else{
          $arrayName = array(
                              'books_title' => $books_title,
                              'books_cat_id' => $books_cat_id,
                              'books_description' => $books_description,
                              'books_year' => $books_year,
                              'books_qty' => $books_qty,
                              'publisher_id'=> $publisher_id,
                            );
          $this->db->where('books_id',$books_id);
          $this->db->update('sys_books',$arrayName);
          $this->response('Update Success', REST_Controller::HTTP_OK);
    }
  }

  function index_delete()
  {
      $books_id= $this->delete('p1');
      $this->db->where('books_id',$books_id);
      $delete =$this->db->delete('sys_books');
      if($delete){
          $this->response('Delete Sukses', 201);
      }else{
        $this->response('Error Delete',502);
      }
  }
}

Buat sebuah folder buku pada model dan buatkan sebuah file dengan nama Buku_m.php copy kan script model sebagai berikut :

<?php
/**
*
*/
class Buku_m extends CI_Model
{

 function __construct()
 {
  parent ::__construct();
 }
 function get_books($value='')
 {
  if($value !=''){
   $this->db->where('sys_books.books_id',$value);
  }
  $this->db->select(
'sys_books.books_id,sys_books.books_title,
sys_category.book_cat_name,sys_books.books_description,
sys_books.books_year,sys_books.books_qty,
sys_publisher.publisher_name');
  $this->db->from('sys_books');
  $this->db->join('sys_category','sys_books.books_cat_id=sys_category.books_cat_id');
  $this->db->join('sys_publisher','sys_books.publisher_id =sys_publisher.publisher_id');
  $query = $this->db->get();

  if($query->num_rows() >0 ){
   return $query->result_array();
  }

 }

}

Silahkan teman-teman melakukan registrasi buku dengan tools Postman pada controller Books.php dengan metode POST seperti pada gambar berikut ini : 
 silahkan ulangi registrasi pada postman dengan nilai p1=BK002

setelah itu kita coba uji menampilkan data dengan metode GET tanpa books_id atau parameter id seperti gambar berikut dan perlu diingatkan tanpa token user tidak bisa melihat data yang di request :
 Berikut hasil apabila kita melakukan request dengan book_id atau parameter id di Postman

sampai disini kita sudah selesai membuat Layanan Restfull API untuk proses input data buku, diharapkan teman-teman bisa melakukan hal yang sama pada data Anggota jadi pada part berikutnya kita hanya membahasa masalah transaksi Pinjam dan  Juga pengembalian Buku.

oke teman-teman selamat mencoba dan sukses selalu, 
sampai jupa di part selanjutnya

Kamis, 31 Mei 2018

Membuat Layanan RestFull API Codeigniter Serial Studi Kasus Perpustakaan Part 2

Hi kembali lagi di Coding Libray,

kali ini kita akan melanjutkan pembahasan dari Part 1 untuk konfigurasi awal membuat layanan Web Services dengan Framework Codeigniter, dan sebelum masuk pada pembahasan ini di harapkan teman-teman sudah faham cara membuat atau konfigurasi terhadap project resfull

Dan perlu di ketahui oleh  teman-teman bahwa layanan berbasis web service ini tidak memiliki sekuritas namun teman-teman bisa melakukan implementasi dengan melakukan batasan-batasan akses terhadap user, misalkan dengan menmapilkan data yang khusus di lihat atau di akses oleh user, atau teman-teman bisa menambahkan session token sehingga token dapat melakukan validasi terhadap user yang melakukan akses ke layanan web services yang teman-teman buat.

Membuat Database dan Table User sebagai autentikasi keamanan layanan webservice

CREATE DATABASE perpustakaan;
USE perpustakaan;

CREATE TABLE sys_user(
    username varchar(20) PRIMARY KEY,
    password varchar(60), 
    fullname varchar(30),
    app_token varchar(60)
);

Buatkan sebuah controller dalam folder API di controller dengan nama file Auth.php
Buatlah kode seperti berikut ini :
<?php
/**
*
*/
require APPPATH . 'libraries/REST_Controller.php';
class Auth extends REST_Controller
{

 function __construct()
 {
  parent::__construct();
  $this->load->model('validation/model','mod');
 }
 function log_get(){
  $username = $this->get('u');
  $password = $this->get('key');
  $login=$this->mod->get_login_status($username, $password);
  if($login==true){
    $this->response(array('status'=>true,'error'=>'','response'=>$this->mod->get_who($username)), REST_Controller::HTTP_OK);
  }else{
   $this->response(array('status'=>false,'error'=>'Access Rescticted','response'=>"Gagal"), REST_Controller::HTTP_OK);
  }
 }
 function registrasi_post(){
  $username=$this->post('u');
  $password=$this->post('p');
  $fullname=$this->post('f');
  $cek_data=$this->mod->cek_sudahada($username);
  if($cek_data==true){
   $this->response(array('status'=>true,'error'=>'Data '. $username .' Sudah Ada'),REST_Controller::HTTP_OK);
  }else{
   $arrayName = array('username' => $username,
        'password' => sha1($password),
        'fullname' => $fullname,
                'app_token'=>sha1($password . $fullname),
    );
   $this->db->insert('sys_user',$arrayName);
   $this->response(array('status'=>true,'error'=>'Berhasil Menyimpan data '. $username),
     REST_Controller::HTTP_OK);
  }
 }

}

Buatkan sebuah folder validation pada models dan buat sebuah file dengan nama Model.php

lalu ketikkan kode berikut pada Model.php
<?php
/**
*
*/
class Model extends CI_Model
{

 function __construct()
 {
  parent ::__construct();
 }
 function get_login_status($username, $password){
  $arrayName = array('username' => $username,'password'=>sha1($password));
  $this->db->where($arrayName);
  $this->db->limit(1);
  $query=$this->db->get('sys_user');
  return($query->num_rows() >0 ) ? $query->row() : FALSE;
 }

 function cek_sudahada($id){
  $this->db->where('username',$id);
  $query=$this->db->get('sys_user');
  return($query->num_rows() >0 ) ? $query->row() : FALSE;
 }
 function get_who($id){
  $this->db->select('username,fullname,app_token');
  $this->db->where('username',$id);
  $query=$this->db->get('sys_user');
  if($query->num_rows() >0 ){
   return $query->result_array();
  }
 }
 function cek_token($token){
  $arrayName = array('app_token' => $token);
  $this->db->where($arrayName);
  $this->db->limit(1);
  $query=$this->db->get('sys_user');
  return($query->num_rows() >0 ) ? $query->row() : FALSE;
 }
}
kita akan coba menjalankan fungsi registrasi dengan metode post dengan Postman maka hasilnya pada database akan seperti :


dan Untuk melakukan pengujian login melalui layanan web Service bisa dilakukan dengan mengirimkan beberapa parameter seperti pada gambar berikut

Sampai disini kita telah berhasil membuat authentikasi, selanjutnya setiap request harus menggunakan app_token untuk parameter request layanan webservicenya,,
sampai jumpa di tutorial berikutnya,,

Membuat Layanan RestFull API Codeigniter Serial Studi Kasus Perpustakaan Part 1

Hi Sobat Coding.

Teman-teman tau gak pemanfaatan teknologi web saat ini begitu beragam tentu saja salah satunya  membuat layanan berbasis web pun semakin bertambah.
Meskipun saat ini lagi booming banget nih Aplikasi Smartphone jika di lihat dari kamera yang pas, akan tetapi teknologi tersebut masih sangat butuh untuk dapat terhubung dengan layanan berbasis web.

Nah pada kesempatan kali ini Admin akan membahas bagaimana membuat layanan web services dengan Resfull API with Framework Codeigniter.

Dan pada pembahasan kali ini kita akan menyelesaikan sebuah studi kasus Perpustakaan dari mulai melakukan Create, Read, Update, Delete Hingga kita akan membuat transaksi Peminjaman sampai dengan Pengembalian Buku, tentu saja pada saat pengembalian akan di hitung lama pinjam buku dan akan memberikan sanksi terhadap buku yang telat dikembalikan,,

Tools

Tools yang teman-teman gunakan bisa atom / sublime / vsCode / DreamWeaver terserah teman-teman nyaman dimana,

Postman untuk melakukan uji Resfull API pada layanan web services.
teman2 bila download di website  Postman langsung


dan pada kesempatan Part ini kita akan melakukan konfigurasi awal untuk membuat layanan Web Services Restfull API With Framework Codeigniter

Step 1 Download

- Project Codeigniter di www.codeigniter.com
- project Library Codeigniter-restserver ,

Step 2 Installasi

1. Extract project Codeigniter lalu ubah hasil extract menjadi perpustakaan
2 Copykan folder Application di codeigniter-restserver lalu pastekan ke project perpustakaan dan replace All folder Application

 sehingga tampilan berikut


Menjadi Seperti
3. Ubah Configurasi
  • Base Url pada application>config>config.php menjadi $config['base_url'] = 'http://localhost/perpustakaan/';
  • libraries pada application>config>autoload.php menjadi $autoload['libraries'] = array('database'); dan setting helper menjadi $autoload['helper'] = array('url');
  • dan Ubah setting database untuk username=>'root', 'password'=>'db_password jika menggunakan password', dan 'database' => 'perpustakaan' . karena kita akan membuat nama database dengan nama perpustakaan
sampai disini kita telah berhasil melakukan konfigurasi awal, kita akan lanjut pada part berikutnya yaitu membuat database, table dan membuat autentikasi sebagai Sekurity terhadap resfull yang akan kita buat,
oke sampai jumpa di part 2 membuat resfull API