• Tidak ada hasil yang ditemukan

Implementasi

Dalam dokumen BAB III ANALISA DAN PERANCANGAN APLIKASI (Halaman 59-72)

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

Dalam dokumen BAB III ANALISA DAN PERANCANGAN APLIKASI (Halaman 59-72)

Dokumen terkait