find($request->ticket_id); return view('admin.messages',[ 'ticket' => $ticket ]); } public function getTicketMessages(Request $request) { if(Ticket::find($request->ticket_id)) { $messages = Message::where('ticket_id', $request->ticket_id) ->orderBy('id', 'asc') ->paginate($request->per_page ?? 10); return MessageResource::collection($messages); } return response()->json([ "message" => trans('app.ticket.not_found', ['id' => $request->ticket_id]), "errors" => [ "ticket_id" => [trans('app.ticket.not_found', ['id' => $request->ticket_id]) ] ] ], 404); } public function postMessage(MessageRequest $request) { try{ $message = new Message($request->only(['ticket_id', 'content'])); $message['is_client'] = true; $message['client_id'] = $request->user()->id; $message->save(); $ticket = Ticket::find($request->ticket_id); $ticket['last_sender'] = 'client'; $ticket->save(); return MessageResource::make($message); } catch(\Exception $e){ return $e->getMessage(); } } public function postMessageAdmin(MessageRequest $request) { try{ $message = new Message($request->only(['ticket_id', 'content', 'admin_id', 'status_id'])); $message['is_client'] = false; $message->save(); $ticket = Ticket::find($request->ticket_id); $ticket['last_sender'] = 'admin'; $ticket->save(); return MessageResource::make($message); } catch(\Exception $e){ return $e->getMessage(); } } public function getTickets(Request $request) { $client = $request->user(); $account = Account::find($client->account_id); $tickets = Ticket::with('status') ->where('client_id', $account->id) ->orderBy('created_at', 'desc') ->paginate($request->per_page ?? 10); return TicketResource::collection($tickets); } public function postTicket(TicketRequest $request) { $ticket = new Ticket($request->only('content', 'title','category_id')); $client = $request->user(); $account = Account::find($client->account_id); $ticket['client_id'] = $account->id; $status = Status::where('name', 'Open')->firstOrFail(); $ticket['status_id'] = $status->id; $ticket['last_sender'] = 'client'; $ticket->save(); Message::create(['ticket_id' => $ticket->id, 'content' => $request->get("content"),'is_client' => true]); return TicketResource::make($ticket); } //create ticket inside application preview - admin panel public function createAppTicket(Request $request){ $ticket = new Ticket($request->only('content', 'title','category_id', 'client_id', 'account_id', 'application_id')); $ticket['status_id'] = 1; $ticket->save(); return redirect()->route('chat',['ticket_id' => $ticket->id]); } public function accountForTicketsAjax(Request $request){ $search_term = $request->input('q'); if ($search_term) { $results = Account::whereHasMorph('profile', [Business::class, Company::class], function (Builder $query) use ($search_term) { $query->where('name', 'like', '%' . $search_term . '%')->orWhere('surname', 'like', '%' . $search_term . '%'); })->paginate(10); } else { $results = Account::paginate(10); } return $results; } }