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
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".
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 :
- Berapakah perhitungan buku setiap row atau setiap bukunya?
- 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,