ajax()) { $data = TicketModel::select('*'); // Convert the Eloquent Collection to a regular PHP array $data->each(function ($item, $key) { $item->rowIndex = $key + 1; }); return DataTables::of($data) ->addIndexColumn() ->addColumn('title-post', function($row){ $text = '

' . $row->subject . '

Terakhir diperbarui pada ' . date_formatting($row->updated_at, 'timeago') . '

'; return $text; }) ->addColumn('siswa', function($row){ return User::where('id', $row->user_id)->first()->name; }) ->addColumn('action', function($row){ $view = route('ticket.view', ['id' => $row->id]); $delete = route('ticket.delete', ['id' => $row->id]); $btn = ' '; return $btn; }) ->addColumn('status', function($row){ if ($row->is_status == 1) { return 'Pending'; } elseif($row->is_status == 2) { return 'Admin Membalas'; } elseif($row->is_status == 3) { return 'User Membalas'; } elseif($row->is_status == 4) { return 'Ditutup'; } }) ->addColumn('priority', function($row){ if ($row->is_priority == GlobalEnum::isTicketPriorityNormal) { return 'Normal'; } elseif($row->is_priority == GlobalEnum::isTicketPriorityMedium) { return 'Sedang'; } elseif($row->is_priority == GlobalEnum::isTicketPriorityHigh) { return 'Parah'; } }) ->rawColumns(['title-post','action','status','priority','siswa']) ->filter(function ($query) use ($request) { if ($request->has('search')) { $search = $request->get('search')['value']; $filterCategory = explode('|', $search); if($filterCategory[0] === 'status') { if(!empty($filterCategory[1])) { $query->where('is_status', '=', $filterCategory[1]); } else { $query->get(); } } elseif($filterCategory[0] === 'user') { if(!empty($filterCategory[1])) { $query->where('name', 'LIKE', "%$filterCategory[1]%"); } else { $query->get(); } } } }) ->make(true); } $data = [ 'subtitle' => 'Riwayat Bimbingan & Konseling', ]; return view('admin.app.ticket.index', compact('data')); } public function view($id) { $data = [ 'subtitle' => 'Bimbingan & Konseling #' . explode('-', $id)[0], ]; $detail = TicketModel::where('id', $id)->first(); $siswa = User::where('id', $detail->user_id)->first()->name; $nis = Siswa::where('user_id', $detail->user_id)->first()->nis; $ticketResponse = TicketModel::find($id)->responses; return view('admin.app.ticket.detail', compact('data', 'nis', 'ticketResponse', 'detail', 'siswa')); } public function delete($id) { $ticket = TicketModel::find($id); if($ticket) { $detailReply = TicketResponseModel::where('id_ticket', $ticket->id)->get(); if($ticket->delete() && $detailReply->delete()) { return redirect()->back()->with('swal', swal_alert('success', 'Anda berhasil menghapus tiket.')); } else { return redirect()->back()->with('swal', swal_alert('error', 'Terjadi kesalahan saat menghapus tiket.')); } } } public function closed($id) { $ticket = TicketModel::find($id); if($ticket) { $ticket->is_status = 4; if($ticket->save()) { return redirect()->back()->with('swal', swal_alert('success', 'Anda berhasil menghapus tiket.')); } else { return redirect()->back()->with('swal', swal_alert('error', 'Terjadi kesalahan saat menghapus tiket.')); } } } }