From d62b6977c4aa8fd27c6214d3ab061c9ab51e8343 Mon Sep 17 00:00:00 2001 From: kusowl Date: Wed, 14 Jan 2026 17:42:56 +0530 Subject: [PATCH] feat(user dashboard): add user-specific dashboard with deal listings - Created a dedicated UserDashboardController to handle user-related logic. - Added deal listing views and components for users, including action toolbars, broker contact, and stat badges. - Refactored UI components to support new features like toggle buttons and improved input handling. - Updated routes with a new prefix for user-related pathways, ensuring a better structure across dashboards. --- .../User/UserDashboardController.php | 41 ++++++++++++ app/Models/Deal.php | 4 +- .../{ => broker}/listing-card.blade.php | 2 +- .../{ => broker}/listing-stats.blade.php | 0 .../dashboard/{ => broker}/listing.blade.php | 2 +- .../dashboard/{ => broker}/navbar.blade.php | 0 .../dashboard/{ => broker}/stats.blade.php | 0 .../dashboard/user/action-toolbar.blade.php | 13 ++++ .../dashboard/user/broker-contact.blade.php | 10 +++ .../dashboard/user/listing-card.blade.php | 33 ++++++++++ .../dashboard/user/listing.blade.php | 9 +++ .../dashboard/user/stat-badge.blade.php | 5 ++ resources/views/components/ui/input.blade.php | 2 +- .../views/components/ui/select.blade.php | 2 +- .../ui/toggle-button-group.blade.php | 4 ++ .../components/ui/toggle-button.blade.php | 8 +++ .../views/dashboards/broker/index.blade.php | 6 +- .../views/dashboards/user/index.blade.php | 63 ++++++++++++++++++- routes/web.php | 12 ++-- 19 files changed, 202 insertions(+), 14 deletions(-) create mode 100644 app/Http/Controllers/User/UserDashboardController.php rename resources/views/components/dashboard/{ => broker}/listing-card.blade.php (94%) rename resources/views/components/dashboard/{ => broker}/listing-stats.blade.php (100%) rename resources/views/components/dashboard/{ => broker}/listing.blade.php (94%) rename resources/views/components/dashboard/{ => broker}/navbar.blade.php (100%) rename resources/views/components/dashboard/{ => broker}/stats.blade.php (100%) create mode 100644 resources/views/components/dashboard/user/action-toolbar.blade.php create mode 100644 resources/views/components/dashboard/user/broker-contact.blade.php create mode 100644 resources/views/components/dashboard/user/listing-card.blade.php create mode 100644 resources/views/components/dashboard/user/listing.blade.php create mode 100644 resources/views/components/dashboard/user/stat-badge.blade.php create mode 100644 resources/views/components/ui/toggle-button-group.blade.php create mode 100644 resources/views/components/ui/toggle-button.blade.php diff --git a/app/Http/Controllers/User/UserDashboardController.php b/app/Http/Controllers/User/UserDashboardController.php new file mode 100644 index 0000000..41742f2 --- /dev/null +++ b/app/Http/Controllers/User/UserDashboardController.php @@ -0,0 +1,41 @@ +with('deals', $this->deals()); + } + + protected function deals() + { + return Deal::query() + ->where('active', true) + ->select([ + 'id', + 'title', + 'description', + 'image', + 'active', + 'slug', + 'link', + 'deal_category_id', + 'user_id', + ]) + ->with([ + 'category:id,name', + 'broker' => function ($query) { + $query->select('id', 'name', 'email', 'role_type', 'role_id') + ->with('type'); + }, + ]) + ->latest() + ->paginate(); + } +} diff --git a/app/Models/Deal.php b/app/Models/Deal.php index d4b666b..b10c0b6 100644 --- a/app/Models/Deal.php +++ b/app/Models/Deal.php @@ -7,9 +7,9 @@ class Deal extends Model { - public function User(): BelongsTo + public function broker(): BelongsTo { - return $this->belongsTo(User::class); + return $this->belongsTo(User::class, 'user_id'); } public function category(): BelongsTo diff --git a/resources/views/components/dashboard/listing-card.blade.php b/resources/views/components/dashboard/broker/listing-card.blade.php similarity index 94% rename from resources/views/components/dashboard/listing-card.blade.php rename to resources/views/components/dashboard/broker/listing-card.blade.php index 6594c9e..305ed5f 100644 --- a/resources/views/components/dashboard/listing-card.blade.php +++ b/resources/views/components/dashboard/broker/listing-card.blade.php @@ -27,7 +27,7 @@ class="text-xs underline text-accent-601 mt-1">

{{$category}}

- +
My Listings

@forelse($deals as $deal) - + + + + + + + + + + + +
diff --git a/resources/views/components/dashboard/user/broker-contact.blade.php b/resources/views/components/dashboard/user/broker-contact.blade.php new file mode 100644 index 0000000..106d291 --- /dev/null +++ b/resources/views/components/dashboard/user/broker-contact.blade.php @@ -0,0 +1,10 @@ +@props(['broker']) +
+

Broker Contact

+
+

{{$broker->name}}

+

{{$broker->email}}

+

{{$broker->role->phone}}

+
+
+ diff --git a/resources/views/components/dashboard/user/listing-card.blade.php b/resources/views/components/dashboard/user/listing-card.blade.php new file mode 100644 index 0000000..00a815e --- /dev/null +++ b/resources/views/components/dashboard/user/listing-card.blade.php @@ -0,0 +1,33 @@ +@props(['deal' => '', 'broker' => '']) + +
+
+ + {{$deal->category->name}} + + +
+ +

{{$deal->title}}

+ +

{{$deal->description}}

+ + + +
+
+ + + + + + + +
+ +

View Deal

+ +
+
+
+
diff --git a/resources/views/components/dashboard/user/listing.blade.php b/resources/views/components/dashboard/user/listing.blade.php new file mode 100644 index 0000000..a2de9dd --- /dev/null +++ b/resources/views/components/dashboard/user/listing.blade.php @@ -0,0 +1,9 @@ +@props(['deals' => []]) +
+ @forelse($deals as $deal) + @ds($deal) + + @empty +

No Deals found till now !

+ @endforelse +
diff --git a/resources/views/components/dashboard/user/stat-badge.blade.php b/resources/views/components/dashboard/user/stat-badge.blade.php new file mode 100644 index 0000000..c029c2f --- /dev/null +++ b/resources/views/components/dashboard/user/stat-badge.blade.php @@ -0,0 +1,5 @@ +@props(['count' => 0]) +
+ {{$slot}} +

{{$count}}

+
diff --git a/resources/views/components/ui/input.blade.php b/resources/views/components/ui/input.blade.php index da32456..89e2f86 100644 --- a/resources/views/components/ui/input.blade.php +++ b/resources/views/components/ui/input.blade.php @@ -1,5 +1,5 @@ @props(['label' => '', 'name' => '', 'placeholder' => '', 'type' => 'text', 'description' => '', 'required' => false, 'value' => '']) -
+
merge(['class' => 'flex flex-col space-y-2'])}}> @if($label !== '')