saved jobs

This commit is contained in:
Doar Mihai
2026-05-01 02:58:06 +03:00
parent 75388cfb95
commit 17097c3bb1
7 changed files with 133 additions and 14 deletions
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller;
use App\Models\Job;
use Illuminate\Http\Request;
class BookmarkController extends Controller
{
public function toggle(Request $request, Job $job)
{
$user = $request->user();
$user->savedJobs()->toggle($job->id);
if ($request->wantsJson()) {
$bookmarked = $user->savedJobs()->where('job_id', $job->id)->exists();
return response()->json(['bookmarked' => $bookmarked]);
}
return back();
}
public function index(Request $request)
{
$jobs = $request->user()->savedJobs()->latest('user_saved_jobs.created_at')->paginate(20);
return view('jobs.bookmarks', compact('jobs'));
}
}
+14 -7
View File
@@ -2,23 +2,30 @@
namespace App\Providers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
//
View::composer('components.job-card', function ($view) {
static $bookmarkedIds = null;
if ($bookmarkedIds === null) {
$bookmarkedIds = Auth::check()
? Auth::user()->savedJobs()->pluck('job_id')->flip()
: collect();
}
$job = $view->getData()['job'];
$view->with('bookmarked', $bookmarkedIds->has($job->id));
});
}
}