diff --git a/project/app/Http/Controllers/Web/UserController.php b/project/app/Http/Controllers/Web/UserController.php index 04d4090..06b57b1 100644 --- a/project/app/Http/Controllers/Web/UserController.php +++ b/project/app/Http/Controllers/Web/UserController.php @@ -12,6 +12,7 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; class UserController extends Controller @@ -97,7 +98,7 @@ public function tickets() ->select(['id', 'department', 'receiver_id', 'code', 'subject', 'status', 'created_at', 'deleted_at']) ->get(); $records->map(function ($item) { - $item->url = route('user.tickets.detail', ['code' => $item->code]); + $item->url = route('user.ticket.detail', ['ticket' => $item->code]); $item->status_text = TicketStatus::from($item->status)->textWithBadge(); $item->created_at_text = format_date(\Carbon\Carbon::parse($item->created_at), 'date-text-with-hour'); }); @@ -108,12 +109,11 @@ public function show_ticket(Ticket $ticket) { $user = Auth::guard('web')->user(); $sender_id = Auth::guard('web')->id(); - $sender_id = 2; if ($ticket->sender_id != $sender_id) { abort(403); } $record = Ticket::query()->where('sender_id', $sender_id) - ->with(['receiverId:id,name']) + ->with(['receiverId:id,name,avatar']) ->select(['id', 'department', 'receiver_id', 'code', 'subject', 'status', 'created_at', 'deleted_at']) ->first(); if (empty($record)) { @@ -136,4 +136,40 @@ public function show_ticket(Ticket $ticket) $default_logo = voyager_asset('images/logo-icon.png'); return view('web.user.ticket-detail', compact(['record', 'ticket_messages', 'user', 'default_logo'])); } + + /** + * @param Request $request + * @param Ticket $ticket + * @return \Illuminate\Http\RedirectResponse + */ + public function reply_ticket(Request $request, Ticket $ticket): \Illuminate\Http\RedirectResponse + { + $validator = Validator::make($request->all(), [ + 'message' => ['required', 'string', 'min:2'] + ]); + if ($validator->fails()) { + return redirect()->back()->with([ + 'message' => $validator->errors()->all(), + 'alert-type' => 'danger' + ]); + } + try { + Ticket::query()->findOrFail($ticket->id); + $ticket_message = new TicketMessage(); + $ticket_message->ticket_id = $ticket->id; + $ticket_message->sender_id = Auth::guard('web')->id(); + $ticket_message->message = strip_tags(htmlentities($request->message)); + $ticket_message->updated_at = null; + $ticket_message->save(); + return redirect()->back()->with([ + 'message' => 'Message sent successfully.', + 'alert-type' => 'success' + ]); + } catch (\Exception $e) { + return redirect()->back()->with([ + 'message' => $e->getMessage(), + 'alert-type' => 'danger' + ]); + } + } } diff --git a/project/resources/views/components/web/chat.blade.php b/project/resources/views/components/web/chat.blade.php index 8421852..e1a5844 100644 --- a/project/resources/views/components/web/chat.blade.php +++ b/project/resources/views/components/web/chat.blade.php @@ -8,13 +8,13 @@
@php - $user_avatar = !empty($user->avatar) ? Voyager::image($user->avatar) : $defaultAvatar; + $user_avatar = !empty($record->receiverId->avatar) ? Voyager::image($record->receiverId->avatar) : $defaultAvatar; @endphp - {{ $user->name ?? '' }} + {{ $record->receiverId?->avatar ?? '' }}
-
{{ !empty($user->name) ? ucwords($user->name) : '' }}
- {{ $user->email ?? '' }} +
{{ !empty($record->receiverId->name) ? ucwords($record->receiverId->name) : '' }}
+ {{ $record->receiverId->email ?? '' }}
@@ -473,7 +473,6 @@ - @pushonce("style") {{----}} diff --git a/project/resources/views/web/user/ticket-detail.blade.php b/project/resources/views/web/user/ticket-detail.blade.php index 57dfbf8..8d2e9dd 100644 --- a/project/resources/views/web/user/ticket-detail.blade.php +++ b/project/resources/views/web/user/ticket-detail.blade.php @@ -5,6 +5,20 @@ @section("content")
+ + @if(session('message')) +
+
+ @if(is_array(session('message'))) + @foreach(session('message') as $item) + {{ $item }} + @endforeach + @else + {{ session('message') }} + @endif +
+
+ @endif name('password.edit')->whereNumber('id'); Route::get('tickets', "tickets")->name('tickets'); Route::get('ticket/{ticket:code}', "show_ticket")->name('ticket.detail'); - Route::post('ticket/{ticket:code}/reply', "reply")->name('ticket.reply'); + Route::post('ticket/{ticket:code}/reply', "reply_ticket")->name('ticket.reply'); }); Route::name('article.')->controller('\App\Http\Controllers\Web\ArticleController')->group(function () { Route::get('about-us', "show_article_page")->name('about_us');