paginate(10); $ticketcategories = TicketCategory::all(); return view("moderator.ticket.index", compact("tickets", "ticketcategories")); } public function show($ticket_id) { $ticket = Ticket::where("ticket_id", $ticket_id)->firstOrFail(); $ticketcomments = $ticket->ticketcomments; $ticketcategory = $ticket->ticketcategory; $server = Server::where('id', $ticket->server)->first(); return view("moderator.ticket.show", compact("ticket", "ticketcategory", "ticketcomments", "server")); } public function close($ticket_id) { $ticket = Ticket::where("ticket_id", $ticket_id)->firstOrFail(); $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){ $ticket = Ticket::where("ticket_id", $ticket_id)->firstOrFail(); 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, array("ticketcomment" => "required")); $ticket = Ticket::where('id', $request->input("ticket_id"))->firstOrFail(); $ticket->status = "Answered"; $ticket->update(); TicketComment::create(array( "ticket_id" => $request->input("ticket_id"), "user_id" => Auth::user()->id, "ticketcomment" => $request->input("ticketcomment"), )); $user = User::where('id', $ticket->user_id)->firstOrFail(); $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 . " - " . $tickets->title . ''; }) ->editColumn('user_id', function (Ticket $tickets) { return '' . $tickets->user->name . ''; }) ->addColumn('actions', function (Ticket $tickets) { return '
' . csrf_field() . ' ' . method_field("POST") . '
' . csrf_field() . ' ' . method_field("POST") . '
'; }) ->editColumn('status', function (Ticket $tickets) { switch ($tickets->status) { 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('updated_at', function (Ticket $tickets) { return $tickets->updated_at ? $tickets->updated_at->diffForHumans() : ''; }) ->rawColumns(['category', 'title', 'user_id', 'status', 'updated_at', 'actions']) ->make(true); } public function blacklist() { $users = User::get(); $ticketcategories = TicketCategory::all(); return view("moderator.ticket.blacklist", compact("users", "ticketcategories")); } public function blacklistAdd(Request $request) { $user = User::where('id', $request->user_id)->first(); $check = TicketBlacklist::where('user_id', $user->id)->first(); if($check){ return redirect()->back()->with('error', __('Target User already in blacklist')); } TicketBlacklist::create(array( "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) { $blacklist = TicketBlacklist::where('id', $id)->first(); 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']); return datatables($query) ->editColumn('user', function (TicketBlacklist $blacklist) { return '' . $blacklist->user->name . ''; }) ->editColumn('status', function (TicketBlacklist $blacklist) { switch ($blacklist->status) { case 'True': $badgeColor = 'badge-success'; break; default: $badgeColor = 'badge-danger'; break; } return '' . $blacklist->status . ''; }) ->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); } }