B. Halaman Admin 1. Halaman Login Admin
3.5. Implementasi
Program yang dibuat adalah pemrograman berorientasi objek (OOP), pada tahapan ini menampilkan listing program hasil generate dari class-class yang dibuat.
1. Implementasi Pelanggan a) Class Authenticate
<?php
namespace App\Http\Controllers\api;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller;
use App\Customer;
use Validator;
class AuthController extends Controller {
public function register(Request $request) {
$validator = Validator::make($request->all(), [ 'identity_number' => 'required|numeric', 'name' => 'required',
'address' => 'required',
'telephone' => 'required|numeric',
'email' => 'required|string|email|max:255|unique:customers', 'password' => 'required|string|min:6|confirmed',
]);
if ($validator->passes()) { $customer = new Customer;
$customer->identity_number = $request->identity_number;
$customer->name = $request->name;
$customer->address = $request->address;
$customer->telephone = $request->telephone;
$customer->email = $request->email;
$customer->password = Hash::make($request->password);
$customer->save();
$result['data'] = 'Selamat Registrasi '.$customer->name.' Berhasil!';
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
} else {
$result['meta']['status'] = false;
$result['meta']['message'] = "Failed";
$result['error'] = $validator->errors();
$result['data'] = null;
}
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);;
}
public function login(Request $request){
$validator = \Validator::make($request->all(), [ 'email' => 'required|string|max:50', 'password' => 'required|string', ]);
if ($validator->passes()) { $email = $request->email;
$password = $request->password;
$customer = Customer::where('email',$email)->first();
if(count($customer) > 0){
if(Hash::check($password,$customer->password)){
$result['data']['id'] = $customer->id;
$result['data']['name'] = $customer->name;
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
} else{
$result['meta']['status'] = true;
$result['meta']['message'] = "Email dan Password tidak cocok!";
} } else{
$result['meta']['status'] = true;
$result['meta']['message'] = "Email belum terdaftar!";
} } else {
$result['meta']['status'] = false;
$result['meta']['message'] = "Failed";
$result['error'] = $validator->errors();
$result['data'] = null;
}
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);
}
public function profile(Request $request, $id) {
$customer = Customer::where('id',$id)->first();
$result['data'] = $customer;
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);
}
public function updateProfile(Request $request,$id) {
$validator = Validator::make($request->all(), [ 'identity_number' => 'required|numeric', 'name' => 'required',
'address' => 'required',
'telephone' => 'required|numeric',
'email' => 'required|unique:customers,email,' . $id ]);
if ($validator->passes()) {
$customer = Customer::findOrFail($id);
$customer->identity_number = $request->identity_number;
$customer->name = $request->name;
$customer->address = $request->address;
$customer->telephone = $request->telephone;
$customer->email = $request->email;
$customer->save();
$result['data'] = 'Selamat Perubahan Berhasil Disimpan!';
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
} else {
$result['meta']['status'] = false;
$result['meta']['message'] = "Failed";
$result['error'] = $validator->errors();
$result['data'] = null;
}
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);;
} }
b) Class Transaction
<?php
namespace App\Http\Controllers\api;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Transportation;
use App\Customer;
use App\Pengajuan proyek;
use App\Payment;
use Validator;
use Carbon\Carbon;
class TransactionController extends Controller {
public function listTour(Request $request) {
$transportation = Transportation::OrderBy('created_at')->get();
$result['data'] = $transportation;
$result['total'] = $transportation->count();
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);
}
public function showTour(Request $request, $id) {
$transportation = Transportation::where('id',$id)->first();
if ($transportation == null) {
$result['data'] = "Tidak Ada Data!";
} else {
$result['data'] = $transportation;
}
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);
}
public function storeBook(Request $request) {
$validator = Validator::make($request->all(), [ 'customer_id' => 'required|integer', 'transportation_id' => 'required|integer', 'start_date' => 'required|date',
'end_date' => 'required|date', 'price' => 'required|integer', ]);
if ($validator->passes()) {
$pengajuan proyek = new Pengajuan proyek;
$pengajuan proyek->code = $this->generateCode();
$pengajuan proyek->customer_id = $request->customer_id;
$pengajuan proyek->transportation_id = $request-
>transportation_id;
$transport = Transportation::select('rent_time')-
>where('id',$request->transportation_id)->first();
$start_date = Carbon::parse($request->start_date);
$end_date = Carbon::parse($request->end_date);
$date_diff = $start_date->diffInDays($end_date);
if ($date_diff != $transport->rent_time) { $result['meta']['status'] = false;
$result['meta']['message'] = "Lama Rental Tidak Sesuai!";
$result['error'] = $validator->errors();
$result['data'] = null;
$code = 200;
return response()->json($result, $code);
}
$pengajuan proyek->price = $request->price;
$pengajuan proyek->penalty_fee = 0;
$pengajuan proyek->price_total = $request->price;
$pengajuan proyek->start_date = $request->start_date;
$pengajuan proyek->end_date = $request->end_date;
$pengajuan proyek->save();
$result['data']['pengajuan proyek_id'] = $pengajuan proyek-
>id;
$result['data']['code'] = $pengajuan proyek->code;
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
} else {
$result['meta']['status'] = false;
$result['meta']['message'] = "Failed";
$result['error'] = $validator->errors();
$result['data'] = null;
}
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);
}
public function storePayment(Request $request) {
$validator = \Validator::make($request->all(), [ 'customer_id' => 'required|integer',
'pengajuan proyek_id' => 'required|integer', 'method' => 'required|string',
'name_of' => 'required|string', 'paid' => 'required|numeric', ]);
if ($validator->passes()) { $payment = new Payment;
$payment->customer_id = $request->customer_id;
$payment->pengajuan proyek_id = $request->pengajuan proyek_id;
$payment->method = $request->method;
$payment->name_of = $request->name_of;
$payment->paid = $request->paid;
$payment->save();
$result['data'] = $payment;
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
} else {
$result['meta']['status'] = false;
$result['meta']['message'] = "Failed";
$result['error'] = $validator->errors();
$result['data'] = null;
}
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);
}
public function generateCode() {
$last_inv = Pengajuan proyek::select('code')->latest()->first();
$last_num = substr($last_inv->code, 12);
$next_num = str_pad(ltrim($last_num, '0')+1, 4, '0', STR_PAD_LEFT);
$inv = "INV/".date('Y/m')."/".$next_num;
return $inv;
}
public function userBook($id) {
$pengajuan proyek = Pengajuan proyek::with('transportation')-
>where('customer_id',$id)->get();
if ($pengajuan proyek == null) {
$result['data'] = "Tidak Ada Data!";
} else {
$result['data'] = $pengajuan proyek;
}
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);
}
public function userPayment($id) {
$payment = Payment::with('pengajuan proyek')-
>where('customer_id',$id)->get();
if ($payment == null) {
$result['data'] = "Tidak Ada Data!";
} else {
$result['data'] = $payment;
}
$result['meta']['status'] = true;
$result['meta']['message'] = "Success";
$result['meta']['code'] = 200;
$code = 200;
return response()->json($result, $code);
} }
2. Implementasi Admin a) Class Login
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller {
use AuthenticatesUsers;
protected $redirectTo = '/home';
public function __construct() {
$this->middleware('guest')->except('logout');
} }
b) Class Transportation
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use App\Transportation;
use Session;
class TransportationController extends Controller {
public function index() {
$transportations = Transportation::orderBy('id')->paginate(30);
return view('transportations.index')-
>with(compact('transportations'));
}
public function create()
{
return view('transportations.create');
}
public function store(Request $request) {
$this->validate($request, [ 'name' => 'required|string',
'destination' => 'required|string', 'description' => 'required|string', 'rent_time' => 'required|numeric', 'price' => 'required|numeric', 'photo' => 'image|max:2048', ]);
$transportation = Transportation::create($request-
>except('photo'));
if ($request->hasFile('photo')) {
$uploaded_photo = $request->file('photo');
$extension = $uploaded_photo->getClientOriginalExtension();
$filename = md5(time()) . '.' . $extension;
$destinationPath = public_path() . DIRECTORY_SEPARATOR . 'img';
$uploaded_photo->move($destinationPath, $filename);
$transportation->photo = $filename;
}
$transportation->save();
Session::flash("flash_notification", [ "level"=>"success",
"message"=>"Berhasil menyimpan $transportation->name"
]);
return redirect()->route('transportation.index');
}
public function edit($id) {
$transportation = Transportation::findOrFail($id);
return view('transportations.edit')-
>with(compact('transportation'));
}
public function update(Request $request, $id) {
$this->validate($request, [ 'name' => 'required|string',
'destination' => 'required|string', 'description' => 'required|string',
'rent_time' => 'required|numeric', 'price' => 'required|numeric', 'photo' => 'image|max:2048', ]);
$transportation = Transportation::findOrFail($id);
$transportation->update($request->all());
if ($request->hasFile('photo')) { $filename = null;
$uploaded_photo = $request->file('photo');
$extension = $uploaded_photo->getClientOriginalExtension();
$filename = md5(time()) . '.' . $extension;
$destinationPath = public_path() . DIRECTORY_SEPARATOR . 'img';
$uploaded_photo->move($destinationPath, $filename);
if ($transportation->photo) {
$old_photo = $transportation->photo;
$filepath = public_path() . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . $transportation->photo;
try {
File::delete($filepath);
} catch (FileNotFoundException $e) { }
}
$transportation->photo = $filename;
$transportation->save();
}
Session::flash("flash_notification", [ "level"=>"success",
"message"=>"Berhasil mengubah $transportation->name"
]);
return redirect()->route('transportation.index');
}
public function destroy($id) {
$transportation = Transportation::findOrFail($id);
if ($transportation->photo) {
$old_photo = $transportation->photo;
$filepath = public_path() . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . $transportation->photo;
try {
File::delete($filepath);
} catch (FileNotFoundException $e) { }
}
$transportation->delete();
Session::flash("flash_notification", [ "level"=>"success",
"message"=>"Berhasil menghapus data"
]);
return redirect()->route('transportation.index');
} }
c) Class Customer
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Customer;
use Session;
class CustomerController extends Controller {
public function index() {
$customers = Customer::paginate(20);
return view('customers.index')->with(compact('customers'));
}
public function edit($id) {
$customer = Customer::findOrFail($id);
return view('customers.edit')->with(compact('customer'));
}
public function update(Request $request, $id) {
$customer = Customer::findOrFail($id);
$this->validate($request, [
'identity_number' => 'required|numeric', 'name' => 'required',
'address' => 'required',
'telephone' => 'required|numeric',
'email' => 'required|unique:customers,email,' . $customer->id ]);
$customer->identity_number = $request->identity_number;
$customer->name = $request->name;
$customer->address = $request->address;
$customer->telephone = $request->telephone;
$customer->email = $request->email;
$customer->save();
Session::flash("flash_notification", [ "level"=>"success",
"message"=>"Berhasil mengedit data"
]);
return redirect()->route('customer.index');
}
public function destroy($id) {
$customer = Customer::findOrFail($id);
$customer->delete();
Session::flash("flash_notification", [ "level"=>"success",
"message"=>"Berhasil menghapus data"
]);
return redirect()->route('customer.index');
} }
d) Class Pengajuan proyek
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Pengajuan proyek;
use Session;
class Pengajuan proyekController extends Controller {
public function index() {
$pengajuan proyeks = Pengajuan proyek::paginate(20);
return view('pengajuan proyeks.index')->with(compact('pengajuan proyeks'));
}
public function show($id) {
$pengajuan proyek = Pengajuan proyek::findOrFail($id);
return view('pengajuan proyeks.show')->with(compact('pengajuan proyek'));
}
public function edit($id) {
$pengajuan proyek = Pengajuan proyek::findOrFail($id);
return view('pengajuan proyeks.edit')->with(compact('pengajuan proyek'));
}
public function update(Request $request, $id) {
$this->validate($request, [ 'status' => 'required|numeric', ]);
$pengajuan proyek = Pengajuan proyek::findOrFail($id);
$pengajuan proyek->penalty_fee = $request->penalty_fee;
$pengajuan proyek->price_total = $request->price_total;
$pengajuan proyek->status = $request->status;
$pengajuan proyek->save();
Session::flash("flash_notification", [ "level"=>"success",
"message"=>"Berhasil mengedit data"
]);
return redirect()->route('pengajuan proyek.index');
} }
e) Class Payment
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Payment;
use Session;
class PaymentController extends Controller {
public function index() {
$payments = Payment::paginate(30);
return view('payments.index')->with(compact('payments'));
}
public function show($id) {
$payment = Payment::findOrFail($id);
return view('payments.show')->with(compact('payment'));
} }
3.6. Support
Perangkat yang digunakan untuk pemasangan sistem yang telah berhasil diujikan, serta disesuaikan dengan aplikasi yang dipilih oleh penulis.
1. Publikasi
a. Biaya Publikasi
1) Biaya Registrasi Play Store Android : $25 (Rp. 260.000) 2) Pendaftaran Domain Web Admin : Rp. 88.000 / Tahun 3) Shared Hosting Linux (cPanel/WHM) : Rp. 238.800 / Tahun b. Jadwal Publikasi
No. Kegiatan Publikasi Jadwal
Minggu 1 Minggu 2 Minggu 3 Minggu 4 1 Bayar Hosting &
Play Store.
2 Upload Hosting &
Database.
3 Rilis Aplikasi Android & Iklan.
2. Spesifikasi Hardware dan Software
Kebutuhan hardware dan software standard untuk dapat menjalankan sistem.
a. Kebutuhan Pelanggan
Kebutuhan Smartphone Keterangan
Operating System Android OS, v5.1.1 (Lollipop)
CPU Exynos 3475 Quad-Core 1.3 GHz Cortex-A7, GPU Mali-T720