<?php

use App\Libs\Facades\Localization;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| 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::controller('/admin/login', 'AdminLoginController');

Route::get('/admin/login', 'Admin\Auth\LoginController@showLoginForm')->name('admin.login');
Route::get('/admin/login-eae', 'Admin\Auth\LoginController@showPasswordLoginForm')->name('admin.login-password');
Route::post('/admin/login', 'Admin\Auth\LoginController@login');
Route::post('/admin/google-login', 'Admin\Auth\LoginController@googlelogin');
Route::post('/admin/logout', 'Admin\Auth\LoginController@logout')->name('admin.logout');
Route::get('/admin/password/reset','Admin\Auth\ForgotPasswordController@showLinkRequestForm')
    ->name('admin.password.request');
Route::post('/admin/password/email','Admin\Auth\ForgotPasswordController@sendResetLinkEmail')
    ->name('admin.password.email');
Route::get('/admin/password/reset/{token}','Admin\Auth\ResetPasswordController@showResetForm')
    ->name('admin.password.reset');
Route::post('/admin/password/reset', 'Admin\Auth\ResetPasswordController@reset')->name('admin.password.update');

Route::prefix('admin')->middleware('auth:admin', 'admin.website')->group(function () {

    Route::get('admin-users', 'Admin\UserController@getIndex')
        ->middleware('auth.admin.role:Administrator');
    Route::post('admin-users/list', 'Admin\UserController@postList')
        ->middleware('auth.admin.role:Administrator');
    Route::get('admin-users/edit/{userId?}', 'Admin\UserController@getEdit')
        ->where('userId', '[0-9]+');
    Route::post('admin-users/insert', 'Admin\UserController@postInsert')
        ->middleware('auth.admin.role:Administrator');
    Route::post('admin-users/edit/{userId}', 'Admin\UserController@postEdit')
        ->where('userId', '[0-9]+');
    Route::post('admin-users/delete', 'Admin\UserController@postDelete');
    Route::get('admin-users/export', 'Admin\UserController@getExportUsers')
        ->middleware('auth.admin.role:Administrator');

    Route::get('media/more', 'Admin\MediaManagerController@getMore')
        ->middleware('auth.admin.role:Administrator|User|HR|Editor|Blog Editor|Projects Editor');
    Route::post('media/upload/{uploadType?}', 'Admin\MediaManagerController@postUpload')
        ->middleware('auth.admin.role:Administrator|User|HR|Editor|Blog Editor|Projects Editor');
    Route::get('media/{mediaId}', 'Admin\MediaManagerController@getMedia')->where('mediaId', '[0-9]+')
        ->middleware('auth.admin.role:Administrator|User|HR|Editor|Blog Editor|Projects Editor');
    Route::post('media/{mediaId}', 'Admin\MediaManagerController@postMedia')->where('mediaId', '[0-9]+')
        ->middleware('auth.admin.role:Administrator|User|HR|Editor|Blog Editor|Projects Editor');
    Route::delete('media/{mediaId}', 'Admin\MediaManagerController@postDelete')->where('mediaId', '[0-9]+')
        ->middleware('auth.admin.role:Administrator|User|HR|Editor|Blog Editor|Projects Editor');
    Route::get('media/update-image-sizes', 'Admin\MediaManagerController@getUpdateImageSizes')
        ->middleware('auth.admin.role:Administrator|User|HR|Editor|Blog Editor|Projects Editor');
    Route::get('media', 'Admin\MediaManagerController@getList')
        ->middleware('auth.admin.role:Administrator|User|HR|Editor|Blog Editor|Projects Editor');
    Route::post('content/auto-complete-old/{type}/{field}', 'Admin\ContentController@postAutoCompleteOld')
        ->middleware('auth.admin.role:Administrator|User|HR|Editor|Blog Editor|Projects Editor');
    Route::post('content/auto-complete/{type?}/{field?}', 'Admin\ContentController@postAutoComplete')
        ->middleware('auth.admin.role:Administrator|User|HR|Editor|Blog Editor|Projects Editor');
    /*
    Route::get('statistics/page-views/{visitorId?}', 'Admin\StatisticsController@getPageViews')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/visitors', 'Admin\StatisticsController@getVisitors')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('statistics/list-visitors', 'Admin\StatisticsController@postListVisitors')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('statistics/list-visitors-cf', 'Admin\StatisticsController@postListVisitorsCf')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('statistics/list-page-views', 'Admin\StatisticsController@postListPageViews')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/newsletter-subscriptions', 'Admin\StatisticsController@getNewsletterSubscriptions')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('statistics/list-newsletter-subscriptions', 'Admin\StatisticsController@postListNewsletterSubscriptions')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/downloads', 'Admin\StatisticsController@getDownloads')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('statistics/list-downloads', 'Admin\StatisticsController@postListDownloads')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/export-newsletter-subscriptions', 'Admin\StatisticsController@getExportNewsletterSubscriptions')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/export-visitors', 'Admin\StatisticsController@getExportVisitors')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/export-downloads', 'Admin\StatisticsController@getExportDownloads')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/export-page-views', 'Admin\StatisticsController@getExportPageViews')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/visitor-contacts', 'Admin\StatisticsController@getVisitorContacts')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('statistics/list-visitor-contacts', 'Admin\StatisticsController@postListVisitorContacts')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/assessments', 'Admin\StatisticsController@getAssessments')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('statistics/list-assessments', 'Admin\StatisticsController@postListAssessments')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/download-assessment-profile/{assessmentId?}', 'Admin\StatisticsController@getDownloadAssessmentProfile')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('statistics/export-visitor-contacts', 'Admin\StatisticsController@getExportVisitorContacts')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    */
    Route::post('content/export-pages', 'Admin\ContentController@postExportPages')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('content/export-blocks', 'Admin\ContentController@postExportBlocks')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('content/share-link/{websiteObjectId}', 'Admin\ContentController@postShareLink')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('trash', 'Admin\TrashController@view')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('trash/list', 'Admin\TrashController@list')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('trash/restore/{websiteObjectId}', 'Admin\TrashController@restore')
        ->where(['websiteObjectId'=> '[0-9]+'])
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('trash/delete/{websiteObjectId}', 'Admin\TrashController@delete')
        ->where(['websiteObjectId'=> '[0-9]+'])
        ->middleware('auth.admin.role:Administrator|Developer|Editor');

    Route::get('menu/edit/{menuId}', 'Admin\MenuController@getEdit')
        ->where(['menuId'=> '[0-9]+'])
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('menu/edit/{menuId}', 'Admin\MenuController@postEdit')
        ->where(['menuId'=> '[0-9]+'])
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('menu/create-menu-item', 'Admin\MenuController@postCreateMenuItem')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');

    Route::get('content/index/{type}', 'Admin\ContentController@getIndex');
    Route::post('content/list/{type}', 'Admin\ContentController@postList');
    Route::get(
        'content/form/{type}/{id?}/{parentId?}/{parentContentType?}/{parentFieldName?}',
        'Admin\ContentController@getForm')
        ->where(['id' => '[0-9]+', 'parentId' => '[0-9]+']);
    Route::post(
        'content/form/{type}/{id?}/{parentId?}/{parentContentType?}/{parentFieldName?}',
        'Admin\ContentController@postForm')
        ->where(['id' => '[0-9]+', 'parentId' => '[0-9]+']);
    Route::post(
        'content/duplicate/{type}/{id}',
        'Admin\ContentController@postDuplicate')
        ->where(['id' => '[0-9]+']);
    Route::post('content/check-slug', 'Admin\ContentController@postCheckSlug');
    Route::get('content/order/{type}', 'Admin\ContentController@getOrder');
    Route::post('content/order/{type}', 'Admin\ContentController@postOrder');
    Route::get(
        'content/form-template/{type}/{parentId}',
        'Admin\ContentController@getFormTemplate')
        ->where(['parentId' => '[0-9]+']);
    Route::get(
        'content/type-info/{type}/{contentId}',
        'Admin\ContentController@getTypeInfo')
        ->where(['contentId' => '[0-9]+']);
    Route::get('content/index/{type}', 'Admin\ContentController@getIndex');

    Route::get('content/update-uris/{type}', 'Admin\ContentController@getUpdateUris');
    Route::delete('content', 'Admin\ContentController@deleteIndex');

    Route::get('content/browsers/{browser}', 'Admin\ContentController@getBrowser');
    /*
    Route::get('content/generate-thumbsize/{type}/{fieldName}/{thumbsizeName}',
        'Admin\ContentController@getGenerateThumbsize');
    */
    Route::get('/maintenance', 'Admin\HomeController@getMaintenance')
        ->middleware('auth.admin.role:Administrator');
    Route::get('/languages-manager', 'Admin\LanguageController@getLanguagesManager')
        ->middleware('auth.admin.role:Administrator');
    Route::get('/languages-manager/edit/{languageId?}', 'Admin\LanguageController@getEdit')
        ->where('languageId', '[a-zA-Z_\-]+')
        ->middleware('auth.admin.role:Administrator');
    Route::post('/languages-manager/edit/{languageId?}', 'Admin\LanguageController@postEdit')
        ->where('languageId', '[a-zA-Z_\-]+')
        ->middleware('auth.admin.role:Administrator');
    Route::post('/languages-manager/delete/{languageId?}', 'Admin\LanguageController@postDelete')
        ->where('languageId', '[a-zA-Z_\-]+')
        ->middleware('auth.admin.role:Administrator');
    Route::get('/languages-manager/edit-static-translations/{languageId}', 'Admin\LanguageController@getEditTranslations')
        ->where('languageId', '[a-zA-Z_\-]+')
        ->middleware('auth.admin.role:Administrator');
    Route::post('/languages-manager/edit-static-translations', 'Admin\LanguageController@postSaveTranslation')
        ->middleware('auth.admin.role:Administrator');
    Route::get('/languages-manager/export-translations-csv/{languageId}', 'Admin\LanguageController@getExportStaticTranslationsCsv')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::post('/languages-manager/import-translations-csv/{languageId}', 'Admin\LanguageController@postImportStaticTranslationsCsv')
        ->middleware('auth.admin.role:Administrator|Developer|Editor');
    Route::get('/projects-api', 'Admin\HomeController@getProjectsApi')
        ->middleware('auth.admin.role:Administrator|Projects Editor|Editor');
    Route::post('/rebuild-sitemap', 'Admin\HomeController@postRebuildSitemap')
        ->middleware('auth.admin.role:Administrator');
    Route::post('/clear-cache', 'Admin\HomeController@postClearCache')
        ->middleware('auth.admin.role:Administrator');
    Route::post('/rebuild-search', 'Admin\HomeController@postRebuildSearch')
        ->middleware('auth.admin.role:Administrator');
    Route::post('/sync-projects', 'Admin\HomeController@postSyncProjects')
        ->middleware('auth.admin.role:Administrator|Projects Editor|Editor');
    Route::post('/sync-project', 'Admin\HomeController@postSyncProject')
        ->middleware('auth.admin.role:Administrator|Projects Editor|Editor');

    Route::get('/', 'Admin\HomeController@getIndex')
        ->middleware('auth.admin.role:Administrator|Developer|Editor|Read Only|Projects Editor|Blog Editor');
});

Route::get('uploads/thumbs/{filename}', 'Frontend\ImageThumbController@getThumb')
    ->where(['filename'=>'.*\.(gif|jpg|png|jpeg|webp)']);

Route::group(
    [
        'prefix' => Localization::getRoutePrefix(),
        'middleware' => ['frontend.localization']
    ],
    function () {
        Route::get('/sitemap.xml', 'Frontend\GenericController@sitemap');
        Route::get('/robots.txt', 'Frontend\GenericController@robots');

        Route::post('/ajax/blog-posts', 'Frontend\AjaxController@postBlogPosts');
        Route::post('/ajax/case-studies', 'Frontend\AjaxController@postCaseStudies');
        Route::post('/ajax/projects', 'Frontend\AjaxController@postProjects');
        Route::post('/ajax/solutions', 'Frontend\AjaxController@postSolutions');
        Route::post('/ajax/offices', 'Frontend\AjaxController@postOffices');
        Route::post('/ajax/events', 'Frontend\AjaxController@postEvents');
        Route::post('/ajax/news', 'Frontend\AjaxController@postNews');
        Route::post('/ajax/clippings', 'Frontend\AjaxController@postClippings');
        Route::post('/ajax/publications', 'Frontend\AjaxController@postPublications');
        Route::post('/ajax/releases', 'Frontend\AjaxController@postReleases');
        Route::post('/ajax/full-search', 'Frontend\AjaxController@postFullSearch');
        Route::post('/ajax/search', 'Frontend\AjaxController@postSearch');
        Route::post('/ajax/search-cf', 'Frontend\AjaxController@postSearchCf');
        Route::post('/ajax/download', 'Frontend\AjaxController@postDownload');
        Route::get('/ajax/download-request/{downloadId}', 'Frontend\AjaxController@getDownloadRequest')
            ->where(['downloadId' => '[0-9]+']);
        Route::post('/ajax/submit-visitor', 'Frontend\AjaxController@postSubmitVisitor');
        Route::post('/ajax/subscribe-newsletter-simple', 'Frontend\AjaxController@postSubscribeNewsletterSimple');
        Route::post('/ajax/subscribe-newsletter', 'Frontend\AjaxController@postSubscribeNewsletter');
        Route::post('/ajax/send-contact', 'Frontend\AjaxController@postSendContact');
        //Route::post('/ajax/submit-vacancy', 'Frontend\AjaxController@postSubmitVacancy');
        Route::post('/ajax/submit-assessment', 'Frontend\AjaxController@postSubmitAssessment');

        Route::post('/ajax/twintags', 'Frontend\TwintagController@postList');

        Route::get('{uriPath?}', 'Frontend\GenericController@getIndex')
            ->middleware('page-cache')
            ->where(['uriPath'=> '(.*)']);
    }
);

/*
Route::get('/', function () {
    return view('welcome');
});*/
