group(function () { // Profile Management Route::get('/workers/profile', [WorkerProfileController::class, 'getProfile']); Route::post('/workers/profile/update', [WorkerProfileController::class, 'updateProfile']); Route::post('/workers/profile/upload-emirates-id', [WorkerProfileController::class, 'uploadEmiratesId']); Route::post('/workers/go-live', [WorkerProfileController::class, 'goLive']); Route::post('/workers/profile/toggle-availability', [WorkerProfileController::class, 'toggleAvailability']); Route::post('/workers/profile/mark-hired', [WorkerProfileController::class, 'markHired']); Route::get('/workers/dashboard/views', [WorkerProfileController::class, 'getProfileViews']); Route::get('/workers/dashboard', [WorkerProfileController::class, 'getDashboard']); // Job Offers Management Route::get('/workers/offers', [WorkerProfileController::class, 'getOffers']); Route::post('/workers/offers/{id}/respond', [WorkerProfileController::class, 'respondToOffer']); // Messaging Management Route::get('/workers/conversations', [WorkerMessageController::class, 'getConversations']); Route::get('/workers/conversations/{id}/messages', [WorkerMessageController::class, 'getMessages']); Route::post('/workers/conversations/{id}/messages', [WorkerMessageController::class, 'sendMessage']); // Announcement Management Route::get('/workers/announcements', [WorkerAnnouncementController::class, 'getAnnouncements']); // Report Management Route::post('/workers/report', [\App\Http\Controllers\Api\ReportController::class, 'reportFromWorker']); Route::get('/workers/report-reasons', [\App\Http\Controllers\Api\ReportController::class, 'getReasonsForWorker']); }); // Protected Employer Mobile Endpoints (Token Authenticated via Bearer Token) Route::middleware(['auth.employer'])->group(function () { // Profile & Dashboard Management Route::get('/employers/profile', [EmployerProfileController::class, 'getProfile']); Route::post('/employers/profile/update', [EmployerProfileController::class, 'updateProfile']); Route::get('/employers/dashboard', [EmployerProfileController::class, 'getDashboard']); // Messaging Management Route::get('/employers/conversations', [EmployerMessageController::class, 'getConversations']); Route::get('/employers/conversations/{id}/messages', [EmployerMessageController::class, 'getMessages']); Route::post('/employers/conversations/{id}/messages', [EmployerMessageController::class, 'sendMessage']); Route::post('/employers/conversations/start', [EmployerMessageController::class, 'startConversation']); // Announcement Management Route::get('/employers/announcements', [EmployerAnnouncementController::class, 'getAnnouncements']); Route::post('/employers/announcements', [EmployerAnnouncementController::class, 'createAnnouncement']); Route::delete('/employers/announcements/{id}', [EmployerAnnouncementController::class, 'deleteAnnouncement']); // Worker and Candidate Pipeline Management Route::get('/employers/workers', [\App\Http\Controllers\Api\EmployerWorkerController::class, 'getWorkers']); Route::get('/employers/workers/{id}', [\App\Http\Controllers\Api\EmployerWorkerController::class, 'getWorkerDetail']); Route::get('/employers/candidates', [\App\Http\Controllers\Api\EmployerWorkerController::class, 'getCandidates']); Route::post('/employers/candidates/{id}/hire', [\App\Http\Controllers\Api\EmployerWorkerController::class, 'hireCandidate']); Route::post('/employers/candidates/hire', [\App\Http\Controllers\Api\EmployerWorkerController::class, 'hireCandidate']); // Shortlist Management Route::get('/employers/shortlist', [\App\Http\Controllers\Api\EmployerWorkerController::class, 'getShortlist']); Route::post('/employers/shortlist', [\App\Http\Controllers\Api\EmployerWorkerController::class, 'toggleShortlist']); // Payment History Management Route::get('/employers/payments', [\App\Http\Controllers\Api\EmployerPaymentController::class, 'getPayments']); // Review Management Route::get('/employers/reviews', [EmployerReviewController::class, 'getReviews']); Route::post('/employers/reviews', [EmployerReviewController::class, 'addReview']); Route::put('/employers/reviews/{id}', [EmployerReviewController::class, 'editReview']); // Report Management Route::post('/employers/report', [\App\Http\Controllers\Api\ReportController::class, 'reportFromEmployer']); Route::get('/employers/report-reasons', [\App\Http\Controllers\Api\ReportController::class, 'getReasonsForEmployer']); }); // Protected Sponsor Mobile Endpoints (Token Authenticated via Bearer Token) // Sponsors can ONLY access: dashboard and charity events. No payments, no worker browsing. Route::middleware(['auth.sponsor'])->group(function () { Route::get('/sponsors/profile', [SponsorController::class, 'getProfile']); Route::get('/sponsors/dashboard', [SponsorController::class, 'getDashboard']); Route::get('/sponsors/charity-events', [SponsorController::class, 'getCharityEvents']); });