'Halaman Utama', ]; $getTotalTicketOpen = TicketModel::whereIn('is_status', [1, 2, 3])->count(); $getTotalTicketClose = TicketModel::where('is_status', 4)->count(); $getTotalTicket = TicketModel::count(); $getTotalAduan = TicketModel::orderBy('created_at', 'desc')->get(); return view('kepsek.index', compact('data', 'getTotalAduan', 'getTotalTicketOpen', 'getTotalTicketClose', 'getTotalTicket')); } // ticket aduan public function ticket(Request $request) { if ($request->ajax()) { $data = TicketModel::orderBy('created_at', 'desc')->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 'User Membalas'; } elseif($row->is_status == 3) { return 'Konselor Membalas'; } elseif($row->is_status == 4) { return '-'; } }) ->addColumn('jenis', function($row){ if ($row->type == 1) { return 'Aplikasi'; } elseif($row->type == 2) { return 'Face to Face'; } }) ->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', 'jenis']) ->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', 'LIKE', "%$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' => 'Semua Tiket Aduan' ]; return view('kepsek.ticket.index', compact('data')); } public function cetak(Request $request) { $start_date = $request->start_date; $end_date = $request->end_date; if(empty($start_date) && empty($end_date)) { return redirect()->back()->with('swal', swal_alert('error', 'Periode tidak boleh kosong.')); } $report = TicketModel::whereBetween('created_at', [$start_date, $end_date])->get(); $periode = $start_date . ' s/d ' . $end_date; return view('admin.app.ticket.cetak', compact('report', 'periode')); } public function view($id) { $data = [ 'subtitle' => 'Aduan Tiket #' . explode('-', $id)[0], ]; $detail = TicketModel::where('id', $id)->first(); if($detail->is_approve_siswa == 1 && $detail->is_approve_konselor == 1) { $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('kepsek.ticket.detail', compact('data', 'nis', 'ticketResponse', 'detail', 'siswa')); } else { return redirect()->back()->with('swal', swal_alert('error', 'Maaf! Anda tidak dapat membaca riwayat arsip pesan ini, mohon tunggu approve dari siswa, wali murid dan konselor.')); } } // profile public function profil() { $data = [ 'subtitle' => 'Akun saya', 'records' => User::where('id', user()->id)->first() ]; return view('kepsek.account.profile', compact('data')); } public function updateProfile(Request $request) { $id = user()->id; $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email', 'image' => 'image|mimes:jpg,jpeg,png,svg|max:7048', ], [ 'image.mimes' => 'Tipe file yang diunggah harus jpg, jpeg, png, atau svg.', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } $foto_namaBaru = null; if ($request->hasFile('image') && $request->file('image')->isValid()) { $foto_namaBaru = $request->file('image')->store('public/images'); } // Cari data berdasarkan ID $user = User::find($id); // Jika data ditemukan if ($user) { // Update data dengan data baru dari form yang telah dibersihkan $user->name = $request->input('name'); $user->email = $request->input('email'); !empty($request->input('password')) ? $user->password = bcrypt($request->input('password')) : $user->password; $user->username = Str::before($user->email, '@') . rand(100, 999); $user->thumbnail = $foto_namaBaru; // Simpan perubahan pada database $user->save(); return redirect()->back()->with('swal', swal_alert('success', 'You are successfully modify data')); } else { return redirect()->back()->with('swal', swal_alert('error', 'Unexpected error')); } } }