diff --git a/app/Http/Controllers/ExplorePageController.php b/app/Http/Controllers/ExplorePageController.php index 3c3f0b9..00419ec 100644 --- a/app/Http/Controllers/ExplorePageController.php +++ b/app/Http/Controllers/ExplorePageController.php @@ -33,7 +33,7 @@ protected function deals(FormRequest $request, Builder $query, AddRecentSearchAc { // Add a search query if ($request->has('search') && $request->get('search') !== null) { - $query->tap(fn ($q) => (new Deal)->search($q, $request->search)); + $query->tap(fn($q) => (new Deal)->search($q, $request->search)); \Illuminate\Support\defer(function () use ($action, $request) { $action->execute($request->user(), ['query' => $request->search]); @@ -42,19 +42,17 @@ protected function deals(FormRequest $request, Builder $query, AddRecentSearchAc // Add category sorting filter if ($request->has('category') && $request->get('category') !== null) { - $query->tap(fn ($q) => (new Deal)->filterByCategory($q, $request->category)); + $query->tap(fn($q) => (new Deal)->filterByCategory($q, $request->category)); } // Add sorting filters - if ($request->has('sortBy')) { - $query = match (ExplorePageFilters::tryFrom($request->sortBy)) { - ExplorePageFilters::Like => $query->orderBy('total_likes', 'desc'), - ExplorePageFilters::Click => $query->orderBy('total_redirection', 'desc'), - default => $query->orderByRaw( - '((COALESCE(total_likes, 0) * 70.0) / 100.0) + ((COALESCE(total_redirection, 0) * 30.0) / 100.0) DESC' - ) - }; - } + $query = match (ExplorePageFilters::tryFrom($request->sortBy)) { + ExplorePageFilters::Like => $query->orderBy('total_likes', 'desc'), + ExplorePageFilters::Click => $query->orderBy('total_redirection', 'desc'), + default => $query->orderByRaw( + '((COALESCE(total_likes, 0) * 70.0) / 100.0) + ((COALESCE(total_redirection, 0) * 30.0) / 100.0) DESC' + ) + }; return $query->latest()->paginate(); } diff --git a/app/Http/Controllers/Interaction/ReportController.php b/app/Http/Controllers/Interaction/ReportController.php index 8834bec..37cc512 100644 --- a/app/Http/Controllers/Interaction/ReportController.php +++ b/app/Http/Controllers/Interaction/ReportController.php @@ -9,6 +9,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; class ReportController extends Controller @@ -30,9 +31,9 @@ public function store(StoreReportRequest $request, Deal $deal) $data['user_id'] = Auth::id(); // Check if the user already reported the deal - $alreadyReported = $deal->reports()->where('user_id', Auth::id())->first(); + $alreadyReported = $deal->reports()->where('user_id', Auth::id())->exists(); if ($alreadyReported) { - return response()->json(['message' => 'You already reported this report'], 405); + return response()->json(['message' => 'You had already reported this deal'], 200); } try { @@ -42,7 +43,7 @@ public function store(StoreReportRequest $request, Deal $deal) Report::reguard(); }); - return response()->json(['message' => 'Report created'], 201); + return response()->json(['message' => 'Report submitted. Thank you for keeping DealHub safe'], 201); } catch (\Throwable $exception) { Log::error('Error creating report', [ diff --git a/app/Models/Deal.php b/app/Models/Deal.php index cec6c4b..ddcb55b 100644 --- a/app/Models/Deal.php +++ b/app/Models/Deal.php @@ -105,9 +105,10 @@ public function withViewPerDeal(Builder $query): Builder #[Scope] public function search(Builder $query, string $search): Builder { - return $query - ->where('title', 'LIKE', "%$search%") - ->orWhereRelation('broker', 'name', 'LIKE', "%$search%"); + return $query->where(function (Builder $query) use ($search) { + $query->where('title', 'LIKE', "%$search%") + ->orWhereRelation('broker', 'name', 'LIKE', "%$search%"); + }); } /** diff --git a/resources/js/report-deal.js b/resources/js/report-deal.js index cad0547..67094b7 100644 --- a/resources/js/report-deal.js +++ b/resources/js/report-deal.js @@ -28,20 +28,16 @@ if (reportForm) { try { let response = await axios.post( - `report/${dealId}`, + `api/report/${dealId}`, formData ); - showToast('Report submitted. Thank you for keeping DealHub safe!'); + showToast(response.data.message); closeModal('report-modal') } catch (error) { - if (error.response.status === 405) { - closeModal('report-modal'); - showToast('You already have reported this deal !'); - return; - } + // Iterate over the all error messages spans and show validation errors if (error.response.status === 422) { diff --git a/resources/views/components/dashboard/user/recent-search/index.blade.php b/resources/views/components/dashboard/user/recent-search/index.blade.php index 7b3dcfc..bd43380 100644 --- a/resources/views/components/dashboard/user/recent-search/index.blade.php +++ b/resources/views/components/dashboard/user/recent-search/index.blade.php @@ -1,6 +1,8 @@ -@props(['searches']) -