From 39799ecf61b71e2397bf552992732737f5d0d14a Mon Sep 17 00:00:00 2001 From: ashish aryal Date: Tue, 30 Sep 2025 07:57:22 +0200 Subject: [PATCH 1/2] this was bothering me more than i can admit --- app/Http/Controllers/VoteController.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 app/Http/Controllers/VoteController.php diff --git a/app/Http/Controllers/VoteController.php b/app/Http/Controllers/VoteController.php new file mode 100644 index 0000000..6d117b8 --- /dev/null +++ b/app/Http/Controllers/VoteController.php @@ -0,0 +1,10 @@ + Date: Tue, 30 Sep 2025 08:25:21 +0200 Subject: [PATCH 2/2] vote has its own controller and few house keeping --- .../Controllers/V1/SuggestionController.php | 20 ------------------- app/Http/Controllers/V1/TripController.php | 5 +---- app/Http/Controllers/VoteController.php | 18 ++++++++++++++++- resources/views/trips/index.blade.php | 9 ++++++++- routes/web.php | 3 ++- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/app/Http/Controllers/V1/SuggestionController.php b/app/Http/Controllers/V1/SuggestionController.php index 988d8a3..42eddbe 100644 --- a/app/Http/Controllers/V1/SuggestionController.php +++ b/app/Http/Controllers/V1/SuggestionController.php @@ -5,7 +5,6 @@ namespace App\Http\Controllers\V1; use App\Enums\SuggestionStatus; -use App\Enums\VoteType; use App\Http\Controllers\Controller; use App\Http\Requests\SuggestionRequest; use App\Models\Suggestion; @@ -31,25 +30,6 @@ public function store(Trip $trip, SuggestionRequest $suggestionRequest): Redirec return redirect()->route('trips.show', ['trip' => $trip]); } - /** - * This can and should be moved to its own controller - * - * one user can vote only once - */ - public function vote(Suggestion $suggestion, Request $request): RedirectResponse - { - $validated = $request->validate([ - 'type' => ['required', new Enum(VoteType::class)], - ]); - - $suggestion->vote()->updateOrCreate([ - 'user_id' => auth()->id(), - 'suggestion_id' => $suggestion->id, - ], $validated); - - return redirect()->back(); - } - /** * updates status for a suggestion */ diff --git a/app/Http/Controllers/V1/TripController.php b/app/Http/Controllers/V1/TripController.php index aa87aec..02b5067 100644 --- a/app/Http/Controllers/V1/TripController.php +++ b/app/Http/Controllers/V1/TripController.php @@ -9,7 +9,6 @@ use App\Models\Trip; use App\Models\User; use App\Repositories\Contracts\TripRepositoryContract; -use App\Repositories\TripRepository; use Illuminate\Database\Eloquent\Collection; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Cache; @@ -17,9 +16,6 @@ class TripController extends Controller { - /** - * @param TripRepository $trip - */ public function __construct( protected TripRepositoryContract $trip ) {} @@ -93,6 +89,7 @@ public function update(TripRequest $tripRequest, Trip $trip): RedirectResponse /** * Caches users and retrieves them. + * this can be moved to a CacheService * * @return Collection */ diff --git a/app/Http/Controllers/VoteController.php b/app/Http/Controllers/VoteController.php index 6d117b8..afe772a 100644 --- a/app/Http/Controllers/VoteController.php +++ b/app/Http/Controllers/VoteController.php @@ -2,9 +2,25 @@ namespace App\Http\Controllers; +use App\Enums\VoteType; +use App\Models\Suggestion; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Validation\Rules\Enum; class VoteController extends Controller { - // + public function vote(Suggestion $suggestion, Request $request): RedirectResponse + { + $validated = $request->validate([ + 'type' => ['required', new Enum(VoteType::class)], + ]); + + $suggestion->vote()->updateOrCreate([ + 'user_id' => auth()->id(), + 'suggestion_id' => $suggestion->id, + ], $validated); + + return redirect()->back(); + } } diff --git a/resources/views/trips/index.blade.php b/resources/views/trips/index.blade.php index 37db3b8..07f5e5f 100644 --- a/resources/views/trips/index.blade.php +++ b/resources/views/trips/index.blade.php @@ -13,7 +13,14 @@ diff --git a/routes/web.php b/routes/web.php index 87e747b..0076433 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,6 +3,7 @@ use App\Http\Controllers\ProfileController; use App\Http\Controllers\V1\SuggestionController; use App\Http\Controllers\V1\TripController; +use App\Http\Controllers\VoteController; use Illuminate\Support\Facades\Route; Route::get('/', function () { @@ -31,7 +32,7 @@ // Route::middleware('can:view,suggestion.trip')->group(function () { Route::get('/suggestions/{suggestion}/status', [SuggestionController::class, 'status'])->name('suggestions.status'); - Route::get('/suggestions/{suggestion}/vote', [SuggestionController::class, 'vote'])->name('suggestions.vote'); + Route::get('/suggestions/{suggestion}/vote', [VoteController::class, 'vote'])->name('suggestions.vote'); }); // They can update the trips