group(function () { // Home Route::get('/', 'HomeController@index')->name('home'); // Auth Route::prefix('auth')->name('auth.')->group(function () { Route::get('login', 'AuthController@login')->name('login'); Route::post('login', 'AuthController@login')->name('login'); Route::post('logout', 'AuthController@logout')->name('logout'); }); // My Account Route::prefix('myaccount')->name('myaccount.')->group(function () { Route::get('profile', 'MyAccountController@profile')->name('profile'); Route::post('profile', 'MyAccountController@profileStore'); Route::get('security', 'MyAccountController@security')->name('security'); Route::post('security', 'MyAccountController@securityStore'); }); // Settings Route::prefix('settings')->name('settings.')->group(function () { Route::get('permission', 'SettingController@permission')->name('permission')->middleware('permission:settings.permission'); Route::post('permission', 'SettingController@permissionStore')->middleware('permission:settings.permission'); }); // Other routes $routes = [ 'countries' => 'CountryController', 'cities' => 'CityController', 'admins' => 'AdminController', 'coordinators' => 'CoordinatorController', 'coaches' => 'CoachController', 'participants' => 'ParticipantController', 'companies' => 'CompanyController', 'hotels' => 'HotelController', 'venues' => 'VenueController', 'categories' => 'CategoryController', 'levels' => 'LevelController', 'courses' => 'CourseController', 'groups' => 'GroupController', 'exams' => 'ExamController', 'questions' => 'QuestionController', 'reviews' => 'ReviewController', 'cards' => 'CardsController', 'card_ids' => 'CardIdsController', 'certifications' => 'CertificationController', 'certification_models' => 'CertificationModelsController', ]; foreach ($routes as $route => $controller) { Route::prefix($route)->name($route . '.')->group(function () use ($route, $controller) { Route::get('/', $controller . '@index')->name('index')->middleware('permission:' . $route . '.index'); Route::get('trashed', $controller . '@index')->name('trashed')->middleware('permission:' . $route . '.trashed'); Route::get('create', $controller . '@create')->name('create')->middleware('permission:' . $route . '.create'); Route::post('store', $controller . '@store')->name('store')->middleware('permission:' . $route . '.create'); Route::get('{id}/edit', $controller . '@edit')->name('edit')->middleware('permission:' . $route . '.edit'); Route::post('{id}/update', $controller . '@update')->name('update')->middleware('permission:' . $route . '.edit'); Route::post('{id}/destroy', $controller . '@destroy')->name('destroy')->middleware('permission:' . $route . '.destroy'); Route::post('{id}/restore', $controller . '@restore')->name('restore')->middleware('permission:' . $route . '.restore'); Route::post('{id}/forceDelete', $controller . '@forceDelete')->name('forceDelete')->middleware('permission:' . $route . '.forceDelete'); Route::post('multi-delete', $controller . '@multiDelete')->name('multiDelete')->middleware('permission:' . $route . '.multiDelete'); Route::post('multiRestore', $controller . '@multiRestore')->name('multiRestore')->middleware('permission:' . $route . '.multiRestore'); Route::post('multi-forceDelete', $controller . '@multiForceDelete')->name('multiForceDelete')->middleware('permission:' . $route . '.multiForceDelete'); if (in_array($route, ['certifications'])) { Route::get('{id}/export', $controller . '@export')->name('export')->middleware('permission:' . $route . '.export'); Route::get('{id}/export-one', $controller . '@exportOne')->name('export.one')->middleware('permission:' . $route . '.export.one'); } $subRoutes = []; if (in_array($route, ['groups'])) { $subRoutes = [ 'groups.sessions' => 'SessionsController', 'groups.exams' => 'ExamsController', 'groups.certifications' => 'CertificationController', ]; foreach ($subRoutes as $subRoute => $myController) { Route::get('/', $myController . '@index')->name('index')->middleware('permission:' . $subRoute . '.index'); Route::get('trashed', $myController . '@index')->name('trashed')->middleware('permission:' . $subRoute . '.trashed'); Route::get('create', $myController . '@create')->name('create')->middleware('permission:' . $subRoute . '.create'); Route::post('store', $myController . '@store')->name('store')->middleware('permission:' . $subRoute . '.create'); Route::get('{id}/edit', $myController . '@edit')->name('edit')->middleware('permission:' . $subRoute . '.edit'); Route::post('{id}/update', $myController . '@update')->name('update')->middleware('permission:' . $subRoute . '.edit'); Route::post('{id}/destroy', $myController . '@destroy')->name('destroy')->middleware('permission:' . $subRoute . '.destroy'); Route::post('{id}/restore', $myController . '@restore')->name('restore')->middleware('permission:' . $subRoute . '.restore'); Route::post('{id}/forceDelete', $myController . '@forceDelete')->name('forceDelete')->middleware('permission:' . $subRoute . '.forceDelete'); Route::post('multi-delete', $myController . '@multiDelete')->name('multiDelete')->middleware('permission:' . $subRoute . '.multiDelete'); Route::post('multiRestore', $myController . '@multiRestore')->name('multiRestore')->middleware('permission:' . $subRoute . '.multiRestore'); Route::post('multi-forceDelete', $myController . '@multiForceDelete')->name('multiForceDelete')->middleware('permission:' . $subRoute . '.multiForceDelete'); /* Route::get($subRoute . '/{id}/create', $myController . '@create')->name('sessions.create')->middleware('permission:' . $route . '.sessions.create'); Route::get($subRoute . '/{id}', $myController . '@sessions')->name('sessions.index')->middleware('permission:' . $route . '.sessions.index'); Route::post($subRoute . '/{id}/store', $myController . '@sessionsStore')->name('sessions.store')->middleware('permission:' . $route . '.create'); Route::get($subRoute . '/{id}/edit', $myController . '@editSession')->name('sessions.edit')->middleware('permission:' . $route . '.sessions.edit'); Route::post($subRoute . '/{id}/update', $myController . '@sessionsUpdate')->name('sessions.update')->middleware('permission:' . $route . '.sessions.update'); Route::post($subRoute . '/{id}/multi-delete', $myController . '@multiDeleteSession')->name('sessions.multiDelete')->middleware('permission:' . $route . '.sessions.multiDelete'); Route::post($subRoute . '/{id}/multiRestore', $myController . '@multiRestoreSession')->name('sessions.multiRestore')->middleware('permission:' . $route . '.sessions.multiRestore'); Route::post($subRoute . '/{id}/multi-forceDelete', $myController . '@multiForceDeleteSession')->name('sessions.multiForceDelete')->middleware('permission:' . $route . '.sessions.multiForceDelete'); Route::post($subRoute . '/{id}/destroy', $myController . '@destroySession')->name('sessions.destroy')->middleware('permission:' . $route . '.sessions.destroy'); Route::post($subRoute . '/{id}/restore', $myController . '@restoreSession')->name('sessions.restore')->middleware('permission:' . $route . '.sessions.restore'); Route::post($subRoute . '/{id}/forceDelete', $myController . '@forceDelete')->name('sessions.forceDelete')->middleware('permission:' . $route . '.sessions.forceDelete'); */ } Route::get('{id}/exams/create', $controller . '@createExam')->name('exams.create')->middleware('permission:' . $route . '.exams.create'); Route::get('{id}/exams/edit', $controller . '@editExam')->name('exams.edit')->middleware('permission:' . $route . '.exams.edit'); Route::get('{id}/exams', $controller . '@exams')->name('exams.index')->middleware('permission:' . $route . '.exams.index'); Route::post('{id}/exams-store', $controller . '@examsStore')->name('exams.store')->middleware('permission:' . $route . '.exams'); Route::get('{id}/export-cards', $controller . '@exportCards')->name('export.cards')->middleware('permission:' . $route . '.export.cards'); Route::post('{id}/export-cards', $controller . '@exportCardsStore')->name('export.cards.store')->middleware('permission:' . $route . '.export.cards.store'); Route::get('download-pdf/{filename}', $controller . '@downloadPdf')->name('download.pdf')->middleware('permission:' . $route . '.export.cards.store'); Route::get('{id}/alert', $controller . '@alert')->name('alert')->middleware('permission:' . $route . '.alert'); Route::post('{id}/alert-store', $controller . '@alertStore')->name('alert.store')->middleware('permission:' . $route . '.alert'); Route::get('{id}/sessions/create', $controller . '@createSession')->name('sessions.create')->middleware('permission:' . $route . '.sessions.create'); Route::get('{id}/sessions', $controller . '@sessions')->name('sessions.index')->middleware('permission:' . $route . '.sessions.index'); Route::post('{id}/sessions-store', $controller . '@sessionsStore')->name('sessions.store')->middleware('permission:' . $route . '.create'); Route::get('{id}/sessions-edit', $controller . '@editSession')->name('sessions.edit')->middleware('permission:' . $route . '.sessions.edit'); Route::post('{id}/sessions-update', $controller . '@sessionsUpdate')->name('sessions.update')->middleware('permission:' . $route . '.sessions.update'); Route::post('{id}/sessions-multi-delete', $controller . '@multiDeleteSession')->name('sessions.multiDelete')->middleware('permission:' . $route . '.sessions.multiDelete'); Route::post('{id}/sessions-multiRestore', $controller . '@multiRestoreSession')->name('sessions.multiRestore')->middleware('permission:' . $route . '.sessions.multiRestore'); Route::post('{id}/sessions-multi-forceDelete', $controller . '@multiForceDeleteSession')->name('sessions.multiForceDelete')->middleware('permission:' . $route . '.sessions.multiForceDelete'); Route::post('{id}/sessions-destroy', $controller . '@destroySession')->name('sessions.destroy')->middleware('permission:' . $route . '.sessions.destroy'); Route::post('{id}/sessions-restore', $controller . '@restoreSession')->name('sessions.restore')->middleware('permission:' . $route . '.sessions.restore'); Route::post('{id}/sessions-forceDelete', $controller . '@forceDeleteSession')->name('sessions.forceDelete')->middleware('permission:' . $route . '.sessions.forceDelete'); } }); } // Ajax $ajaxGets = [ 'citiesFromCountry', 'hotelsFromCity', 'venuesFromHotel', 'course', 'sessions' ]; Route::get('ajax/exams/{id}/{group}', 'Custom\AjaxGetController@exams')->name('ajax.exams'); foreach ($ajaxGets as $ajaxGet) { Route::get('ajax/' . $ajaxGet . '/{id}', 'Custom\AjaxGetController@' . $ajaxGet)->name('ajax.' . $ajaxGet); Route::get('ajax/' . $ajaxGet . '/{id}', 'Custom\AjaxGetController@' . $ajaxGet)->name('ajax.' . $ajaxGet); } Route::post('upload/image', 'UploadController@image')->name('upload.image'); });