web.php 9.08 KB
<?php

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\MainController;
use App\Http\Controllers\RegisterController;
use App\Http\Controllers\LoginController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\Admin\AreaController;
use App\Http\Controllers\Admin\NewsController;
use App\Http\Controllers\Admin\CompanyAreaController;
use App\Http\Controllers\Admin\FormatAreaController;
use App\Http\Controllers\Admin\TypeAreaController;
use App\Http\Controllers\Admin\HousesController;
use App\Http\Controllers\Admin\MessageAreaController;

/*
|--------------------------------------------------------------------------
| 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('/',[MainController::class, 'index'])->name('index');

//Страница Избранные
Route::get('favorite',[MainController::class, 'favorite'])->name('favorite');

//Страница контакты
Route::get('contact',[MainController::class, 'contact'])->name('contact');

//Страница каталог
Route::get('catalog',[MainController::class, 'catalog'])->name('catalog');

Route::get('test', [MainController::class, 'test'])->name('test');

//Страница новости
Route::get('news',[MainController::class, 'news'])->name('news');

//Страница о компании
Route::get('about',[MainController::class, 'about'])->name('about');

//Страница объекты на карте
Route::get('maps',[MainController::class, 'mapsobj'])->name('maps');

// Политика конфедициальности
Route::get('conf', function () {
    return view('conf');
})->name('conf');

//Детальная страница предложения недвижимости
Route::get('offer/{house:id}', [MainController::class, 'offer'])->name('offer');

//Детальная страница новостей
Route::get('detail-new/{news:id}', [MainController::class, 'DetailNew'])->name('new');

//Страница ЖилойКомплекс
Route::get('complex/{area:id}', [MainController::class, 'complex'])->name('complex');

// ajax-фильтры каталога
Route::get('catalog_ajax_filter', [MainController::class, 'catalog_ajax_filter'])->name('catalog_ajax_filter');

//Категория
Route::get('category/{cat}', [MainController::class, 'Category'])->name('category');

//Категория ajax
Route::get('category_ajax/{cat}', [MainController::class, 'category_ajax'])->name('category_ajax');

//Страница куков
Route::get('cookies', function () {
    return view('cookies');
})->name('cookies');

//Форма обратной связи в футере
Route::post('main_form', [MainController::class, 'main_form'])->name('main_form');

//Форма обратной связи в хедере
Route::post('header_form', [MainController::class, 'header_form'])->name('header_form');

//Форма записаться на просмотр в карточке офиса
Route::post('rec_view_form', [MainController::class, 'rec_view_form'])->name('rec_view_form');

//Форма обратной связи на странице контакты
Route::post('page_contact_form', [MainController::class, 'page_contact_form'])->name('page_contact_form');

//Форма обратной связи предложения по почте
Route::post('email_form', [MainController::class, 'email_form'])->name('email_form');

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, 'autenticate'])->name('auth');

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

//Страница неудачной авторизации
    Route::get('vefiry-message', function () {
        return view('auth.vefiry-message');
    })->name('vefiry-message');

});

/*
 * Личный кабинет пользователя
 */
Route::group([
    'as' => 'user.', // имя маршрута, например user.index
    'prefix' => 'user', // префикс маршрута, например user/index
    //'namespace' => 'User', // пространство имен контроллеров
    'middleware' => ['auth'] // один или несколько посредников
], function () {
    // главная страница
    Route::get('index', [AdminController::class, 'index'])->name('index');
});

/*
 * Панель управления: CRUD-операции над постами, категориями, тегами
 */
Route::group([
    'as' => 'admin.', // имя маршрута, например admin.index
    'prefix' => 'admin', // префикс маршрута, например admin/index
    //'namespace' => 'Admin', // пространство имен контроллеров
    'middleware' => ['auth'] // один или несколько посредников
], function () {
    /*
     * CRUD-операции над постами Жилых комплексов
    */
    Route::resource('area', AreaController::class, []);

    //дополнительный маршрут для показа картинок объектов недвижимости
    Route::get('img/area/{area}', [AreaController::class, 'area_category'])
        ->name('img.area');

    //дополнительный маршрут для добавления картинок объектов недвижимости
    Route::post('img/area/{area}', [AreaController::class, 'area_add_img'])
        ->name('img.add.area');

    //дополнительный маршрут для удаления картинок объектов недвжимости
    Route::get('img/del/{id}/area/{area}', [AreaController::class, 'area_del_img'])
        ->name('img.del.area');

    /*
    * CRUD-операции над постами Новости
    */
    Route::resource('news', NewsController::class, []);

    /*
    * CRUD-операции над настройками Компании
    */
    Route::resource('company', CompanyAreaController::class, ['except' => ['create', 'store', 'destroy', 'index']]);

    //форма добавление партнера
    Route::get('add/partner', [CompanyAreaController::class, 'add_partner'])->name('add.partner');

    //Добавление партнера
    Route::post('add/partner', [CompanyAreaController::class, 'add_partner_post'])->name('add.partner.post');

    //удаление партнера
    Route::get('delete/partner/{partner}', [CompanyAreaController::class, 'delete_partner'])->name('delete.partner');


    /*
    * CRUD-операции над типами недвижимостью
    */
    Route::resource('typearea', TypeAreaController::class, ['except' => ['show']]);

    /*
     * CRUD-операции над форматами недвижимостью
     */
    Route::resource('formatarea', FormatAreaController::class, ['except' => ['show']]);

    /*
     * CRUD-операции над сообщениями сайта
     */
    Route::resource('message', MessageAreaController::class, ['except' => ['create', 'store', 'edit', 'update']]);

    /*
     * CRUD-операции над офисами
     */
    Route::resource('houses', HousesController::class, ['except' => ['show']]);

    // просмотр дополнительных картинок офиса
    Route::get('houses/{house}/images', [HousesController::class, 'view_images'])->name('view.images.houses');

    // форма добавление дополнительной картинки офиса
    Route::get('houses/{house}/add/images', [HousesController::class, 'add_images'])->name('add.images.houses');

    // добавление дополнительной картинки офиса
    Route::post('houses/{house}/add/images', [HousesController::class, 'add_images_store'])->name('add.image.post.houses');

    // удаление дополнительной картинки офиса
    Route::get('houses/{house}/del/{id}/images', [HousesController::class, 'del_images'])->name('del.images.houses');

    //Форма смены пароля пользователя
    Route::get('user/password', [AdminController::class, 'form_password'])->name('form_password');

    //Смена пароля пользователя
    Route::post('user/password', [AdminController::class, 'validate_password'])->name('validate_password');
});