• Tidak ada hasil yang ditemukan

BAB 5 IMPLEMENTASI & PENGUJIAN SISTEM

5.2 Pengujian Sistem

62 15. Halaman Detail Status Ticket

Halaman detail status ticket merupakan tampilan yang berisi detail dari tiket terkait seperti status progres, dokumen laporan, isu laporan dan riwayat status progres tiket beserta keterangannya.

Gambar 5. 15: Tampilan Halaman Detail Status Ticket

63 memasukkan

email atau password yang tidak sesuai data

menampilkan pesan bahwa email atau password salah

n pesan gagal login karena data tidak sesuai

Halaman Dashboard

User berhasil login dengan data email dan password yang sesuai

Menampilkan jumlah tiket, produk dan proyek sesuai dengan user terkait

Jumlah tiket, produk dam proyek yang ditampilkan sesuai

dengan user terkait

Valid

Pengelolaan data user

Admin

menambahkan user baru dengan client yang sudah terdaftar

Data user baru akan gagal ditambahkan karena dari satu client perusahaan hanya satu user

Admin mendapatka n pesan bahwa client sudah

terdaftar

Valid

Pengelolaan data client

Admin

menambahkan perusahaan klien

Data perusahaan klien baru

Admin mendapatka n pesan

Valid

64 baru dengan data

perusahaan yang sudah terdaftar

akan gagal ditambahkan dan

mendapatkan pesan bahwa perusahaan klien sudah ada.

bahwa perusahaan klien sudah ada.

Pengelolaan data produk

Admin

menambahkan nama produk dan klien yang sudah ada

Data produk baru akan gagal

ditambahkan dan

menampilkan pesan produk sudah ada

Admin mendapatka n pesan bahwa produk sudah ada

Valid

Pengelolaan data proyek

Admin

menambahkan produk dan klien yang sudah ada untuk proyeknya

Proyek baru akan gagal ditambahkan dan

menampilkan pesan klien

Admin mendapatka n pesan bahwa klien dan produk sudah ada

Valid

65

dan produk sudah ada Form

pengajuan tiket

Klien mengajukan tiket laporan permasalahan dengan produk yang sudah ada dan

Pengajuan akan gagal karena tiket dengan produk terkait sudah ada

Klien dapat pesan bahwa tiket dengan produk terkait sudah ada

Valid

Assigned tiket

Admin memberikan tugas kepada IT Teknisi untuk menyelesaikan laporan

permasalahan klien, tetapi status tiket harus sudah dibuka oleh klien.

Pemberian tugas kepada IT Teknisi berhasil dan status berubah menjadi “On Progress”, jika tiket di tutup oleh klien maka tidak akan bisa memberi tugas

Admin berhasil memberikan tugas kepada IT Teknisi yang

dimaksud dan status berubah menjadi “On Progress”

Valid

Edit status tiket

IT Teknisi merubah status

Status progres tiket berubah

IT Teknisi berhasil

Valid

66 disetiap progres

tiketnya

dan masuk ke riwayat status tiket pada detail tiket

merubah status

progres tiket dan masuk ke riwayat status tiket pada detail tiket

Detail status tiket

Klien klik tombol detail tiket untuk melihat detail tiket dan riwayat status dari tiket yang dimiliki

Detail tiket berhasil menampilkan riwayat status progres

Klien berhasil melihat detail tiket dengan riwayat status progres

Valid

67

BAB 6 PENUTUP

6.1 Kesimpulan

Berdasarkan hasil penelitian yang telah dilakukan, maka penulis akan mencoba menarik kesimpulan tentang penerapan Sistem Informasi Support Ticketing Berbasis Web, yaitu:

1. Sistem Informasi Support Ticketing ini dapat memberikan pelayanan penyampaian laporan permasalahan dari klien dan dapat melihat status progresnya dengan mudah melalui sistem informasi support ticketing berbasis web perusahaan.

2. Dengan adanya sistem informasi support ticketing dapat meningkatkan efisiensi dan efektivitas dalam mengelola laporan permasalahan yang dihadapi oleh klien.

3. Sistem informasi support ticketing ini untuk mempercepat dan mempermudah klien dalam menyampaikan permasalahan pada produknya sehingga dapat mengefisiensi waktu dalam proses penyelesaiannya.

4. Sistem informasi support ticketing ini dapat membantu Admin dalam pemberian tugas kepada IT Teknisi untuk menyelesaikan permasalahan dari klien.

68 6.2 Saran

Sistem informasi support ticketing pada PT. Solmit Bangun Indonesia ini masih dapat dikembangkan lebih lanjut dengan perkembangan spesifikasi kebutuhan pengguna sistem yang harus dipenuhi dalam mencapai tahap yang lebih tinggi dan kinerja sistem yang lebih baik karena sistem dibuat masih sederhana. Berikut adalah beberapa saran untuk pengembangan sistem lebih lanjut :

1. Perlu dilakukan pengembangan dan pemeliharaan yang lebih baik terhadap sistem yang telah dibuat maupun perangkat lunak yang dibangun, sehingga sistem dapat dipergunakan sesuai dengan kebutuhan perusahaan.

2. Pada sistem informasi support ticketing dapat ditambahkan fitur notifikasi untuk pemberitahuan permasalahan telah selesai dan pemberitahuan tugas yang masuk kepada IT Teknisi.

3. Sistem informasi support ticketing berbasis web yang dibuat penulis belum memiliki fitur yang lengkap seperti sistem SLA (Service Level Agreement) untuk mengukur tingkat isu pada permasalahan terkait, sistem report untuk menampilkan laporan dan sistem log aktivitas untuk riwayat perubahan atau tindakan yang dilakukan oleh user/pengguna.

xiv

DAFTAR PUSTAKA

[1] Y. Liharja, A. O. Sari and A. Satriansyah, "Rancang Bangun Sistem Informasi Helpdesk IT Support Berbasis Website," Jurnal Informatikan dan Teknologi, vol. 5, no. 1, pp. 157-166, 2022.

[2] K. C. Laudon and J. P. Laudon, Management Information System : Managing

the Digital Firm, 2012.

[3] V. "Perangkat Lunak Helpdesk Ticketing Berbasisi Web di PT Meprofarm Bandung," Jurnal LPKIA, 2018.

[4] R. N. Wardhani, M. C. Utami and I. Y. Saputra, "Sistem Informasi Helpdesk Ticketing pada PT. Bank Mega Tbk," Jurnal Ilmiah Matrik, vol. 22, no. 2, pp.

201-207, 2020.

[5] S. Syofian and A. Winandar, "Aplikasi Helpdesk Mendukung Sistem Ticketing," Jurnal Teknologi Informasi, 2017.

[6] M. Analisis Perancangan Sistem Berorientasi Objek dengan UML (Unified Modeling Language), Bandung: Informatika, 2018.

[7] F. and M. , UML Distilled Edisi ke-3, Yogyakarta: Andi Publisher, 2004.

[8] A. Kadir, Buku Pintar Programmer Pemula, Yogyakarta: Mediakom, 2013.

[9] B. Nugroho, Aplikasi Pemrograman Web Dinamis dengan PHP dan MySQL,

Yogyakarta: Gava Media, 2004.

[10] P. Mauliana, W. Wiguna and A. Y. Permana, "Pengembangan E-Helpdesk Support System," Jurnal Responsif, vol. 2, no. 1, pp. 19-29, 2020.

[11] M. winoto and S. N. Ambo, "HELPDESK SYSTEM UNTUK TECHNICL

SUPPORT BERBASIS HYBRID PADA PT.PANCA PUTRA SOLUSINDO," Jurnal Sistem Informasi, Teknologi Informasi dan Komputer, vol. 11, no. 3, pp. 37-42, 2021.

[12] N. S. P. P. W, R. R. Isnanto and I. P. Windasari, "PENGEMBANGAN SISTEM INFORMASI PENJUALAN DAN PEMBELIAN PADA TOKO PC TABLET," Jurnal Teknologi dan Sistem Informasi Komputer, vol. 2, no. 2, pp. 181-185, 2014.

[13] D. F. Dirmanthara, E. S. Nugraha, T. Prasetya, I. Ali and Kaslani, "Rancang Bangun Sistem Informasi Ticketing Berbasis Website pada STF

xv

Muhammadiyah Cirebon," Riset dan E-Jurnal Manajemen Informatika Komputer, vol. 6, no. 4, pp. 674-685, 2022.

[14] M. Ardhiansyah, "Penerapan Model Rapid Application Development pada Aplikasi Helpdesk Trouble Ticket PT. Satkomindo Mediyasa," Jurnal Teknologi Sistem Informasi dan Aplikasi, vol. 2, no. 2, pp. 43-52, 2019.

[15] S. I. Adam, J. H. Moedjahedy and O. Lengkong, "Pengembangan IT Helpdesk Ticketing Sistem Berbasis Web di Universitas Klabat," Cogito Smart Journal, vol. 6, no. 2, pp. 217-228, 2020.

[16] M. Fauzi, Masrizal and V. Sihombing, "SISTEM INFORMASI IT-

HELPDESK UNIVERSITAS LABUHANBATU BERBASIS WEB," Jurnal Teknologi dan Sistem Informasi, vol. 7, no. 3, pp. 259-266, 2021.

[17] Y. Iswara, I. Darmawan and U. Y. K. S. Hediyanto, "ANALISIS DAN

PERANCANGAN HELPDESK TICKETING SYSTEM UNTUK

MENGELOLA TINDAK PERBAIKAN PERANGKAT KOMPUTER DAN JARINGAN PADA PT. LEN INDUSTRI (PERSERO) MENGGUNAKAN METODOLOGI PDCA (PLAN-DO-CHECK-ACTION)," e-Proceeding of Engineering, vol. 5, no. 3, p. 7149, 2018.

[18] A. Naufal, D. Pramono and B. S. Prakoso, "Pengembangan Sistem Informasi Monitoring dan Helpdesk Proyek Pengembangan Perangkat Lunak (Studi Kasus: PT Lua Kreatif Teknologi)," Jurnal Pengembangan Teknologi Informasi dan Ilmu Komputer, vol. 6, no. 4, pp. 1558-1567, 2022.

[19] H. Wahyudi and R. Fajriah, "Perancangan Aplikasi Helpdesk Ticketing Dengan Penerapan Algoritma Forward Chaining (Stusi Kasus: PT Idemas Solusindo Sentosa)," Jurnal IlmuTeknik dan Komputer, vol. 4, no. 1, pp. 88- 97, 2020.

[20] R. Tarigan, I. Kusosi and A. Usri, "Perancangan Aplikasi Helpdesk Ticketing System Pada PT. Indonesia Nippon Seiki," (Sistem Informasi dan Komputer, vol. 11, no. 1, pp. 9-18, 2022.

[21] W. Likhar and H. Purwanto, "ANALISA DAN PERANCANGAN SISTEM

INFORMASI TICKETING HELPDESK ONLINE BERBASIS WEB:

STUDI KASUS PT XYZ," Jurnal Sistem Informasi UNSURYA, pp. 103-116, 2021.

[22] R. M. Bahrudin, M. Ridwan and H. S. Darmojo, "Penerapan Helpdesk Ticketing System Dalam Penanganan Keluhan Penggunaan Sistem Informasi Berbasis Web," JUTIS, vol. 7, no. 1, pp. 71-82, 2019.

xvi

LAMPIRAN

Lampiran 1.1 Source Code TicketModel.php

<?php

namespace App\Models;

use Carbon\Carbon;

use App\Models\Client;

use App\Models\Product;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Database\Eloquent\Factories\HasFactory;

class Ticket extends Model {

use HasFactory;

protected $fillable = [ 'no_ticket',

'product_id', 'client_id', 'issue', 'file', 'user_id' ];

public function product() {

return $this->belongsTo(Product::class, 'product_id', 'id');

}

public function client() {

return $this->belongsTo(Client::class, 'client_id', 'id');

}

public function user() {

return $this->belongsTo(User::class, 'user_id', 'id');

}

public function ticketStatus() {

return $this->hasMany(TicketStatus::class, 'ticket_id');

} }

xvii

Lampiran 1.2 Source Code TicketController.php

class TicketController extends Controller {

public function index() {

$user = auth()->user();

if ($user->role === "admin") {

$tickets = Ticket::with('ticketStatus')->

get();

} else if ($user->role === "programmer") {

$tickets = Ticket::where('user_id', $user->

id)->with('ticketStatus')->get();

} else {

$tickets = Ticket::where('client_id', $user->

client_id)->with('client', 'product', 'user', 'ticketStatus')->get();

}

return view('ticket.index', [ 'ticket' => $tickets ]);

}

public function create() {

$user = auth()->user();

$project = Project::where('client_id', $user->

client_id)->with('client', 'product', 'documents')->get();

$client = Client::all();

$slas = Sla::all();

return view('ticket.tambah', [ 'project' => $project, 'client' => $client, 'slas' => $slas ]);

}

public function show(Ticket $ticket) {

$status = TicketStatus::where('ticket_id',

$ticket->id)->orderBy('created_at', 'desc')->get();

$getstatus = Ticket::with('ticketStatus')->get();

xviii

return view('ticket.detail', [ 'ticket' => $ticket,

'status' => $status, 'getstatus' => $getstatus ]);

}

public function store(Request $request) {

$product_id = $request->input('product_id');

$client_id = $request->input('client_id');

$issue = $request->input('issue');

$file = $request->file('file');

$path = Storage::putFile('documents', $file);

$ticket = new Ticket;

$ticket->product_id = $product_id;

$ticket->client_id = $client_id;

$ticket->issue = $issue;

$ticket->file = $path;

$lastTicket = Ticket::orderBy('id', 'desc')->

first();

$ticket->no_ticket = 'TICKET-' . str_pad($lastTicket ? $lastTicket->id + 1 : 1, 5, '0', STR_PAD_LEFT);

$ticket->save();

$status = new TicketStatus;

$status->status = 'pending';

$status->description = 'Harap Tunggu Admin akan Assign ke IT Teknisi';

$status->ticket_id = $ticket->id;

$status->save();

return redirect()->route('ticket.index')

->with('success', 'Ticket Berhasil Diajukan, Harap tunggu!');

}

public function edit(Ticket $ticket) {

$product = Product::all();

xix $client = Client::all();

$programmer = User::where('role', 'programmer')->

get();

$status = TicketStatus::where('ticket_id',

$ticket->id)->get();

return view('ticket.edit', [ 'product' => $product, 'client' => $client, 'ticket' => $ticket,

'programmer' => $programmer, 'status' => $status

]);

}

public function update(Request $request, Ticket

$ticket) {

$status = TicketStatus::firstOrCreate(['status' =>

'to do', 'description' => 'IT Teknisi sudah ditentukan oleh Admin, Tiket akan segera dikerjakan.', 'ticket_id' =>

$ticket->id]);

$status->ticket_id = $ticket->id;

$user = auth()->user();

if ($user->role === "admin") {

$ticket->user_id = $request->user_id;

}

$ticket->save();

return redirect()->route('ticket.index')

->with('success', 'Ticket Berhasil di Assign kepada Programmer');

}

public function destroy($id) {

$ticket = Ticket::findOrFail($id);

$ticket->delete();

return redirect()->route('ticket.index')

->with('delete', 'Ticket berhasil di Hapus!');

}

xx public function download($id) {

$data = DB::table('tickets')->where('id', $id)->

first();

$filepath = storage_path("app/public/{$data->

file}");

return \Response::download($filepath);

}

public function editStatus($id) {

$ticket = Ticket::findOrFail($id);

$product = Product::all();

$client = Client::all();

$status = TicketStatus::where('ticket_id',

$ticket->id)->latest()->first();

return view('ticket.status', [ 'product' => $product, 'client' => $client, 'ticket' => $ticket, 'status' => $status, ]);

}

public function updateStatus(Request $request) {

$status = new TicketStatus;

$status->status = $request->status;

$status->description = $request->description;

$status->ticket_id = $request->ticket_id;

$status->save();

return redirect()->route('ticket.index')

->with('success', 'Status Berhasil Di Ubah!');

}

public function openTicket($id) {

$ticket = Ticket::findOrFail($id);

$ticket->status = 'open';

$ticket->save();

return redirect()->back()->with('success', 'Ticket Berhasil di Buka.');

xxi }

public function closeTicket($id) {

$ticket = Ticket::findOrFail($id);

$ticket->status = 'close';

$ticket->save();

return redirect()->back()->with('success', 'Ticket Berhasil di Tutup.');

} }

Lampiran 1.3 Source Code Tampilan ticket/index.php

@extends('main')

@section('title', 'Ticketing')

@section('content') @php

use Illuminate\Support\Str;

@endphp

<!-- Page Heading -->

<div class="d-sm-flex align-items-center justify- content-between mb-4">

<h1 class="h3 mb-0 text-gray-800">Ticket</h1>

</div>

@if (session()->has('success'))

<div class="alert alert-info alert-dismissible col-lg-12" role='alert'>

<button type="button" class="close" data- dismiss="alert" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

<h5><i class="icon fa fa-check-square"></i>

Berhasil!!!</h5>

{{ session('success') }}

</div>

@elseif (session()->has('delete'))

<div class="alert alert-danger alert-dismissible col-lg-12" role='alert'>

<button type="button" class="close" data- dismiss="alert" aria-label="Close">

xxii

<span aria-hidden="true">&times;</span>

</button>

<h6>{{ session('delete') }}</h6>

</div>

@endif

<!-- DataTales Example -->

<div class="card shadow mb-4">

<div class="card-header py-3">

<h6 class="m-0 font-weight-bold text- primary">Data List Ticket</h6>

</div>

<div class="card-body">

@if (Auth::user()->role == 'client') <div class="d-flex mb-3">

<a href="/ticket/create" class="btn btn-success btn-icon-split">

<span class="icon text-white-50">

<i class="fas fa-plus"></i>

</span>

<span class="text">Ajukan Ticket</span>

</a>

</div>

@endif

<div class="table-responsive">

<table class="table table-bordered"

id="dataTable" width="100%" cellspacing="0">

<thead>

<tr>

<th>No.</th>

<th width="15%">Nomor Tiket</th>

<th>Produk</th>

<th>Klien</th>

<th>Isu</th>

<th class="text- center">Status</th>

<th class="text- center">Aksi</th>

</tr>

</thead>

<tfoot>

<tr>

<th>No.</th>

xxiii

<th width="15%">Nomor Tiket</th>

<th>Produk</th>

<th>Klien</th>

<th>Isu</th>

<th class="text- center">Status</th>

<th class="text- center">Aksi</th>

</tr>

</tfoot>

<tbody>

@foreach ($ticket as $item) <tr>

<td style="vertical-align:

middle">

{{ $loop->iteration }}

@if ($item-

>created_at->diffInDays() < 2)

<span class="badge badge-warning">New</span>

@endif </td>

<td style="vertical-align:

middle">{{ $item->no_ticket }}</td>

<td style="vertical-align:

middle">{{ $item->product->nama }}</td>

<td style="vertical-align:

middle">{{ $item->client->name }}</td>

<td>{!! Str::limit($item-

>issue, 51, '...') !!}</td>

<td class="text-center"

style="vertical-align: middle">

@php

$latestStatus =

$item

-

>ticketStatus()

-

>where('ticket_id', $item->id)

->latest() ->first();

@endphp

@if ($latestStatus) @php

xxiv

$status =

$latestStatus->status;

@endphp <span

class="badge p-2

{{ $status ==

'pending' ? 'badge-secondary' : ($status == 'to do' ? 'badge-dark' : ($status == 'on progress' ? 'badge-warning' : ($status == 'testing' ? 'badge-info' : ($status ==

'staging' ? 'badge-primary' : ($status == 'done' ? 'badge- success' : ''))))) }}">

{{

ucfirst($status) }}

</span>

@if (Auth::user()-

>can('admin') || Auth::user()->can('programmer'))

@if ($item-

>status == 'close')

<hr class="mt-2 mb-2">

<sup class="text-danger">*Tiket di Tutup oleh Klien</sup>

@endif @endif

@can('client') @if ($item-

>status == 'open')

- <a href="/ticket/close/{{ $item->id }}"

class="btn btn-circle btn-sm btn-danger" data- toggle="tooltip"

data- placement="top" title="Close Ticket"><i

class="fas fa-lock-open"></i></a>

@elseif ($item->status == 'close')

- <a href="/ticket/open/{{ $item->id }}"

xxv

class="btn btn-circle btn-sm btn-danger" data- toggle="tooltip"

data- placement="top" title="Open Ticket"><i class="fas fa- lock"></i></a>

@endif @endcan @else

<span>-</span>

@endif </td>

<td class="text-center px- 0" style="vertical-align: middle">

<a href="/ticket/{{

$item->id }}" class="btn btn-circle btn-sm btn-primary"

data-

toggle="tooltip" data-placement="bottom" title="Detail"><i class="fas fa- eye"></i></a>

@if (Auth::user()-

>can('programmer') && $item->status !== 'close') <a

href="/ticket/status/{{ $item->id }}"

class="btn btn-circle btn-sm btn-success" data-toggle="tooltip"

data-

placement="top" title="Edit Status"><i class="fas fa- plus"></i></a>

@endif

@if (Auth::user()-

>can('admin') && $latestStatus && $latestStatus->status !=

'done' && $item->status !== 'close')

<a href="/ticket/{{ $item->id }}/edit"

class="btn btn-circle btn-sm btn-warning" data-toggle="tooltip"

data-

placement="top" title="Edit"><i class="fa fa- edit"></i></a>

@endif

@can('admin') @if

(!$latestStatus || ($latestStatus->status != 'done' &&

$item->status !== 'close'))

xxvi

<form

action="/ticket/{{ $item->id }}" method="POST" class="d- inline">

@method('delete')

@csrf <button class="btn btn-circle btn-sm btn-danger" title="Hapus"

onclick="return confirm('Yakin Mau Di Hapus?')"><i class="fa fa-trash"></i></button>

</form>

@endif @endcan </td>

</tr>

@endforeach </tbody>

</table>

</div>

</div>

</div>

@endsection

Lampiran 1.4 Source Code Tampilan Form pengajuan ticket/pengajuan.php

@extends('main')

@section('title', 'Tambah Ticket')

@section('content') @php

use Carbon\Carbon;

@endphp

<!-- Page Heading -->

<div class="d-sm-flex align-items-center justify- content-between mb-4">

<h1 class="h3 mb-0 text-gray-800"><strong>Ticket /</strong> Pengajuan Ticket</h1>

</div>

@if (session()->has('success'))

xxvii

<div class="alert alert-info alert-dismissible col-lg-12" role='alert'>

<button type="button" class="close" data- dismiss="alert" aria-label="Close">

<span aria-hidden="true">&times;</span>

</button>

<h5><i class="icon fa fa-check-square"></i>

Berhasil!!!</h5>

{{ session('success') }}

</div>

@endif

<div class="container card shadow mb-4">

<div class="card-header py-3">

<h6 class="m-0 font-weight-bold text- primary">Form Pengajuan Ticket</h6>

</div>

<div class="card-body">

<form action="/ticket" method="post"

enctype="multipart/form-data">

@csrf

<div class="row">

<div class="col-md-9">

<div class="form-row">

<div class="form-group col-md- 12">

<label

for="product">Product <span class="text- danger">*</span></label>

<select class="custom- select mr-sm-2" id="product" name="product_id" required>

<option value=""

selected hidden>Pilih Product</option>

@foreach ($project as

$prd)

@php

$tanggal =

\Carbon\Carbon::parse($prd->finish_project);

$tanggal-

>locale('id');

@endphp @if (Carbon::now()->gt($prd->finish_project))

Dokumen terkait