Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Tuesday, 21 January 2020

Membuat Management User Akses

Pada postingan kali ini saya akan sharing contoh pembuatan management user akses pada sebuah system / aplikasi yang kita buat, pada contoh ini ada beberapa master data yang dibutuhkan yaitu : 
- Master data user
master data user ini berisi user login (username dan password)  
- Master data role
master data ini berisi role, dimana role ini berfungsi untuk mengatur menu apa saja yang bisa di akses didalam role ini, dan nanti role ini akan di assign ke userid tertentu. 
- Master data menu
master data menu ini berisi menu-menu yang ada didalam aplikasi
- Master data grouping menu
master data grouping ini berfungsi untuk mengelompokkan menu ini masuk group apa, satu menu hanya boleh dimasukkan kedalam satu group.
- Data Assignment User to Role
data ini berisi user dan role, role apa saja yang diberikan kepada user terdapat di data ini .
- Data Assignment Menu to Role
data ini berisi menu apa saja yang ada didalam sebuah role
- Data App Assignment Menu to Menu Group 
data untuk pengelompokkan menu, misalkan menu create PO dan create PR masuk group Procurement, terus menu Terima Barang masuk ke group Logistic dst.

pada contoh ini adalah aplikasi berbasis web yang dibuat dengan salah satu framework javascript yaitu SAPUI5 mungkin terdengar asing ya :D, untuk backend menggunakan Codeignter dan database menggunakan MySQL.

ok lansung saja, untuk tampilan loginnya kurang lebih seperti gambar dibawah, disini saya login menggunakan user yang memiliki hak akses untuk melakukan management user.


halaman utama setelah login 




Create user, pilih menu create user lalu klik execute lalu akan muncul halaman create user seperti berikut : 

setelah memasukkan data user, klik tombol create yang ada dibawah, setelah klik create akan muncul informasi seperti berikut.



create role
setelah create user, selanjutnya membuat role, pada menu pilih create role lalu klik execute


isi nama role dan deskripsi lalu klik create, untuk melihat list role klik tombok display role



selanjutnya coba login dengan user baru yang sudah dibuat tadi : USER1


 
belum ada menu yang muncul, karena user blum di assign role.
List Menu
berikut adalah daftar menu yang ada didalam aplikasi yang sudah dibuat
List Menu Grouping


Master Data Menu Grouping



List Menu Grouping Assignment



Assign User Role
pilih menu Assign User to Role lalu klik execute, akan masuk ke halaman assign user to role seperti berikut :
Klik Assign dan lihat hasilnya dengan klik tombol Display user role,



Assign App Menu to Role
ini berfungsi untuk menempelkan menu kedalam sebuah role, didalam satu role bisa ditempelkan lebih dari satu menu, dan setiap user yang diberikan role tersebut akan dapat mengakses semua menu yang ada didalam role tersebut.

  
setelah itu coba login lagi dengan USER1 tadi, otomatis akan muncul menu create PR di halaman utama USER1



selanjutnya coba tambahkan menu baru kedalam role ADMROLE, 

   

ada 2 menu yang ditambahkan kedalam role ADMROLE, yaitu menu create PO dan menu Terima Barang, dan di halaman utama USER1 akan muncul seperti berikut :


kurang lebih seperti itulah salah satu cara management user akses pada sebuah aplikasi, dengan cara seperti ini bisa lebih flexible untuk mengatur akses user dalam sebuah aplikasi yang kita buat. 

sekian sharing kali ini semoga membarikan gambaran cara membuat management user akses dan semoga bermanfaat.

:D 

Wednesday, 21 August 2019

Laravel - Sistem Informasi Perpustakaan Sederhana Laravel

Postingan kali saya akan sharing membuat aplikasi perpustakaan sederhana menggunakan laravel 5.8, dimana terdapan menu Anggota, Kategori Buku, Daftar Buku dan Transaksi (Peminjaman/Pengembalian Buku).

ok langsung saja kita buat project laravel dengan nama perpus :

composer create-project --prefer-dist laravel/laravel perpus

setelah create project laravel-nya selesai kita buat database melalui localhost/phpmyadmin dengan nama db_perpus, lalu kita buka project laravel dengan code editor disini saya menggunakan visual studio code.

Setelah project kita buka dengan code editor, pertama kita atur koneksi database yang ada di file .env, kita rubah menjadi seperti berikut :



note : untuk db_username dan db_password di sesuiakan dengan configurasi masing-masing.

Selanjutnya kita tambahkan 4 buah data migration yaitu : table_anggota, table_kategori, table_buku, table_transaksi, kita buka terminal dan jalankan command berikut : 

php artisan make:migration create_table_anggota
php artisan make:migration create_table_buku
php artisan make:migration create_table_kategori
php artisan make:migration create_table_transaksi

lalu kita edit masing-masing migration seperti berikut :

migration table_anggota
public function up()
{
Schema::create('table_anggota', function (Blueprint $table) {
$table->bigIncrements('id_anggota');
$table->string('nama_anggota',50);
$table->string('jenis_kelamin',50);
$table->string('alamat');
$table->string('email',50);
$table->string('no_telp',20);
$table->timestamps();
});
}

migration table_buku
public function up()
{
Schema::create('table_buku', function (Blueprint $table) {
$table->bigIncrements('id_buku');
$table->string('judul_buku', 40);
$table->string('deskripsi', 100);
$table->integer('kategori');
$table->string('cover_img', 50);
$table->timestamps();
});
}

migration table_kategori
public function up()
{
Schema::create('table_kategori', function (Blueprint $table) {
$table->bigIncrements('kategori');
$table->string('deskripsi');
$table->timestamps();
});
}

migration table_transaksi
public function up()
{
Schema::create('table_transaksi', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('id_anggota');
$table->integer('id_buku');
$table->date('tgl_pinjam');
$table->date('tgl_kembali');
$table->timestamps();
});
}

Setelah semua migration dibuat seperti diatas, selanjutnya kita lakukan migration tapi sebelum melakukan migration kita buka file AppServiceProvider.php yang ada di folder app/Providers dan kita rubah isinya menjadi seperti berikut :
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}
}

tujuan kita merubah file AppServiceProvider.php ini adalah agar tidak terjadi error ketikan kita menjalankan perintah migrate, jalankan command berikut melalui terminal untuk melakukan migrate:

php artisan migrate

jika sudah, kita buka phpmyadmin lagi dan kita buka database yang sudah kita buat tadi, yaitu db_perpus maka akan terlihat table-table yang sudah kita buat di migration tadi seperti berikut :



Selanjutnya kita buka project laravel lagi, kita tambahkan 4 buah model yaitu : Anggota, Buku, Kategori, dan Transaksi. untuk membuat model kita jalankan command berikut  :

php artisan make:model Anggota
php artisan make:model Buku
php artisan make:model Kategori
php artisan make:model Transaksi

lalu kita edit masing-masing model menjadi seperti berikut :

Model Aggota
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Anggota extends Model
{
protected $table = 'table_anggota';
protected $fillable = ['nama_anggota','jenis_kelamin','alamat', 'email','no_telp'];
}
Model Buku
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Buku extends Model
{
protected $table = 'table_buku';
protected $fillable = ['judul_buku','deksripsi','kategori','cover_img'];
}
Model Kategori
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Kategori extends Model
{
protected $table = 'table_kategori';
protected $fillable = ['deskripsi'];
}
Model Transaksi
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Transaksi extends Model
{
protected $table = 'table_transaksi';
protected $fillable = ['id_anggota', 'id_buku', 'tgl_pinjam'];
}

Selanjutnya kita akan membuat view, pertama kita tambahkan 5 folder baru didalam folder resources/views yaitu folder anggota, buku, kategori, transaksi dan layout



kita buat file main.blade.php didalam folder layout

<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1,
shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js">
</script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js">
</script>
<title>@yield('title')</title>
</head>
<body>
<div class="container">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="/">HOME</a>
<button class="navbar-toggler" type="button"
data-toggle="collapse" data-target="#navbarNavAltMarkup"
aria-controls="navbarNavAltMarkup" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-item nav-link" href="/anggota">Anggota</a>
<a class="nav-item nav-link" href="/kategori">Kategori Buku</a>
<a class="nav-item nav-link" href="/buku">Daftar Buku</a>
<a class="nav-item nav-link" href="/transaksi">Transaksi</a>
</div>
</div>
</nav>
</div>
@yield('content')
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
</body>
</html>

dan didalam folder views kita buat file inde.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-4">Selamat Datang!</h1>
<p class="lead">Ini adalah contoh sistem informasi
perpustakaan sederhana dengan laravel 5.8</p>
<hr class="my-4">
</div>
</div>
@endsection

didalam folder anggota kita buat dua view yaitu index.blade.php dan create.blade.php

index.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
@if(session('msg'))
<div class="alert alert-success alert-dismissible fade show mt-2"
role="alert">
{{session('msg')}}
<button type="button" class="close" data-dismiss="alert"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
@endif
<h1 class="display-6">Data Anggota</h1>
<hr class="my-4">
<a href="anggota/create" class="btn btn-primary mb-1">
Tambah Anggota</a>
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">#</th>
<th scope="col">Nama</th>
<th scope="col">Alamat</th>
<th scope="col">Jenis Kelamin</th>
<th scope="col">Email</th>
<th scope="col">No. HP</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($anggota as $ang)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $ang->nama_anggota }}</td>
<td>{{ $ang->alamat }}</td>
<td>{{ $ang->jenis_kelamin }}</td>
<td>{{ $ang->email }}</td>
<td>{{ $ang->no_telp }}</td>
<td>
<a href="" class="badge badge-primary">Edit</a>
<a href="" class="badge badge-danger">Hapus</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection

create.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Tambah Data Anggota</h1>
<hr class="my-4">
<form action="/anggota" method="POST">
@csrf
<div class="form-group">
<label for="nama">Nama Anggota</label>
<input type="text" class="form-control" id="nama"
name="nama_anggota" placeholder="Nama Anggota"
value="{{ old('nama_anggota') }}">
</div>
<div class="form-group">
<label for="alamat">Alamat</label>
<input type="text" class="form-control" id="alamat"
name="alamat" placeholder="Alamat Anggota"
value="{{ old('alamat') }}">
</div>
<div class="form-group">
<label for="jenis_kelamin">Jenis Kelamin</label>
<select class="form-control" id="jenis_kelamin"
name="jenis_kelamin">
<option value="laki-laki">Laki-laki</option>
<option value="perempuan">Perempuan</option>
</select>
</div>
<div class="form-group">
<label for="email">Alamat Email</label>
<input type="email" class="form-control" id="email"
name="email" aria-describedby="emailHelp"
placeholder="Enter email" value="{{ old('email') }}">
</div>
<div class="form-group">
<label for="no_telp">No. HP</label>
<input type="text" class="form-control" id="no_telp"
name="no_telp" placeholder="NO. HP"
value="{{ old('no_telp') }}">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
@endsection


di folder buku kita buat juga dua view index.blade.php dan create.blade.php

buku-> create.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Tambah Data Buku</h1>
<hr class="my-4">
<form action="/buku" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="judul_buku">Judul Buku</label>
<input type="text" class="form-control" name="judul_buku"
placeholder="Judul Buku" value="{{ old('judul_buku') }}">
</div>
<div class="form-group">
<label for="deskripsi">Deskripsi Buku</label>
<input type="text" class="form-control" name="deskripsi"
placeholder="Deskripsi Buku" value="{{ old('deskripsi') }}">
</div>
<div class="form-group">
<label for="kategori">Kategori Buku</label>
<select class="form-control" id="kategori" name="kategori">
@foreach ($kategori as $kat)
<option value="{{ $kat->kategori }}">
{{ $kat->deskripsi }}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="cover_img">Cover Buku</label>
<input type="file" name="cover_img">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
@endsection

buku-> index.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
@if(session('msg'))
<div class="alert alert-success alert-dismissible fade show mt-2"
role="alert">
{{session('msg')}}
<button type="button" class="close" data-dismiss="alert"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
@endif
<h1 class="display-6">Data Buku</h1>
<hr class="my-4">
<a href="buku/create" class="btn btn-primary mb-1">Tambah Buku</a>
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">#</th>
<th scope="col">Judul Buku</th>
<th scope="col">Deskripsi Buku</th>
<th scope="col">Kategori Buku</th>
<th scope="col">Cover Buku</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($buku as $buku)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $buku->judul_buku }}</td>
<td>{{ $buku->deskripsi }}</td>
<td>{{ $buku->kategori }}</td>
<td><img src='image/{{ $buku->cover_img }}'
style='width:80px; height:50px;'></td>
<td>
<a href="buku/edit/{{ $buku->id_buku }}"
class="badge badge-primary">Edit</a>
<a href="buku/destroy/{{ $buku->id_buku }}"
class="badge badge-danger">Hapus</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection

di folder kategori juga kita buat view index.blade.php dan create.blade.php

kategori->index.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
@if(session('msg'))
<div class="alert alert-success alert-dismissible fade show mt-2"
role="alert">
{{session('msg')}}
<button type="button" class="close" data-dismiss="alert"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
@endif
<h1 class="display-6">Kategori Buku</h1>
<hr class="my-4">
<a href="kategori/create" class="btn btn-primary mb-1">
Tambah Kategori Buku</a>
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">#</th>
<th scope="col">Kategori</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($kategori as $kat)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $kat->deskripsi }}</td>
<td>
<a href="" class="badge badge-primary">Edit</a>
<a href="" class="badge badge-danger">Hapus</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection
kategori->create.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Tambah Kategori Buku</h1>
<hr class="my-4">
<form action="/kategori" method="POST">
@csrf
<div class="form-group">
<label for="deskripsi">Deskripsi</label>
<input type="text" class="form-control" id="deskripsi"
name="deskripsi" placeholder="Deskripsi"
value="{{ old('deskripsi') }}">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
@endsection

dan di folder transaksi kita buat 3 view yaitu : index.blade.php, pinjam.blade.php dan kembali.blade.php

transaksi->index.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
@if(session('msg'))
<div class="alert alert-success alert-dismissible fade show mt-2"
role="alert">
{{session('msg')}}
<button type="button" class="close" data-dismiss="alert"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
@endif
<h1 class="display-6">Data Peminjaman Buku</h1>
<hr class="my-4">
<a href="transaksi/create" class="btn btn-primary mb-1">
Peminjaman Buku</a>
<!-- <a href="buku/kembali" class="btn btn-primary mb-1">Pengembalian Buku</a> -->
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">No. Peminjaman</th>
<th scope="col">Judul Buku</th>
<th scope="col">Deskripsi Buku</th>
<th scope="col">Kategori Buku</th>
<th scope="col">Tanggal Pinjam</th>
<th scope="col">Tanggal Kembali</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($transaksi as $trans)
<tr>
<td>{{ $trans->id }}</td>
<td>{{ $trans->judul_buku }}</td>
<td>{{ $trans->deskripsi }}</td>
<td>{{ $trans->kategori }}</td>
<td>{{ $trans->tgl_pinjam }}</td>
<td>{{ $trans->tgl_kembali }}</td>
<td>
@if($trans->tgl_kembali == null)
<a href="transaksi/edit/{{ $trans->id }}"
class="badge badge-primary">Pengembalian</a>
@else
<p class="badge badge-success">Dikembalikan</p>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endsection

transaksi->pinjam.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Pinjam Buku</h1>
<hr class="my-4">
<form action="/transaksi" method="POST" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="type_transaksi">Type Transaksi</label>
<select class="form-control" id="type_transaksi"
name="type_transaksi">
<option value="pinjam">Pinjam</option>
</select>
</div>
<div class="form-group">
<label for="id_buku">Kode Buku</label>
<input type="text" class="form-control" id="id_buku"
name="id_buku" placeholder="ID Buku" data-url="{{ url('/') }}">
</div>
<div class="form-group">
<label for="judul_buku">Judul Buku</label>
<input type="text" class="form-control" id="judul_buku"
name="judul_buku" placeholder="Judul Buku" readonly="true">
</div>
<div class="form-group">
<label for="deskripsi">Deskripsi Buku</label>
<input type="text" class="form-control" id="deskripsi"
name="deskripsi" placeholder="Deskripsi Buku" readonly="true">
</div>
<div class="form-group">
<label for="kategori">Kategori Buku</label>
<input type="text" class="form-control" id="kategori"
name="kategori" placeholder="Kategori Buku" readonly="true">
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6">
<label for="kategori">Tanggal Pinjam</label>
<input type="date" class="form-control"
name="tgl_pinjam">
</div>
<div class="col-sm-6">
<label for="kategori">Tanggal Kembali</label>
<input type="date" class="form-control"
name="tgl_kembali" readonly="true">
</div>
</div>
</div>
<div class="form-group">
<label for="id_anggota">ID Anggota Peminjam</label>
<input type="text" class="form-control" id="id_anggota"
name="id_anggota" placeholder="ID Anggota" data-url="{{ url('/') }}">
</div>
<div class="form-group">
<label for="nama_anggota">Nama Peminjam</label>
<input type="text" class="form-control" id="nama_anggota"
name="nama_anggota" readonly="true">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
<script>
$(function(){
$('#id_buku').on('change', function(e){
let id_buku = $('#id_buku').val();
console.log(id_buku);
let url = $(this).data('url')+'/transaksi/showBuku/'+id_buku;
console.log(url);
getBuku(url);
})
$('#id_anggota').on('change', function(e){
let id_anggota = $('#id_anggota').val();
console.log(id_anggota);
let url = $(this).data('url')+'/transaksi/getAnggota/'+id_anggota;
console.log(url);
getAnggota(url);
})
})
function getBuku(url){
$.getJSON(url, function(data){
if(data === false){
alert('Buku tidak ditemukan!');
$('#id_buku').val("");
}else{
$('#judul_buku').val(data[0].judul_buku);
$('#deskripsi').val(data[0].deskripsi);
$('#kategori').val(data[0].kategori);
}
});
}
function getAnggota(url){
$.getJSON(url, function(data){
if(data === false){
alert('Data anggota tidak ditemukan!');
$('#id_anggota').val("");
$('#nama_anggota').val("");
}else{
$('#nama_anggota').val(data.nama_anggota);
}
});
}
</script>
@endsection

transaksi->kembali.blade.php
@extends('layout.main')
@section('title', 'Laravel - SI Perpustakaan')
@section('content')
<div class="container">
<div class="jumbotron">
<h1 class="display-6">Pinjam Buku</h1>
<hr class="my-4">
<form
action="{{ action('TransaksiController@update', $pinjaman->id) }}"
method="POST">
@csrf
<div class="form-group">
<label for="type_transaksi">Type Transaksi</label>
<select class="form-control" id="type_transaksi"
name="type_transaksi">
<option value="kembali">Kembali</option>
</select>
</div>
<div class="form-group">
<label for="id_buku">Kode Buku</label>
<input type="text" class="form-control" id="id_buku"
name="id_buku" value="{{ $pinjaman->id_buku }}" readonly="true">
</div>
<div class="form-group">
<label for="judul_buku">Judul Buku</label>
<input type="text" class="form-control" id="judul_buku"
name="judul_buku" value="{{ $pinjaman->judul_buku }}" readonly="true">
</div>
<div class="form-group">
<label for="deskripsi">Deskripsi Buku</label>
<input type="text" class="form-control" id="deskripsi"
name="deskripsi" value="{{ $pinjaman->deskripsi }}" readonly="true">
</div>
<div class="form-group">
<label for="kategori">Kategori Buku</label>
<input type="text" class="form-control" id="kategori"
name="kategori" value="{{ $pinjaman->kategori }}" readonly="true">
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6">
<label for="kategori">Tanggal Pinjam</label>
<input type="date" class="form-control"
name="tgl_pinjam" value="{{ $pinjaman->tgl_pinjam }}" readonly="true">
</div>
<div class="col-sm-6">
<label for="kategori">Tanggal Kembali</label>
<input type="date" class="form-control"
name="tgl_kembali">
</div>
</div>
</div>
<div class="form-group">
<label for="id_anggota">ID Anggota Peminjam</label>
<input type="text" class="form-control" id="id_anggota"
name="id_anggota" value="{{ $pinjaman->id_anggota }}" readonly="true">
</div>
<div class="form-group">
<label for="nama_anggota">Nama Peminjam</label>
<input type="text" class="form-control" id="nama_anggota"
name="nama_anggota" readonly="true" value="{{ $pinjaman->nama_anggota }}">
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
<script>
$(function(){
$('#id_buku').on('change', function(e){
let id_buku = $('#id_buku').val();
console.log(id_buku);
let url = $(this).data('url')+'/transaksi/showBuku/'+id_buku;
console.log(url);
getBuku(url);
})
$('#id_anggota').on('change', function(e){
let id_anggota = $('#id_anggota').val();
console.log(id_anggota);
let url = $(this).data('url')+'/transaksi/getAnggota/'+id_anggota;
console.log(url);
getAnggota(url);
})
})
function getBuku(url){
$.getJSON(url, function(data){
if(data === false){
alert('Buku tidak ditemukan!');
$('#id_buku').val("");
}else{
$('#judul_buku').val(data[0].judul_buku);
$('#deskripsi').val(data[0].deskripsi);
$('#kategori').val(data[0].kategori);
}
});
}
function getAnggota(url){
$.getJSON(url, function(data){
if(data === false){
alert('Data anggota tidak ditemukan!');
$('#id_anggota').val("");
$('#nama_anggota').val("");
}else{
$('#nama_anggota').val(data.nama_anggota);
}
});
}
</script>
@endsection

selanjutnya kita akan menambahkan controller, untuk membuat controller jalankan command berikut :

php artisan make:controller AnggotaController -r
php artisan make:controller BukuController -r
php artisan make:controller KategoriController -r
php artisan make:controller TransaksiController -r

dan kita update masing-masing controller menjadi seperti berikut :

AnggotaController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Anggota;
class AnggotaController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$anggota = Anggota::all();
return view('anggota.index', compact('anggota'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('anggota.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
Anggota::create($request->all());
return redirect('anggota')->with('msg','Data Berhasil di Simpan');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

BukuController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Buku;
use App\Kategori;
class BukuController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$buku = DB::table('table_buku')
->join('table_kategori', 'table_buku.kategori', '=', 'table_kategori.kategori')
->select('table_buku.id_buku','table_buku.judul_buku', 'table_buku.deskripsi',
'table_kategori.deskripsi as kategori', 'table_buku.cover_img')
->get();
// return $buku;
return view('buku.index', compact('buku'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$kategori = Kategori::all();
return view('buku.create', compact('kategori'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'judul_buku' => 'required',
'deskripsi' => 'required',
]);
$file = $request->file('cover_img');
$buku = new Buku;
$buku->judul_buku = $request->judul_buku;
$buku->deskripsi = $request->deskripsi;
$buku->kategori = $request->kategori;
$buku->cover_img = $file->getClientOriginalName();
$tujuan_upload = 'image';
     $file->move($tujuan_upload,$file->getClientOriginalName());
$buku->save();
return redirect('buku')->with('msg','Data Berhasil di Simpan');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$buku = Buku::where('id_buku', $id)->first();
return $buku;
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

KategoriController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Kategori;
class KategoriController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$kategori = Kategori::all();
// return $kategori;
// return view('kategori.index', compact('kategori'));
return view('kategori/index', compact('kategori'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('kategori.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
Kategori::create($request->all());
return redirect('kategori')->with('msg','Data Berhasil di Simpan');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

TransaksiController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Buku;
use App\Kategori;
use App\Anggota;
use App\Transaksi;
class TransaksiController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$transaksi = DB::table('table_transaksi')
->join('table_buku', 'table_buku.id_buku', '=', 'table_transaksi.id_buku')
->join('table_kategori', 'table_kategori.kategori', '=', 'table_buku.kategori')
->join('table_anggota', 'table_transaksi.id_anggota', '=', 'table_anggota.id_anggota')
->select('table_transaksi.id','table_anggota.nama_anggota','table_buku.id_buku',
'table_buku.judul_buku',
'table_buku.deskripsi', 'table_kategori.deskripsi as kategori',
'table_transaksi.tgl_pinjam','table_transaksi.tgl_kembali')
->get();
// return $transaksi;
return view('transaksi.index', compact('transaksi'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('transaksi.pinjam');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
if(Anggota::where('id_anggota', $request->id_anggota)->count() > 0){
if(Buku::where('id_buku', $request->id_buku)->count() > 0){
// return $request;
$transaksi = new Transaksi;
// $transaksi->type_transaksi = $request->type_transaksi;
$transaksi->id_anggota = $request->id_anggota;
$transaksi->id_buku = $request->id_buku;
if($request->type_transaksi == 'pinjam'){
$transaksi->tgl_pinjam = $request->tgl_pinjam;
$transaksi->tgl_kembali = null;
$transaksi->save();
return redirect('transaksi')->with('msg','Data Berhasil di Simpan');
}else{
$transaksi->tgl_kembali = $request->tgl_kembali;
}
// return $transaksi;
}else{
return json_encode('Buku tidak ditemukan!');
}
}else{
return json_encode('Anggota tidak ditemukan');
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$pinjaman = DB::table('table_transaksi')
->join('table_buku', 'table_buku.id_buku', '=', 'table_transaksi.id_buku')
->join('table_anggota', 'table_anggota.id_anggota', '=', 'table_transaksi.id_anggota')
->join('table_kategori', 'table_kategori.kategori', '=', 'table_buku.kategori')
->select('table_transaksi.id','table_transaksi.id_anggota', 'table_anggota.nama_anggota',
'table_buku.id_buku', 'table_buku.judul_buku','table_buku.deskripsi',
'table_kategori.deskripsi as kategori','table_transaksi.tgl_pinjam',
'table_transaksi.tgl_kembali')
->where('table_transaksi.id', '=', $id)->first();
return json_encode($pinjaman);
}
public function showBuku($id)
{
// $buku = Buku::where('id_buku', $id)->first();
if(Buku::where('id_buku', $id)->count() > 0){
$buku = DB::table('table_buku')
->join('table_kategori', 'table_buku.kategori', '=', 'table_kategori.kategori')
->select('table_buku.id_buku','table_buku.judul_buku', 'table_buku.deskripsi',
'table_kategori.deskripsi as kategori', 'table_buku.cover_img')
->where('table_buku.id_buku', '=', $id)
->get();
return $buku;
}else{
return 'false';
}
}
public function getAnggota($id)
{
// $buku = Buku::where('id_buku', $id)->first();
$anggota = Anggota::where('id_anggota', $id)->first();
// return $anggota;
if($anggota === null){
return 'false';
}else{
return $anggota;
}
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$pinjaman = DB::table('table_transaksi')
->join('table_buku', 'table_buku.id_buku', '=', 'table_transaksi.id_buku')
->join('table_anggota', 'table_anggota.id_anggota', '=', 'table_transaksi.id_anggota')
->join('table_kategori', 'table_kategori.kategori', '=', 'table_buku.kategori')
->select('table_transaksi.id','table_transaksi.id_anggota', 'table_anggota.nama_anggota',
'table_buku.id_buku', 'table_buku.judul_buku','table_buku.deskripsi',
'table_kategori.deskripsi as kategori','table_transaksi.tgl_pinjam',
'table_transaksi.tgl_kembali')
->where('table_transaksi.id', '=', $id)->first();
return view('transaksi.kembali', compact('pinjaman'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
Transaksi::where('id',$id)
->update(['tgl_kembali' => $request->tgl_kembali]);
return redirect('transaksi')->with('msg','Buku Telah dikembalikan');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

Terakhir kita tambahkan Route didalam folder Routes/web.php

<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('index');
});
Route::resource('anggota','AnggotaController');
Route::resource('kategori','KategoriController');
Route::resource('buku','BukuController');
Route::resource('transaksi','TransaksiController');
Route::get('transaksi/edit/{id}', 'TransaksiController@edit');
Route::get('transaksi/showBuku/{id}', 'TransaksiController@showBuku');
Route::get('transaksi/getAnggota/{id}', 'TransaksiController@getAnggota');
Route::post('/transaksi/update/{id}', 'TransaksiController@update');


Jika sudah kita coba jalankan dan lihat hasilnya di browser, kita jalankan development server bawaan laravel dengan menjalnakan command berikut :

php artisan serve



kita jalankan localhost:8000 di browser dan hasilnya seperti berikut :











contoh program ini masih sangat sederhana agar mudah di fahami, silahkan dikembangkan lagi untuk menambahkan fasilitan edit data dan login.
Demikian sharing kali ini, semoga bermanfaat... :D

Belajar SAP ABAP RAP

  Belajar SAP ABAP RAP: Pengenalan dan Konsep Dasar Restful ABAP Programming Model Kalau kamu seorang ABAPer yang mulai terjun ke dunia SAP...