web.php 20.5 KB
<?php

use App\Http\Controllers\AdEmployerController;
use App\Http\Controllers\Admin\AdminController;
use App\Http\Controllers\Admin\CategoryController;
use App\Http\Controllers\Admin\CategoryEmpController;
use App\Http\Controllers\Admin\EducationController;
use App\Http\Controllers\Admin\EmployersController;
use App\Http\Controllers\Admin\InfoBloksController;
use App\Http\Controllers\Admin\JobTitlesController;
use App\Http\Controllers\Admin\UsersController;
use App\Http\Controllers\Admin\WorkersController;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\Auth\RegisterController;
use App\Http\Controllers\CKEditorController;
use App\Http\Controllers\MediaController;
use App\Http\Controllers\WorkerController;
use App\Models\User;
use App\Http\Controllers\MainController;
use App\Http\Controllers\HomeController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Admin\CompanyController;
use App\Http\Controllers\Admin\Ad_EmployersController;
use App\Http\Controllers\Admin\MsgAnswersController;
use App\Http\Controllers\Admin\GroupsController;
use App\Http\Controllers\PagesController;
use Illuminate\Support\Facades\Storage;


/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
/*
Route::get('/', function () {
    return view('welcome');
})->name('index');
*/
Route::get('/', [MainController::class, 'index'])->name('index');

//Роуты авторизации, регистрации, восстановления, аутентификации
Auth::routes(['verify' => true]);

// роуты регистрации, авторизации, восстановления пароля, верификации почты
/*Route::group([
    'as' => 'auth.', //имя маршрута, например auth.index
    'prefix' => 'auth', // префикс маршрута, например, auth/index
], function () {
    //форма регистрации
    Route::get('register', [RegisterController::class, 'register'])->name('register');

    //создание пользователя
    Route::post('register', [RegisterController::class, 'create'])->name('create');

    //форма входа авторизации
    Route::get('login', [LoginController::class, 'login'])->name('login');

    //аутентификация
    Route::post('login', [LoginController::class, 'authenticate'])->name('auth');

    //выход
    Route::get('logout', [LoginController::class, 'logout'])->name('logout');

    //форма ввода адреса почты
    Route::get('forgot-password', [ForgotPasswordController::class, 'form'])->name('forgot-form');

    //письмо на почту
    Route::post('forgot-password', [ForgotPasswordController::class, 'mail'])->name('forgot-mail');

    //форма восстановления пароля
    Route::get('reset-password/token/{token}/email/{email}',
        [ResetPasswordController::class, 'form']
    )->name('reset-form');

    //восстановление пароля
    Route::post('reset-password',
        [ResetPasswordController::class, 'reset']
    )->name('reset-password');

    //сообщение о необходимости проверки адреса почты
    Route::get('verify-message', [VerifyEmailController::class, 'message'])->name('verify-message');

    //подтверждение адреса почты нового пользователя
    Route::get('verify-email/token/{token}/id/{id}', [VerifyEmailController::class, 'verify'])
        ->where('token', '[a-f0-9]{32}')
        ->where('id', '[0-9]+')
        ->name('verify-email');
});*/

//Личный кабинет пользователя
Route::get('/home', [HomeController::class, 'index'])->name('home');

/*
Route::post('resend/verification-email', function (\Illuminate\Http\Request $request) {
    $user = User::where('email',$request->input('email'))->first();

    $user->sendEmailVerificationNotification();

    return 'your response';
})->middleware('throttle:6,1')->name('verification.resend');
*/

// Авторизация, регистрация в админку
Route::group([
    'as' => 'admin.', // имя маршрута, например auth.index
    'prefix' => 'admin', // префикс маршрута, например auth/index
    'middleware' => ['guest'],
], function () {
// Форма регистрации
    Route::get('register', [AdminController::class, 'register'])->name('register');
// Создание пользователя
    Route::post('register', [AdminController::class, 'create'])->name('create');

//Форма входа
    Route::get('login', [AdminController::class, 'login'])->name('login');

// аутентификация
    Route::post('login', [AdminController::class, 'autenticate'])->name('auth');

});

// Личный кабинет админки
Route::group([
    'as' => 'admin.', // имя маршрута, например auth.index
    'prefix' => 'admin', // префикс маршрута, например auth/index
    'middleware' => ['auth'], ['admin'],
], function() {

    // выход
    Route::get('logout', [AdminController::class, 'logout'])->name('logout');

    // кабинет главная страница
    Route::get('cabinet', [AdminController::class, 'index'])->name('index');

    // кабинет профиль админа - форма
    Route::get('profile', [AdminController::class, 'profile'])->name('profile');
    // кабинет профиль админа - сохранение формы
    Route::post('profile', [AdminController::class, 'store_profile'])->name('store_profile');

    //кабинет сообщения админа
    //Route::get('messages', [AdminController::class, 'profile'])->name('profile');


    // кабинет профиль - форма пароли
    Route::get('password', [AdminController::class, 'profile_password'])->name('password');
    // кабинет профиль - сохранение формы пароля
    Route::post('password', [AdminController::class, 'profile_password_new'])->name('password');


    // кабинет профиль пользователя - форма
    Route::get('user-profile/{user}', [AdminController::class, 'profile_user'])->name('user-profile');
    // кабинет профиль пользователя - сохранение формы
    Route::post('user-profile/{user}', [AdminController::class, 'store_profile_user'])->name('user-store_profile');

    // кабинет профиль работодатель - форма
    Route::get('employer-profile/{employer}', [EmployersController::class, 'form_update_employer'])->name('employer-profile');
    // кабинет профиль работодатель - сохранение формы
    Route::post('employer-profile/{employer}', [EmployersController::class, 'update_employer'])->name('update-employer-profile');
    // кабинет удаление профиль работодателя и юзера
    Route::delete('employers/delete/{employer}/{user}', [EmployersController::class, 'delete_employer'])->name('delete-employer');

    // кабинет профиль работник - форма
    Route::get('worker-profile/add/{user}', [WorkersController::class, 'form_add_worker'])->name('worker-profile-add');
    Route::post('worker-profile/add/{user}', [WorkersController::class, 'form_store_worker'])->name('worker-profile-store');
    Route::get('worker-profile/{worker}', [WorkersController::class, 'form_edit_worker'])->name('worker-profile-edit');
    // кабинет профиль работник - сохранение формы
    Route::post('worker-profile/{worker}', [WorkersController::class, 'form_update_worker'])->name('worker-profile-update');

    // Медиа
    Route::get('media', [MediaController::class, 'index'])->name('media');
    Route::delete('media/{media}', [MediaController::class, 'delete'])->name('delete-media');

    // кабинет настройки сайта - форма
    Route::get('config', [AdminController::class, 'config_form'])->name('config');
    // кабинет настройки сайта сохранение формы
    Route::post('config', [AdminController::class, 'store_config'])->name('store_config');

    // кабинет - пользователи
    Route::get('users', [UsersController::class, 'index'])->name('users');

    // кабинет - пользователи
    Route::get('admin-users', [AdminController::class, 'index_admin'])->name('admin-users');

    // кабинет - работодатели
    Route::get('employers', [EmployersController::class, 'index'])->name('employers');

    Route::get('employers/comment/{employer}', [EmployersController::class, 'comment_read'])->name('comment-employer');

    // кабинет - соискатели
    Route::get('workers', [WorkersController::class, 'index'])->name('workers');

    // кабинет - база данных
    Route::get('basedata', [UsersController::class, 'index_bd'])->name('basedata');
    Route::get('basedata/add', [UsersController::class, 'add_bd'])->name('add-basedata');
    Route::post('basedata/add', [UsersController::class, 'add_store_bd'])->name('add-store-basedata');
    Route::get('basedata/edit/{user}', [UsersController::class, 'edit_bd'])->name('edit-basedata');
    Route::put('basedata/edit/{user}', [UsersController::class, 'update_bd'])->name('update-basedata');
    Route::delete('basedata/delete/{user}', [UsersController::class, 'destroy_bd'])->name('delete-basedata');
    Route::get('basedata/doc/{user}', [UsersController::class, 'doc_bd'])->name('doc-basedata');

    // кабинет - вакансии
    Route::get('ad-employers', [Ad_EmployersController::class, 'index'])->name('ad-employers');
    Route::get('ad-employers/add', [Ad_EmployersController::class, 'create'])->name('add-ad-employers');
    Route::post('ad-employers/add', [Ad_EmployersController::class, 'store'])->name('store-ad-employers');
    Route::get('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'edit'])->name('edit-ad-employers');
    Route::post('ad-employers/edit/{ad_employer}', [Ad_EmployersController::class, 'update'])->name('update-ad-employers');
    Route::delete('ad-employers/delete/{ad_employer}', [Ad_EmployersController::class, 'destroy'])->name('delete-ad-employer');

    // кабинет - категории
    //Route::get('categories', [AdminController::class, 'index'])->name('categories');
    /*
     * CRUD-операции над Справочником Категории
     */
    Route::resource('categories', CategoryController::class, ['except' => ['show']]);

    // CRUD-операции над справочником Категории для работодателей
    Route::resource('category-emp', CategoryEmpController::class, ['except' => ['show']]);

    // CRUD-операции над справочником Образование
    Route::resource('education', EducationController::class, ['except' => ['show']]);

    Route::get('program-education', [EducationController::class, 'add_program'])->name('add-program-education');
    Route::post('program-education', [EducationController::class, 'store_program'])->name('store-program-education');

    Route::get('program-education/edit/{program}/{education}', [EducationController::class, 'edit_program'])->name('edit-program-education');
    Route::post('program-education/edit/{program}/{education}', [EducationController::class, 'update_program'])->name('update-program-education');

    Route::get('program-education/delete/{program}/{education}', [EducationController::class, 'delete_program'])->name('delete-program-education');

    //Route::get('job-titles', [AdminController::class, 'index'])->name('job-titles');
    /*
    * кабинет - CRUD-операции по справочнику должности
     *
     */
    Route::resource('job-titles', JobTitlesController::class, ['except' => ['show']]);

    // кабинет - сообщения (чтение чужих)
    Route::get('messages', [MsgAnswersController::class, 'messages'])->name('messages');
    // кабинет - просмотр сообщения чужого (чтение)
    Route::get('messages/{message}', [MsgAnswersController::class, 'read_message'])->name('read-message');

    // кабинет - сообщения (админские)
    Route::get('admin-messages', [MsgAnswersController::class, 'admin_messages'])->name('admin-messages');
    // кабинет - сообщения (админские)
    Route::post('admin-messages', [MsgAnswersController::class, 'admin_messages_post'])->name('admin-messages-post');
    // кабинет - sql - конструкция запросов
    Route::get('messages-sql', [MsgAnswersController::class, 'messages_sql'])->name('messages-sql');

    /*
     * Расписанный подход в описании каждой директорий групп пользователей.
     */
    // кабинет - группы пользователей
    Route::get('groups', [GroupsController::class, 'index'])->name('groups');
    // кабинет - добавление форма группы пользователей
    Route::get('groups/add', [GroupsController::class, 'add'])->name('add-group');
    // кабинет - сохранение формы группы пользователей
    Route::post('groups/add', [GroupsController::class, 'store'])->name('add-group-store');
    // кабинет - редактирование форма группы пользователей
    Route::get('groups/edit/{group}', [GroupsController::class, 'edit'])->name('edit-group');
    // кабинет - сохранение редактированной формы группы пользователей
    Route::post('groups/edit/{group}', [GroupsController::class, 'update'])->name('update-group');
   // кабинет - удаление группы пользователей
    Route::delete('groups/delete/{group}', [GroupsController::class, 'destroy'])->name('delete-group');


    // кабинет - список админов
    Route::get('group-admin', [AdminController::class, 'index'])->name('group-admin');


    /////редактор////// кабинет - редактор сайта////////////////////////
    Route::get('editor-site', function() {
        return view('admin.editor.index');
    })->name('editor-site');


    // кабинет - редактор шапки-футера сайта
    Route::get('edit-blocks', [CompanyController::class, 'editblocks'])->name('edit-blocks');
    Route::get('edit-bloks/add', [CompanyController::class, 'editblock_add'])->name('add-block');
    Route::post('edit-bloks/add', [CompanyController::class, 'editblock_store'])->name('add-block-store');
    Route::get('edit-bloks/ajax', [CompanyController::class, 'editblock_ajax'])->name('ajax.block');
    Route::get('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_edit'])->name('edit-block');
    Route::put('edit-bloks/edit/{block}', [CompanyController::class, 'editblock_update'])->name('update-block');
    Route::delete('edit-bloks/delete/{block}', [CompanyController::class, 'editblock_destroy'])->name('delete-block');


    // кабинет - редактор должности на главной
    Route::get('job-titles-main', [CompanyController::class, 'job_titles_main'])->name('job-titles-main');

    // кабинет - редактор работодатели на главной
    Route::get('employers-main', [CompanyController::class, 'employers_main'])->name('employers-main');


    // кабинет - редактор seo-сайта
    Route::get('editor-seo', [CompanyController::class, 'editor_seo'])->name('editor-seo');
    Route::get('editor-seo/add', [CompanyController::class, 'editor_seo_add'])->name('add-seo');
    Route::post('editor-seo/add', [CompanyController::class, 'editor_seo_store'])->name('add-seo-store');
    Route::get('editor-seo/ajax', [CompanyController::class, 'editor_seo_ajax'])->name('ajax.seo');
    Route::get('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_edit'])->name('edit-seo');
    Route::put('editor-seo/edit/{page}', [CompanyController::class, 'editor_seo_update'])->name('update-seo');
    Route::delete('editor-seo/delete/{page}', [CompanyController::class, 'editor_seo_destroy'])->name('delete-seo');


    // кабинет - редактор страниц
    Route::get('editor-pages', [CompanyController::class, 'editor_pages'])->name('editor-pages');
    // кабинет - добавление страницы
    Route::get('editor-pages/add', [CompanyController::class, 'editor_pages_add'])->name('add-page');
    // кабинет - сохранение формы страницы
    Route::post('editor-page/add', [CompanyController::class, 'editor_pages_store'])->name('add-page-store');
    // кабинет - редактирование форма страницы
    Route::get('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_edit'])->name('edit-page');
    // кабинет - сохранение редактированной формы страницы
    Route::put('editor-pages/edit/{page}', [CompanyController::class, 'editor_pages_update'])->name('update-page');
    // кабинет - удаление страницы
    Route::delete('editor-pages/delete/{page}', [CompanyController::class, 'editor_pages_destroy'])->name('delete-page');


    // кабинет - реклама сайта
    Route::get('reclames', [CompanyController::class, 'reclames'])->name('reclames');
    Route::get('reclames/add', [CompanyController::class, 'reclames_add'])->name('add-reclames');
    Route::post('reclames/add', [CompanyController::class, 'reclames_store'])->name('add-reclames-store');
    Route::get('reclames/edit/{reclame}', [CompanyController::class, 'reclames_edit'])->name('edit-reclames');
    Route::put('reclames/edit/{reclame}', [CompanyController::class, 'reclames_update'])->name('update-reclames');
    Route::delete('reclames/delete/{reclame}', [CompanyController::class, 'reclames_destroy'])->name('delete-reclames');
    ////////////////////////////////////////////////////////////////////////


    // кабинет - отзывы о работодателе для модерации
    Route::get('answers', [EmployersController::class, 'answers'])->name('answers');

    // Общая страница статистики
    Route::get('statics', function () {
        return view('admin.static.index');
    })->name('statics');

    // кабинет - статистика работников
    Route::get('static-workers', [WorkersController::class, 'static_workers'])->name('static-workers');

    // кабинет - статистика вакансий работодателя
    Route::get('static-ads', [EmployersController::class, 'static_ads'])->name('static-ads');

    // кабинет - справочник - блоки информации (дипломы и документы) для резюме работника
    /*
     * CRUD-операции над справочником дипломы и документы
     */
    //Route::get('infobloks', [WorkersController::class, 'infobloks'])->name('infobloks');
    Route::resource('infobloks', InfoBloksController::class, ['except' => ['show']]);

    // кабинет - роли пользователя
    Route::get('roles', [UsersController::class, 'roles'])->name('roles');

    Route::get('logs', function() {
        $files = Storage::files('logs/laravel.log');
        print_r($files);
    })->name('logs');

});

// Инструментальные страницы
Route::post('ckeditor/upload', [CKEditorController::class, 'upload'])->name('ckeditor.image-upload');

Route::get('redis/', [PagesController::class, 'redis'])->name('redis');

Route::get('excel/', [PagesController::class, 'excel'])->name('excel');

// Страницы с произвольным контентом
Route::get('pages/{pages:slug}', [PagesController::class, 'pages'])->name('page');

// Публичные страницы соискателя
Route::get('workers/profile/{worker}', [WorkerController::class, 'profile'])->name('worker_page');

//Страница вакансии
Route::get('employer/ad/{ad_employer}', [AdEmployerController::class, 'ad_employer'])->name('ad-employer');