B AB IV RANCANGAN SISTEM DAN PROGRAM USULAN · 37 B AB IV RANCANGAN SISTEM DAN PROGRAM USULAN 4.1...

Post on 08-Sep-2019

20 views 0 download

Transcript of B AB IV RANCANGAN SISTEM DAN PROGRAM USULAN · 37 B AB IV RANCANGAN SISTEM DAN PROGRAM USULAN 4.1...

37

BAB IV

RANCANGAN SISTEM DAN PROGRAM USULAN

4.1 Analisis Kebutuhan Software

A. Tahapan Analisis

Sistem informasi yang berjalan pada suatu perusahaan jika dikerjakan

secara manual akan menghambat beberapa proses, hal yang paling terasa

adalah proses laporan dan proses penyimpanan data, data double dan sistem

laporan yang lambat akan mempengaruhi produktifitas perusahaan, oleh

karena itu PT. Visionet Data Internasional membutuhkan sistem informasi

yang berguna untuk mempercepat proses-proses yang menghambat sistem

operasional. Berikut ini adalah beberapa spesifikasi kebutuhan (system

requirement) dari operation system yang dibutuhkan PT. Visionet Data

Internasional.

A1. Admin dapat mengelola seluruh data merchant (toko pengguna mesin

edc).

A2. Admin dapat mengelola seluruh data service point.

A3. Admin dapat mengelola data seluruh teknisi dan service point leader.

A4. Admin dapat mengelola data pelaporan dari pihak mandiri.

A.5. Service point leader dapat mengelola pekerjaan.

A.6 Service point leader dapat mengelola laporan secara langsung.

A.7 Teknisi dapat mengelola pekerjaan secara langsung.

38

B. Use Case Diagram

1. Use Case Diagram Admin Monitoring

Gambar IV.1 : Use Case Diagram Admin Monitoring

Tabel IV.1 : Deskripsi use case diagram halaman admin monitoring

Use Case Name Admin Monitoring

Requirements A1, A2, A3, A4

Goal Admin monitoring dapat mengelola data merchant, service point, user, services, dan mencetak laporan hasil services.

Pre-conditions User telah terdaftar.

Post-conditions -

Failed end condition User tidak terdaftar sebagai admin monitoring.

Primary Actors Admin monitoring

39

Main Flow / Basic Path 1. User login sebagai admin monitoring.

2. System menampilkan menu untuk mengelola data merchant, service point, user, service, dan report

3. User dapat melakukan penambahan perubahan, dan menghapus data merchant, service point, user, services, dan report.

4. User dapat mencetak laporan hasil pekerjaan engineer.

5. User memberikan pekerjaan sesuai dengan service point area.

Invariant A: A8. User melakukan pencarian data.

2. Use Case Diagram Service Point Leader

Gambar IV.2 : Use Case Diagram Service Point Leader

40

Tabel IV.2 : Deskripsi use case diagram halaman service point leader

Use Case Name Service Point Leader

Requirements A5, A6

Goal Service point leader dapat memberikan pekerjaan kepada engineer, mengecek hasil kunjungan engineer.

Pre-conditions User telah terdaftar sebagai service point leader

Post-conditions -

Failed end condition User tidak terdaftar sebagai service point leader.

Primary Actors4. Service Point Leader

Main Flow / Basic Path 1. User login sebagai service point leader.

2. System menampilkan data merchant yang melaporkan kerusakan mesin, dan dapat memberikan pekerjaan kepada engineer yang akan melakukan kunjungan kemerchant. .

3. User mengecek dan mencetak work order¸.

Invariant A: A8. User melakukan pencarian data.

3. Use Case Diagram Service Point Engineer

Gambar IV.3 : Use Case Diagram Engineer

41

Tabel IV.3 : Deskripsi use case diagram halaman engineer

Use Case Name Engineer

Requirements A7

Goal Engineer dapat melaporkan work order hasil perbaikan mesin edc sercara langsung.

Pre-conditions User telah terdaftar sebagai engineer

Post-conditions -

Failed end condition User tidak terdaftar sebagai engineer.

Primary Actors Engineer

Main Flow / Basic Path 1. User login sebagai engineer. 2. System menampilkan data

merchant yang harus dikunjungi untuk melakukan perbaikan mesin edc. .

3. User dapat membuat laporan hasil perbaikan mesin.

Invariant A: A8. User melakukan pencarian

data.

42

C. Activity Diagram

1. Activity Diagram Merngelola Data Merchant

Gambar IV.4 : Activity Diagram Mengelola Data Merchant

43

2. Activity Diagram Mengelola Data Service

Gambar IV.5 : Activity Diagram Mengelola Data Service

44

3. Activity Diagram Mengelola Data User

Gambar IV.6 : Activity Diagram Mengelola Data User

45

4. Activity Diagram Mengelola Data Service

Gambar IV.7 : Activity Diagram Mengelola Data Service

46

5. Activity Diagram Assign To Engineer

Gambar IV.8 : Activity Diagram Assign To Engineer

f

47

6. Activity Diagram Engineer

Gambar IV.9 : Activity Diagram Engineer

48

7. Activity Diagram Completed Work Order Or Re-assign

Gambar IV.10 : Activity Diagram Completed Work Order Or Re-Assign

49

8. Activity Diagram Report

Gambar IV.11 : Activity Diagram Report

50

4.2. Desain

Pada tahapan ini akan dijelaskan desain database, desain software architecture

dan desain interface sistem informasi yang dibuat.

4.2.1. Database

Berikut adalah desain database dari sistem informasi yang dibuat

menggunakan Entity Relationship Diagram.

A. Entity Relationship Diagram

1. Entity Relationship Diagram.

Gambar IV.12 : Entity Relationship Diagram

51

B. Logical Record Structure

1. Logical Record Structure

Gambar IV.13 : Logical Record Structure

52

C. Spesifikasi File

1. Spesifikasi File Tabel User

Nama Database : Visionet

Nama File : Tabel Users

Akronim : users

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 16K

Kunci Field : id

Tabel IV.4 : Spesifikasi File Tabel Users

No Elemen Data

Akronim Type Width Keterangan

1 Id User id Int 10 Primary Key

2 Nama name Varchar 191 3 Email email Varchar 191 4 Password password Varchar 191 5 Token remember_token Varchar 100 6 Telepon telepon Varchar 191 7 Service

point id Service_point_id Int 11 Foreign

Key 8 Level Level Int 11 9 Createt

At created_at Timestamp -

10 Updated At

updated_at Timestamp -

53

2. Spesifikasi Tabel Merchant

Nama Database : Visionet

Nama File : Tabel Merchants

Akronim : merchants

Tipe File : File Master

Akses File : Random

Panjang Record : 16K

Kunci Field : id

Tabel IV.5 : Spesifikasi File Tabel Merchant

No Elemen Data

Akronim Type Width Keterangan

1 Id merchant

id Int 10 Primary Key

2 Mid mid Varchar 191 3 Tid tid Varchar 191 4 Csi csi Varchar 191 5 Nama

merchant nama_merchant Varchar 191

6 Alamat merchant

alamat_merchant Varchar 191

7 Serial number

serial_number Varchar 191

8 Type edc type_edc Varchar 191 9 Telepon telepon Varchar 191 10 Pic

merchant pic_merchant Varchar 191

11 Created at

created_at Timestamp

12 Updated at

updated_at Timestamp

54

3. Spesifikasi Tabel Service Point

Nama Database : visionet

Nama File : Tabel Service Point

Akronim : service_points

Tipe File : File Master

Akses File : Random

Panjang Record : 16K

Kunci Field : id

Tabel IV.6 : Spesifikasi File Tabel Service Point

No Elemen Data

Akronim Type Width Keterangan

1 Id service point

id Int 10 Primary Key

2 Name name Varchar 191 3 Alamat alamat Varchar 191 4 Telepon telepon Bigint 20 5 Zipcode zipcode Int 11 6 Created

at created_at Timestamp

7 Updated at

updated_at Timestamp

55

4. Spesifikasi Tabel Admin Service

Nama Database : visionet

Nama File : Tabel Admin Services

Akronim : admin_services

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 16K

Kunci Field : id

Tabel IV.7 : Spesifikasi File Tabel Admin Service

No Elemen Data

Akronim Type Width Keterangan

1 Id services id Int 10 Primary Key

2 Id service point

services_point_id Int 10 Foreign key

3 Id work order

work_order_id Int 10 Foreign key

4 Id merchant

merchant_id Int 10 Foreign key

5 Id users user_id Int 10 Foreign key

6 Nomor laporan

nomor_laporan Varchar 191

7 Status status Int 11 8 Description Description text 9 Created at created_at Timestamp 10 Updated at updated_at Timestamp

56

5. Spesifikasi Tabel Work Order

Nama Database : visionet

Nama File : Tabel Work Order

Akronim : work_orders

Tipe File : File Master

Akses File : Random

Panjang Record : 16K

Kunci Field : id

Tabel IV.8 : Spesifikasi File Tabel Work Order

No Elemen Data Akronim Type Width Keterangan 1 Id work order id Int 10 Primary

Key 3 Id admin service admin_service_id Int 11 Foreign

key 4 Description description Text - 5 Type komunikasi type_komunikasi Varchar 191 6 Supply thermal supply_thermal Varchar 191 7 Response time

kredit response_time_kredit Int 11

8 Response time debit

response_time_debit Int 11

9 Response time prepaid

response_time_prepaid Int 11

10 Response time loyalty

response_time_debit Int 11

11 Nomor direct line nomor_direct_line Varchar 191 12 Mobile operator mobile_operator Varchar 191 13 Jam mulai jam_mulai Varchar 191 14 Jam selesai jam_selesai Varchar 191 15 Tanggal tanggal Date 16 Kelengkapan_edc kelengkapan_edc Varchar 191 17 Kelengkapan

dongle kelengkapan_dongle Varchar 191

57

18 Foto struk photo_struk Varchar 191 19 Foto toko photo_toko Varchar 191 20 Nama pic nama_pic Varchar 191 18 No telepon no_telepon Varchar 191 19 Created at created_at Datetime 20 Updated at updated_at Datetime

4.2.2. Software Architecture

Penggambaran software architecture berikut akan

menggambarkan class diagram, sequence diagram, component diagram

dan deployment diagram.

A. Class Diagram

Berikut adalah objek – objek yang teridentifikasi dari sistem ini.

1. Merchant

2. Services

3. Service Point

4. User

5. Work Order

58

Gambar IV.14 : Class Diagram

59

B. Sequence Diagram

1. Sequence Diagram Admin

Gambar IV.15 : Sequence Diagram Admin

60

2. Sequence Diagram Service Point Leader

Gambar IV.16 : Sequence Diagram

61

1. Sequence Diagram Engineer

Gambar IV.17 : Sequence Diagram

62

C. Component Diagram

Gambar IV.18 : Component Diagram

63

D. Deployment Diagram

Gambar IV.19 : Deployment Diagram

64

4.2.3. User Interface

A. Menu Admin Services (Monitoring)

B. Form Login

Gambar IV.20 : Form Login

C. Dashboard Monitoring

Gambar IV.21 : Dashboard Monitoring

65

D. Menu List Data Merchant

Gambar IV.22 : Menu List Data Merchant

E. Menu Tambah Data Merchant

Gambar IV.23 : Menu Tambah Data Merchant

66

F. Menu Ubah Data Merchant

Gambar IV.24 : Menu Ubah Data Merchant

G. Menu Hapus Data Merchant

Gambar IV.25 : Menu Hapus Data Merchant

67

H. Menu List Data Service Point

Gambar IV.26 : Menu List Data Service Point

I. Menu Tambah Data Service Point

Gambar IV.27 : Menu Tambah Data Service Point

68

J. Menu Ubah Data Service Point

Gambar IV.28 : Menu Ubah Data Service Point

K. Menu Hapus Data Service Point

Gambar IV.29 : Menu Hapus Data Service Point

69

L. Menu List Data User

Gambar IV.30 : Menu List Data User

M. Menu Tambah Data User

Gambar IV.31 : Menu Tambah Data User

70

N. Menu Ubah Data User

Gambar IV.32 : Menu Ubah Data User

O. Menu Hapus Data User

Gambar IV.33 : Menu Hapus Data User

71

P. Menu List Data Services

Gambar IV.34 : Menu List Data Services

Q. Menu Ubah Data Services

Gambar IV.35 : Menu Ubah Data Services

72

R. Menu Hapus Data Services

Gambar IV.36 : Menu Hapus Data Services

S. Menu List Data Services Schedule

Gambar IV.37 : Menu List Data Services Schedule

73

T. Menu List Data Services Completed

Gambar IV.38 : Menu List Data Services Completed

U. Menu Detail Data Services

Gambar IV.39 : Menu Detail Data Services

74

V. Menu Data Report

Gambar IV.40 : Menu Data Report

W. Menu Print Data Report

Gambar IV.41 : Menu Print Data Report

75

X. Menu Dashboard Service Point Leader

Gambar IV.42 : Menu Dashboard Service Point Leader

Y. Menu List Data New Services

Gambar IV.43 : Menu List Data New Services

76

Z. Menu Assign Services & Ubah Data Assign Services

Gambar IV.44 : Menu Assign Services & Ubah Data Assign

Services

AA. Menu List Data Services Scheduled

Gambar IV.45 : Menu List Data Services Scheduled

77

BB. Menu List Data Service Done

Gambar IV.46 : Menu List Data Service Done

CC. Menu Data Check Services

Gambar IV.47 : Menu List Data Check Service

78

DD. Menu List Data Services Completed

Gambar IV.48 : Menu List Data Services Completed

EE. Menu Data Detail Completed

Gambar IV.49 : Menu Data Detail Completed

79

FF. Menu Print Work Order

Gambar IV.50 : Menu Print Work Order

80

GG. Menu Dashboard Engineer

Gambar IV.51 : Menu Dashboard Engineer

HH. Menu Services Engineer

Gambar IV.52 : Menu Services Engineer

81

II. Menu Work Order Engineer

Gambar IV.53 : Menu Work Order Engineer

JJ. Menu Services Done Engineer

Gambar IV.54 : Menu Services Done Engineer

82

KK. Menu Detail Done Services Engineer

Gambar IV.55 : Menu Detail Done Services Engineer

LL. Menu Services Completed Engineer

Gambar IV.56 : Menu Services Completed Engineer

83

MM. Menu Detail Services Completed Engineer

Gambar IV.57 : Menu Detail Services Completed Engineer

4.3. Code Generation

A. Class User

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Auth;

use App\User;

use App\ServicePoint;

use App\AdminService;

84

class UserController extends Controller

{

public function index(ServicePoint $servicepoint)

{

$data_user = Auth::user();

$users = User::all();

return

view('data_master.user.list_user',compact('data_user','users','servicepoint')

);

}

public function edit(User $user)

{

$service_points = ServicePoint::all();

$data_user = Auth::user();

return

view('data_master.user.edit_user',compact('user','data_user','service_points

'));

}

public function update ($id)

{

User::where('id',$id)->update([

85

'name' =>request('name'),

'email' =>request('email'),

'telepon' =>request('telepon'),

'password' => bcrypt(request('password')),

'service_point_id' =>request('service_point_id'),

'level' =>request('level')

]);

flash()->overlay('Data User Berhasil Diperbarui');

return redirect("/user");

}

public function delete(Request $request)

{

$user = User::find($request->id);

$user->delete();

return redirect("/user");

}

}

B. Class Merchant

<?php

namespace App\Http\Controllers;

86

use Illuminate\Http\Request;

use App\Merchant;

use App\Http\Requests;

use App\Http\Requests\Merchant\StoreRequest;

use App\Http\Requests\Merchant\UpdateRequest;

use Validator, Response;

use Illuminate\Support\Facades\Input;

use Illuminate\Support\Facades\Auth;

class MerchantController extends Controller

{

public function index ()

{

$data_user = Auth::user();

$merchants = Merchant::all();

return view('data_master.merchant.list_merchant',

compact('merchants','data_user'));

}

public function store (StoreRequest $request)

{

$merchants = new Merchant;

$merchants->tid = $request->tid;

87

$merchants->mid = $request->mid;

$merchants->csi = $request->csi;

$merchants->type_edc = $request->type_edc;

$merchants->serial_number = $request->serial_number;

$merchants->nama_merchant = $request->nama_merchant;

$merchants->alamat_merchant = $request->alamat_merchant;

$merchants->pic_merchant = $request->pic_merchant;

$merchants->telepon = $request->telepon;

$merchants->save();

return response ()->json ($merchants);

}

public function update (Request $request)

{

$merchants = Merchant::findOrFail($request->id);

$merchants->tid = $request->tid;

$merchants->mid = $request->mid;

$merchants->csi = $request->csi;

$merchants->type_edc = $request->type_edc;

$merchants->serial_number = $request->serial_number;

$merchants->nama_merchant = $request->nama_merchant;

$merchants->alamat_merchant = $request->alamat_merchant;

$merchants->pic_merchant = $request->pic_merchant;

88

$merchants->telepon = $request->telepon;

$merchants->save();

return response()->json($merchants);

}

public function delete (Request $request)

{

$merchants = Merchant::find($request->id);

$merchants->delete();

return response()->json($merchants);

}

}

C. Class Service Point

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Merchant;

use App\ServicePoint;

use App\Http\Requests;

use App\Http\Requests\servicePoint\ServicePointRequest;

89

use Illuminate\Support\Facades\Auth;

use App\AdminService;

class ServicePointController extends Controller

{

public function index (AdminService $adminservice)

{

$data_user = Auth::user();

$servicePoint = ServicePoint::all();

return view('data_master.service_point.list_service_point',

compact('servicePoint','data_user','adminservice'));

}

public function create ()

{

$data_user = Auth::user();

return

view('data_master.service_point.create_service_points',compact('data_use

r'));

}

public function store ()

{

90

$this->validate(request(),[

'nama' => 'required|min:3|max:191',

'alamat' => 'required',

'telepon' => 'required',

'zipcode' => 'required'

]);

ServicePoint::create([

'nama' => request('nama'),

'alamat' => request('alamat'),

'telepon' => request('telepon'),

'zipcode' => request('zipcode')

]);

flash()->overlay("Service Point is Created", 'Greet');

return redirect("/service-point");

}

public function edit (ServicePoint $servicePoint)

{

$data_user = Auth::user();

return

view('data_master.service_point.edit_service_points',compact('servicePoin

t','data_user'));

}

91

public function update ($id)

{

$this->validate(request(),[

'nama' => 'required|min:3|max:191',

'alamat' => 'required',

'telepon' => 'required',

'zipcode' => 'required'

]);

servicePoint::where('id',$id)->update([

'nama' => request('nama'),

'alamat' => request('alamat'),

'telepon' => request('telepon'),

'zipcode' => request('zipcode')

]);

flash()->overlay('Service Point Berhasil Diperbarui');

return redirect("/service-point");

}

public function delete(Request $request)

{

$service_point = ServicePoint::find($request->id);

$service_point->delete();

92

return redirect("/service-point");

}

}

D. Class Admin Service

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Auth;

use App\User;

use App\Merchant;

use App\ServicePoint;

use App\AdminService;

use DB;

use Charts;

class AdminServiceController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

93

*/

public function index(Merchant $merchant)

{

$data_user = Auth::user();

$admin_services = AdminService::orderBy('id')-

>with('merchant','service_point')->get();

return

view('service_admin.list_admin_service',compact('data_user','admin_servi

ces','service_point'));

}

/**

* Show the form for creating a new resource.

*

* @return \Illuminate\Http\Response

*/

public function create()

{

$data_user = Auth::user();

$merchants = Merchant::all();

$service_points = ServicePoint::all();

94

return

view('service_admin.create_admin_service',compact('data_user','merchant

s','service_points'));

}

/**

* Store a newly created resource in storage.

*

* @param \Illuminate\Http\Request $request

* @return \Illuminate\Http\Response

*/

public function store(Request $request)

{

AdminService::create([

'nomor_laporan' => request('nomor_laporan'),

'merchant_id' => request('merchant_id'),

'service_point_id' => request('service_point_id'),

'description' => request('description'),

'status' => 1,

]);

flash()->overlay("Service is Created", 'Greet');

return redirect("/admin-services");

}

95

/**

* Display the specified resource.

*

* @param \App\AdminService $adminService

* @return \Illuminate\Http\Response

*/

public function show(AdminService $adminService)

{

//

}

/**

* Show the form for editing the specified resource.

*

* @param \App\AdminService $adminService

* @return \Illuminate\Http\Response

*/

public function edit(AdminService $adminService)

{

$data_user = Auth::user();

$merchants = Merchant::all();

$service_points = ServicePoint::all();

96

$admin_services = AdminService::find('id');

$nama_merchant =

Merchant::whereId($adminService['merchant_id'])->get();

$nama_service_point =

ServicePoint::whereId($adminService['service_point_id'])->get();

// print($nama_merchant[0]['id']);exit;

//

print_r(json_decode(json_encode($nama_service_point[0]['nama'])));exit;

return

view('service_admin.edit_admin_service',compact('adminService','data_us

er','merchants','service_points','nama_merchant','nama_service_point'));

}

/**

* Update the specified resource in storage.

*

* @param \Illuminate\Http\Request $request

* @param \App\AdminService $adminService

* @return \Illuminate\Http\Response

*/

public function update(Request $request, $id)

{

AdminService::where('id',$id)->update([

97

'nomor_laporan' => request('nomor_laporan'),

'merchant_id' => request('merchant_id'),

'service_point_id' => request('service_point_id'),

'description' => request('description'),

'status' => 1,

]);

flash()->overlay("Service is Updated", 'Greet');

return redirect("/admin-services");

}

/**

* Remove the specified resource from storage.

*

* @param \App\AdminService $adminService

* @return \Illuminate\Http\Response

*/

public function destroy(AdminService $adminService)

{

$admin_service = AdminService::find($request->id);

$admin_service->delete();

return redirect("/admin-services");

}

98

public function delete(Request $request)

{

$admin_service = AdminService::find($request->id);

$admin_service->delete();

return redirect("/admin-services");

}

public function report()

{

$data_user = Auth::user();

$services_completed = AdminService::where('status',4)-

>whereMonth('created_at',date('m'))->orderBy('id')-

>with('merchant','service_point')->get();

return

view('service_admin.report',compact('data_user','services_completed'));

}

public function postRepost(Request $request)

{

$data_user = Auth::user();

$date_from = $request['date_from'];

$date_to = $request['date_to'];

$mulai = date('d F Y', strtotime($date_from));

99

$selesai = date('d F Y', strtotime($date_to));

$services_completed = AdminService::where('status',4)-

>whereDate('created_at','>=',$date_from)-

>whereDate('created_at','<=',$date_to)-

>with('merchant','service_point','user','work_order')->get();

return

view('print',compact('data_user','services_completed','mulai','selesai'));

}

public function dashboard ()

{

$data_user = Auth::user();

$total_service_point = ServicePoint::count();

$total_merchant = Merchant::count();

$total_service_completed = AdminService::where('status',4)-

>whereMonth('created_at',date('m'))->count();

$total_service_active = AdminService::where('status','!=',4)->count();

$total_engineer = User::where('level',3)->count();

$total_case = DB::table('admin_services')

-

>leftjoin('service_points','service_points.id','=','admin_services.service_po

int_id')

100

->leftjoin('users','users.id','=','admin_services.user_id')

-

>select('admin_services.service_point_id','service_points.nama',

DB::raw('count(admin_services.service_point_id) as total_service'))

->where('admin_services.status',4)

->groupBy('service_point_id')

->get();

// print_r($total_case);exit;

$total_case_engineer = DB::table('admin_services')

->leftjoin('users','users.id','=','admin_services.user_id')

-

>leftjoin('service_points','service_points.id','=','admin_services.service_po

int_id')

->select('service_points.nama','users.name',

DB::raw('count(admin_services.user_id) as total_service'))

->where('admin_services.status',4)

->groupBy('user_id')

->get();

$chart = Charts::database(AdminService::where('status',4)->get(),

'bar', 'highcharts')

->elementLabel("Total Services")

->dimensions(500, 320)

101

->responsive(false)

->groupByMonth(date('Y'), true);

return

view('dashboard',compact('data_user','total_service_point','total_merchant'

,'total_service','total_service_active','total_engineer','total_service_complet

ed','total_case','total_case_engineer','chart'));

}

public function schedule()

{

$data_user = Auth::user();

$engineer_services = AdminService::where('status',2)->orderBy('id')-

>with('merchant','service_point','user')->get();

return

view('service_admin.list_schedule_services',compact('data_user','engineer

_services'));

}

public function completed()

{

$data_user = Auth::user();

102

$services_completed = AdminService::where('status',4)-

>whereMonth('created_at',date('m'))->orderBy('id')-

>with('merchant','service_point')->get();

// print_r(json_decode(json_encode($data_user)));exit;

return

view('service_admin.list_completed_services',compact('data_user','service

s_completed'));

}

public function detailServicesCompleted($id)

{

$data_user = Auth::user();

$detail_services =

AdminService::with('merchant','service_point','user','work_order')-

>find($id);

// print_r(json_decode(json_encode($detail_services)));exit;

return

view('service_admin.detail_services_completed',compact('detail_services',

'data_user'));

}

public function test ()

{

103

return view('print');

}

}

E. Class Engineer

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Auth;

use App\User;

use App\Merchant;

use App\ServicePoint;

use App\AdminService;

use DB;

use Charts;

class AdminServiceController extends Controller

{

/**

* Display a listing of the resource.

*

104

* @return \Illuminate\Http\Response

*/

public function index(Merchant $merchant)

{

$data_user = Auth::user();

$admin_services = AdminService::orderBy('id')-

>with('merchant','service_point')->get();

return

view('service_admin.list_admin_service',compact('data_user','admin_servi

ces','service_point'));

}

/**

* Show the form for creating a new resource.

*

* @return \Illuminate\Http\Response

*/

public function create()

{

$data_user = Auth::user();

$merchants = Merchant::all();

$service_points = ServicePoint::all();

105

return

view('service_admin.create_admin_service',compact('data_user','merchant

s','service_points'));

}

/**

* Store a newly created resource in storage.

*

* @param \Illuminate\Http\Request $request

* @return \Illuminate\Http\Response

*/

public function store(Request $request)

{

AdminService::create([

'nomor_laporan' => request('nomor_laporan'),

'merchant_id' => request('merchant_id'),

'service_point_id' => request('service_point_id'),

'description' => request('description'),

'status' => 1,

]);

flash()->overlay("Service is Created", 'Greet');

return redirect("/admin-services");

}

106

/**

* Display the specified resource.

*

* @param \App\AdminService $adminService

* @return \Illuminate\Http\Response

*/

public function show(AdminService $adminService)

{

//

}

/**

* Show the form for editing the specified resource.

*

* @param \App\AdminService $adminService

* @return \Illuminate\Http\Response

*/

public function edit(AdminService $adminService)

{

$data_user = Auth::user();

$merchants = Merchant::all();

$service_points = ServicePoint::all();

107

$admin_services = AdminService::find('id');

$nama_merchant =

Merchant::whereId($adminService['merchant_id'])->get();

$nama_service_point =

ServicePoint::whereId($adminService['service_point_id'])->get();

// print($nama_merchant[0]['id']);exit;

//

print_r(json_decode(json_encode($nama_service_point[0]['nama'])));exit;

return

view('service_admin.edit_admin_service',compact('adminService','data_us

er','merchants','service_points','nama_merchant','nama_service_point'));

}

/**

* Update the specified resource in storage.

*

* @param \Illuminate\Http\Request $request

* @param \App\AdminService $adminService

* @return \Illuminate\Http\Response

*/

public function update(Request $request, $id)

{

AdminService::where('id',$id)->update([

108

'nomor_laporan' => request('nomor_laporan'),

'merchant_id' => request('merchant_id'),

'service_point_id' => request('service_point_id'),

'description' => request('description'),

'status' => 1,

]);

flash()->overlay("Service is Updated", 'Greet');

return redirect("/admin-services");

}

/**

* Remove the specified resource from storage.

*

* @param \App\AdminService $adminService

* @return \Illuminate\Http\Response

*/

public function destroy(AdminService $adminService)

{

$admin_service = AdminService::find($request->id);

$admin_service->delete();

return redirect("/admin-services");

}

109

public function delete(Request $request)

{

$admin_service = AdminService::find($request->id);

$admin_service->delete();

return redirect("/admin-services");

}

public function report()

{

$data_user = Auth::user();

$services_completed = AdminService::where('status',4)-

>whereMonth('created_at',date('m'))->orderBy('id')-

>with('merchant','service_point')->get();

return

view('service_admin.report',compact('data_user','services_completed'));

}

public function postRepost(Request $request)

{

$data_user = Auth::user();

$date_from = $request['date_from'];

$date_to = $request['date_to'];

$mulai = date('d F Y', strtotime($date_from));

110

$selesai = date('d F Y', strtotime($date_to));

$services_completed = AdminService::where('status',4)-

>whereDate('created_at','>=',$date_from)-

>whereDate('created_at','<=',$date_to)-

>with('merchant','service_point','user','work_order')->get();

return

view('print',compact('data_user','services_completed','mulai','selesai'));

}

public function dashboard ()

{

$data_user = Auth::user();

$total_service_point = ServicePoint::count();

$total_merchant = Merchant::count();

$total_service_completed = AdminService::where('status',4)-

>whereMonth('created_at',date('m'))->count();

$total_service_active = AdminService::where('status','!=',4)->count();

$total_engineer = User::where('level',3)->count();

$total_case = DB::table('admin_services')

-

>leftjoin('service_points','service_points.id','=','admin_services.service_po

int_id')

111

->leftjoin('users','users.id','=','admin_services.user_id')

-

>select('admin_services.service_point_id','service_points.nama',

DB::raw('count(admin_services.service_point_id) as total_service'))

->where('admin_services.status',4)

->groupBy('service_point_id')

->get();

// print_r($total_case);exit;

$total_case_engineer = DB::table('admin_services')

->leftjoin('users','users.id','=','admin_services.user_id')

-

>leftjoin('service_points','service_points.id','=','admin_services.service_po

int_id')

->select('service_points.nama','users.name',

DB::raw('count(admin_services.user_id) as total_service'))

->where('admin_services.status',4)

->groupBy('user_id')

->get();

$chart = Charts::database(AdminService::where('status',4)->get(),

'bar', 'highcharts')

->elementLabel("Total Services")

->dimensions(500, 320)

112

->responsive(false)

->groupByMonth(date('Y'), true);

return

view('dashboard',compact('data_user','total_service_point','total_merchant'

,'total_service','total_service_active','total_engineer','total_service_complet

ed','total_case','total_case_engineer','chart'));

}

public function schedule()

{

$data_user = Auth::user();

$engineer_services = AdminService::where('status',2)->orderBy('id')-

>with('merchant','service_point','user')->get();

return

view('service_admin.list_schedule_services',compact('data_user','engineer

_services'));

}

public function completed()

{

$data_user = Auth::user();

113

$services_completed = AdminService::where('status',4)-

>whereMonth('created_at',date('m'))->orderBy('id')-

>with('merchant','service_point')->get();

// print_r(json_decode(json_encode($data_user)));exit;

return

view('service_admin.list_completed_services',compact('data_user','service

s_completed'));

}

public function detailServicesCompleted($id)

{

$data_user = Auth::user();

$detail_services =

AdminService::with('merchant','service_point','user','work_order')-

>find($id);

// print_r(json_decode(json_encode($detail_services)));exit;

return

view('service_admin.detail_services_completed',compact('detail_services',

'data_user'));

}

public function test ()

{

114

return view('print');

}

}

4.4. Testing

Pengujian unit menggunakan black box testing untuk pengujian

proses input dan output, menguji form yang berhubungan dengan proses bisnis

utama.

Tabel IV.9 : Tabel Pengujian Unit

No. Skenario pengujian

Test case Hasil yang diharapkan

Hasil pengujian

Kesimpulan

1. Email

address dan password tidak diisi kemudian klik tombol login

Email

address : (kosong) Password: (kosong)

Sistem akan menolak akses user dan menampilkan “ Please Fill Out This Field”

Sesuai harapan

Valid

2. Mengetikkan email

address dan password tidak diisi atau kosong kemudian klik tombol login

Email

address: a@gmail.com Password : (kosong)

Sistem akan menolak akses user dan menampilkan “ Please Fill Out This Field”

Sesuai harapan

Valid

3. email

address tidak diisi (kosong) dan password diisi kemudian

email

address: (kosong) Password: 123456

Sistem akan menolak akses user dan menampilkan “ Please Fill Out This

Sesuai harapan

Valid

115

klik tombol login

Field”

4. Mengetikkan salah satu kondisi salah pada email

address atau password kemudian klik tombol login

Email

Address: a@gmail.com (benar) Password: test (salah)

Sistem akan menolak akses user dan menampilkan “Username dan Password tidak sesuai !”.

Sesuai harapan

Valid

5. Mengetikkan email

address dan password dengan data yang benar kemudian klik tombol login

email: a@gmail.com (benar) Password: 123456 (benar)

Sistem menerima akses login dan kemudian langsung menampilkan menu utama.

Sesuai harapan

Valid

6 Tidak mengisi satu data pada form create dan edit

Sistem akan menolak akses dan menampilkan “ Please Fill Out This Field”

Sesuai harapan

Valid

7 Mengakses halaman monitoring dengan login sebagai user

Login sebagai user dan mengakses halaman create service

point

Sistem akan menolak akses dan menampilkan “ Halaman Dashboard user”

Sesuai harapan

Valid

8 Mengakses halaman service point leader dengan login sebagai user

Login sebagai user dan mengakses halaman service point

leader

Sistem akan menolak akses dan menampilkan “ Halaman Dashboard user”

Sesuai harapan

Valid

9 Mengakses halaman user

Login sebagai user dan

Sistem akan menolak

Sesuai harapan

Valid

116

dengan login sebagai service point leader

mengakses halaman work order

akses dan menampilkan “ Halaman Dashboard user”

9 Mengakses halaman user dengan login sebagai service point leader

Login sebagai user dan mengakses halaman work order

Sistem akan menolak akses dan menampilkan “ Halaman Dashboard user”

Sesuai harapan

Valid

4.5. Support

Aplikasi yang sudah dibuat membutuhkan support agar website dapat diakses

oleh pengguna, support yang dibutuhkan yaitu server sebagai media menyimpan

aplikasi (source code) dan database, membutuhkan domain sebagai alamat yang

akan dituju oleh client. Berikut penulis akan menjelaskan detail support yang

dibutuhkan.

4.5.1. Publikasi Web

Untuk melakukan publikasi dari web yang dibuat membutuhkan

domain, domain adalah alamat yang akan dituju oleh pengguna yang

ingin mengakses website, Indonesia banyak memiliki banyak

perusahaan yang menjual jasa penjualan domain yaitu idcloudhost,

niagahost, jogja web, dll.

Berikut adalah langkah-langkah untuk melakukan pembelian

domain.

117

1. Mengunjungi salah satu website penyedia jasa domain.

2. Pilih domain yang kita inginkan.

3. Jika tersedia, kita dapat melakukan pembelian.

4. Lakukan pembayaran dengan metode yang diberikan oleh

penyedia jasa.

Selain domain, hosting juga dibutuhkan untuk melakukan

penyimpanan source code dan database, selanjutnya penulis akan

memberikan detail spesifikasi minimum server dan client (user) untuk

menyimpan database dan source code dari aplikasi yang telah dibuat.

4.5.2. Spesifikasi Hardware dan Software

1. Spesifikasi Perangkat Keras

a. Server

1) CPU

(a) Processor Intel® Pentium® Core 2 Duo

(b) RAM 5.00 GB

(c) Hard Disk 78.03 GB

2) Mouse

3) Keyboard

4) Monitor dengan resolusi layar minimum 1366 x 768

5) Koneksi Internet dengan kecepatan 2 Mbps

b. Client

1) CPU

118

(a) Processor Intel(R) Core 2 Duo

(b) RAM 1.00 GB

(c) HardDisk 160 GB

2) Mouse

3) Keyboard

4) Monitor dengan resolusi layar minimum 1366 x 768

5) Koneksi Internet dengan kecepatan 2 Mbps

2. Spesifikasi Perangkat Lunak

a. Server

1. Sistem operasi yang umum digunakan seperti: Microsoft

Windows atau Linux (Ubuntu, Centos, dll).

2. Aplikasi Bundle web server seperti: Xampp, phpmyadmin yang

terdiri dari beberapa komponen, diantaranya:

a. Aplikasi PHP Server versi 5.6.31

b. Aplikasi Mysql

c. Aplikasi phpMyadmin 4.6.5.2

3. Aplikasi Web yang digunakan Seperti Mozilla Firefox, Internet

Explorer, Google Chrome.

b. Client

1. Sistem operasi yang umum digunakan seperti: Microsoft

Windows, Linux (Ubuntu, fedora, dll) atau Mac Os

2. Aplikasi Web browser seperti Mozilla Firefox, Internet

Explorer, Google Chrome dan safari.

119

4.6. Spesifikasi Dokumen Sistem Usulan

Dalam proses bisnis yang dibuat dibutuhkan dokumen sebagai alat

atau media yang digunakan sebagai arsip, berfungsi untuk mencegah suatu hal

yang tidak diinginkan terjadi pada server ataupun database, baik hardware

maupun software seperti serangan virus, malware, ataupun bencana alam.

A. Dokumen Masukan

1. Nama Dokumen : Bukti kunjungan

Fungsi : Sebagai bukti hasil kunjungan perbaikan mesin

Sumber : Service Point Leader

Tujuan : Customer

Media : Kertas

Frekuensi : Setiap kunjungan perbaikan mesin.

Format : Lampiran B-1

B. Dokumen Keluaran

1. Nama Dokumen : Laporan

Fungsi : Sebagai bukti total perbaikan mesin

Sumber : Admin Monitoring

Tujuan : Mandiri

Media : Kertas

Frekuensi : Setiap Laporan Diinginkan.

Format : Lampiran B-2