Ticket::orderBy('id', 'desc')->paginate(10), 'ticketcategories' => TicketCategory::all(), 'locale_datatables' => $locale_settings->datatables ]); } public function show($ticket_id, PterodactylSettings $ptero_settings) { try { $ticket = Ticket::where('ticket_id', $ticket_id)->firstOrFail(); } catch (Exception $e) { return redirect()->back()->with('warning', __('Ticket not found on the server. It potentially got deleted earlier')); } $ticketcomments = $ticket->ticketcomments; $ticketcategory = $ticket->ticketcategory; $server = Server::where('id', $ticket->server)->first(); $pterodactyl_url = $ptero_settings->panel_url; return view('moderator.ticket.show', compact('ticket', 'ticketcategory', 'ticketcomments', 'server', 'pterodactyl_url')); } public function changeStatus($ticket_id) { try { $ticket = Ticket::where('ticket_id', $ticket_id)->firstOrFail(); } catch(Exception $e) { return redirect()->back()->with('warning', __('Ticket not found on the server. It potentially got deleted earlier')); } if($ticket->status == "Closed"){ $ticket->status = "Reopened"; $ticket->save(); return redirect()->back()->with('success', __('A ticket has been reopened, ID: #') . $ticket->ticket_id); } $ticket->status = 'Closed'; $ticket->save(); $ticketOwner = $ticket->user; return redirect()->back()->with('success', __('A ticket has been closed, ID: #').$ticket->ticket_id); } public function delete($ticket_id) { try { $ticket = Ticket::where('ticket_id', $ticket_id)->firstOrFail(); } catch (Exception $e) { return redirect()->back()->with('warning', __('Ticket not found on the server. It potentially got deleted earlier')); } TicketComment::where('ticket_id', $ticket->id)->delete(); $ticket->delete(); return redirect()->back()->with('success', __('A ticket has been deleted, ID: #').$ticket_id); } public function reply(Request $request) { $this->validate($request, ['ticketcomment' => 'required']); try { $ticket = Ticket::where('id', $request->input('ticket_id'))->firstOrFail(); } catch (Exception $e){ return redirect()->back()->with('warning', __('Ticket not found on the server. It potentially got deleted earlier')); } $ticket->status = 'Answered'; $ticket->update(); TicketComment::create([ 'ticket_id' => $request->input('ticket_id'), 'user_id' => Auth::user()->id, 'ticketcomment' => $request->input('ticketcomment'), ]); try { $user = User::where('id', $ticket->user_id)->firstOrFail(); } catch(Exception $e) { return redirect()->back()->with('warning', __('User not found on the server. Check on the admin database or try again later.')); } $newmessage = $request->input('ticketcomment'); $user->notify(new ReplyNotification($ticket, $user, $newmessage)); return redirect()->back()->with('success', __('Your comment has been submitted')); } public function dataTable() { $query = Ticket::query(); return datatables($query) ->addColumn('category', function (Ticket $tickets) { return $tickets->ticketcategory->name; }) ->editColumn('title', function (Ticket $tickets) { return ''.'#'.$tickets->ticket_id.' - '.htmlspecialchars($tickets->title).''; }) ->editColumn('user_id', function (Ticket $tickets) { return ''.$tickets->user->name.''; }) ->addColumn('actions', function (Ticket $tickets) { $statusButtonColor = ($tickets->status == "Closed") ? 'btn-success' : 'btn-warning'; $statusButtonIcon = ($tickets->status == "Closed") ? 'fa-redo' : 'fa-times'; $statusButtonText = ($tickets->status == "Closed") ? __('Reopen') : __('Close'); return '
'.csrf_field().' '.method_field('POST').'
'.csrf_field().' '.method_field('POST').'
'; }) ->editColumn('status', function (Ticket $tickets) { switch ($tickets->status) { case 'Reopened': case 'Open': $badgeColor = 'badge-success'; break; case 'Closed': $badgeColor = 'badge-danger'; break; case 'Answered': $badgeColor = 'badge-info'; break; default: $badgeColor = 'badge-warning'; break; } return ''.$tickets->status.''; }) ->editColumn('priority', function (Ticket $tickets) { return __($tickets->priority); }) ->editColumn('updated_at', function (Ticket $tickets) { return ['display' => $tickets->updated_at ? $tickets->updated_at->diffForHumans() : '', 'raw' => $tickets->updated_at ? strtotime($tickets->updated_at) : '']; }) ->rawColumns(['category', 'title', 'user_id', 'status', 'priority', 'updated_at', 'actions']) ->make(true); } public function blacklist(LocaleSettings $locale_settings) { return view('moderator.ticket.blacklist', [ 'locale_datatables' => $locale_settings->datatables ]); } public function blacklistAdd(Request $request) { try { $user = User::where('id', $request->user_id)->firstOrFail(); $check = TicketBlacklist::where('user_id', $user->id)->first(); } catch (Exception $e){ return redirect()->back()->with('warning', __('User not found on the server. Check the admin database or try again later.')); } if ($check) { $check->reason = $request->reason; $check->status = 'True'; $check->save(); return redirect()->back()->with('info', __('Target User already in blacklist. Reason updated')); } TicketBlacklist::create([ 'user_id' => $user->id, 'status' => 'True', 'reason' => $request->reason, ]); return redirect()->back()->with('success', __('Successfully add User to blacklist, User name: '.$user->name)); } public function blacklistDelete($id) { $blacklist = TicketBlacklist::where('id', $id)->first(); $blacklist->delete(); return redirect()->back()->with('success', __('Successfully remove User from blacklist, User name: '.$blacklist->user->name)); } public function blacklistChange($id) { try { $blacklist = TicketBlacklist::where('id', $id)->first(); } catch (Exception $e){ return redirect()->back()->with('warning', __('User not found on the server. Check the admin database or try again later.')); } if ($blacklist->status == 'True') { $blacklist->status = 'False'; } else { $blacklist->status = 'True'; } $blacklist->update(); return redirect()->back()->with('success', __('Successfully change status blacklist from, User name: '.$blacklist->user->name)); } public function dataTableBlacklist() { $query = TicketBlacklist::with(['user']); $query->select('ticket_blacklists.*'); return datatables($query) ->editColumn('user', function (TicketBlacklist $blacklist) { return ''.$blacklist->user->name.''; }) ->editColumn('status', function (TicketBlacklist $blacklist) { switch ($blacklist->status) { case 'True': $text = 'Blocked'; $badgeColor = 'badge-danger'; break; default: $text = 'Unblocked'; $badgeColor = 'badge-success'; break; } return ''.$text.''; }) ->editColumn('reason', function (TicketBlacklist $blacklist) { return $blacklist->reason; }) ->addColumn('actions', function (TicketBlacklist $blacklist) { return '
'.csrf_field().' '.method_field('POST').'
'.csrf_field().' '.method_field('POST').'
'; }) ->editColumn('created_at', function (TicketBlacklist $blacklist) { return $blacklist->created_at ? $blacklist->created_at->diffForHumans() : ''; }) ->rawColumns(['user', 'status', 'reason', 'created_at', 'actions']) ->make(true); } }