group(function () { // Auth Routes Route::controller(AuthController::class)->group(function () { Route::post('/login', 'login'); Route::post('/register', 'register'); }); // Protected Routes (Requires Authentication) Route::middleware(['auth:api'])->group(function () { Route::controller(AuthController::class)->group(function () { Route::get('/profile', 'user'); Route::post('/logout', 'logout'); Route::post('/change-password', 'changePassword'); Route::post('/profile-update', 'profileUpdate'); }); // User Routes Route::apiResource('users', UserController::class); // Other API Resources Route::get('restaurant-status-update/{restaurantId}', [RestaurantController::class, 'statusUpdate']); Route::post('restaurants-theme', [RoleController::class, 'restaurantTheme']); Route::apiResource('restaurants', RestaurantController::class); Route::get('permissions-list', [RoleController::class, 'permissionsList']); Route::apiResource('roles', RoleController::class); Route::apiResource('permissions', PermissionController::class); Route::apiResource('users', UserController::class); Route::apiResource('packages', PackageController::class); Route::apiResource('saas-subscriptions', SAASSubscriptionController::class); // Onboarding Route::get('onboardings-list', [OnboardingsController::class, 'index']); Route::get('onboardings-approve/{onboardingId}', [OnboardingsController::class, 'approve']); Route::post('/subscription/upgrade', [OnboardingsController::class, 'upgrade']); Route::get('restaurant-settings', [UtilityController::class, 'restaurantSettingsUpdate']); Route::post('restaurant-settings-update', [UtilityController::class, 'restaurantSettingsUpdate']); Route::post('restaurant-logo-update', [UtilityController::class, 'restaurantLogoUpdate']); // Utility Routes Route::post('/global-status-update', [UtilityController::class, 'globalStatusUpdate']); Route::apiResource('feedbacks', FeedbackController::class); Route::apiResource('saas-faqs', SAASFaqController::class); Route::get('saas-dashboard-data', [DashboardController::class, 'saasDashboardData']); Route::get('dashboard-data', [DashboardController::class, 'index']); Route::post('saas-settings-update', [DashboardController::class, 'saasSettingsUpdate']); Route::post('saas-settings-upload-logo', [DashboardController::class, 'uploadLogo']); Route::get('saas-settings-mail-config', [DashboardController::class, 'getMailConfig']); Route::post('saas-settings-mail-update', [DashboardController::class, 'updateMailConfig']); // Image Upload settings Route::apiResource('restaurant-image-settings', RestaurantImageSettingController::class); Route::apiResource('restaurant-image-saas-settings', RestaurantImageSAASSettingController::class); Route::prefix('subscription')->group(function () { Route::get('/request-upgrade-list', [SAASSubscriptionUpgradeController::class, 'requestUpgradeList']); Route::post('/request-upgrade', [SAASSubscriptionUpgradeController::class, 'requestUpgrade']); Route::get('/approve-request/{id}', [SAASSubscriptionUpgradeController::class, 'approveRequest']); Route::post('/payment-upgrade', [SAASSubscriptionUpgradeController::class, 'paymentSubscriptions']); }); // Zoom API Route::apiResource('zooms', ZoomController::class); // Language API Route::prefix('languages')->group(function () { Route::get('/', [LanguageController::class, 'index']); Route::post('/', [LanguageController::class, 'store']); Route::put('/{id}', [LanguageController::class, 'update']); Route::get('/export/{name}', [LanguageController::class, 'export']); Route::post('/update-key/{name}', [LanguageController::class, 'updateKey']); Route::post('/import/{name}', [LanguageController::class, 'import']); Route::post('/set-default/{name}', [LanguageController::class, 'setDefault']); }); // SAAS Module Billing Routes Route::get('billing-expiring-soon', [BillingController::class, 'expiringSoon']); Route::get('billing-transactions', [BillingController::class, 'transactions']); Route::get('billing-invoices', [BillingController::class, 'invoices']); Route::get('billing-revenue-analytics', [BillingController::class, 'revenueAnalytics']); // Mail OR SMS Sending For Billing Notifications Route::post('send-billing-notification', [BillingController::class, 'sendBillingNotification']); }); }); Route::get('v1/get-saas-settings', [DashboardController::class, 'getSAASSettings']); Route::get('v1/get-feedbacks', [FeedbackController::class, 'getFeedbacks']); Route::get('v1/get-packages', [DashboardController::class, 'getPackages']); Route::get('v1/get-saas-faqs', [SAASFaqController::class, 'getSaasFaqs']); Route::post('v1/saas-subscriptions-email-store', [SAASSubscriptionController::class, 'publicStore']); Route::get('v1/get-image-folder-urls', [UtilityController::class, 'getAllImageFolderUrls']); Route::get('v1/system/link-storage', [UtilityController::class, 'linkStorage']); Route::get('v1/system/unlink-storage', [UtilityController::class, 'unlinkStorage']); Route::get('v1/system/clear-cache', [UtilityController::class, 'clearAllCache']); Route::resource('v1/galleries', GalleryController::class); // Domain Check Route::get('v1/system/domain-check', [UtilityController::class, 'domainCheck']); // Device Get Users Via Middleware Route::middleware('device.api.key')->get('v1/system/all-users-get', [AttendanceSyncController::class, 'allUsersGet']); Route::post('user-device-attendance', [AttendanceSyncController::class, 'sync']);