<?php

use Illuminate\Support\Facades\Route;

Route::namespace('Auth')->group(function () {
    Route::middleware('admin.guest')->group(function () {
        Route::controller('LoginController')->group(function () {
            Route::get('/', 'showLoginForm')->name('login');
            Route::post('/', 'login')->name('login');
            Route::get('logout', 'logout')->middleware('admin')->withoutMiddleware('admin.guest')->name('logout');
        });


        // Admin Password Reset
        Route::controller('ForgotPasswordController')->prefix('password')->name('password.')->group(function () {
            Route::get('reset', 'showLinkRequestForm')->name('reset');
            Route::post('reset', 'sendResetCodeEmail');
            Route::get('code-verify', 'codeVerify')->name('code.verify');
            Route::post('verify-code', 'verifyCode')->name('verify.code');
        });

        Route::controller('ResetPasswordController')->group(function () {
            Route::get('password/reset/{token}', 'showResetForm')->name('password.reset.form');
            Route::post('password/reset/change', 'reset')->name('password.change');
        });
    });
});


Route::get('banned', 'AdminController@banned')->name('banned');

Route::middleware('admin', 'adminPermission')->group(function () {

    Route::controller('AdminController')->group(function () {
        Route::get('dashboard', 'dashboard')->name('dashboard');
        Route::get('chart/deposit-withdraw', 'depositAndWithdrawReport')->name('chart.deposit.withdraw');
        Route::get('chart/transaction', 'transactionReport')->name('chart.transaction');
        Route::get('profile', 'profile')->name('profile');
        Route::post('profile', 'profileUpdate')->name('profile.update');
        Route::get('password', 'password')->name('password');
        Route::post('password', 'passwordUpdate')->name('password.update');

        //Notification
        Route::get('notifications', 'notifications')->name('notifications');
        Route::get('notification/read/{id}', 'notificationRead')->name('notification.read');
        Route::get('notifications/read-all', 'readAllNotification')->name('notifications.read.all');
        Route::post('notifications/delete-all', 'deleteAllNotification')->name('notifications.delete.all');
        Route::post('notifications/delete-single/{id}', 'deleteSingleNotification')->name('notifications.delete.single');

        //Report Bugs
        Route::get('request-report', 'requestReport')->name('request.report')->middleware('superAdminPermission');
        Route::post('request-report', 'reportSubmit')->name('request.report.submit')->middleware('superAdminPermission');

        Route::get('download-attachments/{file_hash}', 'downloadAttachment')->name('download.attachment');
    });


// User OTP Management  
Route::controller('UserOtpController')->prefix('user-otp')->name('users.otp.')->group(function () {
    Route::get('{userId}', 'viewUserOtps')->name('view');
    Route::post('{userId}/generate', 'generateOtp')->name('generate');
    Route::get('{userId}/active', 'getActiveOtp')->name('active');
});




    // Users Manager
    Route::controller('ManageUsersController')->name('users.')->prefix('users')->group(function () {
        Route::get('/', 'allUsers')->name('all');
        Route::get('profile-incomplete', 'profileIncomplete')->name('profile.incomplete');
        Route::get('profile-completed', 'profileCompleted')->name('profile.completed');
        Route::get('active', 'activeUsers')->name('active');
        Route::get('banned', 'bannedUsers')->name('banned');
        Route::get('email-verified', 'emailVerifiedUsers')->name('email.verified');
        Route::get('email-unverified', 'emailUnverifiedUsers')->name('email.unverified');
        Route::get('mobile-unverified', 'mobileUnverifiedUsers')->name('mobile.unverified');
          Route::post('password-update/{id}', 'passwordUpdate')->name('password.update');
    Route::post('username-update/{id}', 'usernameUpdate')->name('username.update');
        Route::get('kyc-verified', 'kycVerifiedUsers')->name('kyc.verified');
        Route::get('kyc-unverified', 'kycUnverifiedUsers')->name('kyc.unverified');
        Route::get('kyc-pending', 'kycPendingUsers')->name('kyc.pending');
        Route::get('mobile-verified', 'mobileVerifiedUsers')->name('mobile.verified');

        Route::get('detail/{id}', 'detail')->name('detail');
        Route::get('kyc-data/{id}', 'kycDetails')->name('kyc.details');
        Route::post('kyc-approve/{id}', 'kycApprove')->name('kyc.approve');
        Route::post('kyc-reject/{id}', 'kycReject')->name('kyc.reject');
        Route::post('update/{id}', 'update')->name('update');
        Route::post('add-sub-balance/{id}', 'addSubBalance')->name('add.sub.balance');
        Route::get('send-notification/{id}', 'showNotificationSingleForm')->name('notification.single');
        Route::post('send-notification/{id}', 'sendNotificationSingle')->name('notification.single');
        Route::get('login/{id}', 'login')->name('login');
        Route::post('status/{id}', 'status')->name('status');
        Route::get('send-notification', 'showNotificationAllForm')->name('notification.all');
        Route::post('send-notification', 'sendNotificationAll')->name('notification.all.send');
        Route::get('list', 'list')->name('list');
        Route::get('count-by-segment/{methodName}', 'countBySegment')->name('segment.count');
        Route::get('notification-log/{id}', 'notificationLog')->name('notification.log');
        Route::get('beneficiaries/{id}', 'beneficiaries')->name('beneficiaries');
        Route::get('beneficiary/details/{id}', 'beneficiaryDetails')->name('beneficiary.details');
         Route::get('create', 'create')->name('create');
    Route::post('store', 'store')->name('store');
    });

    // Subscriber
    Route::controller('SubscriberController')->prefix('subscriber')->name('subscriber.')->group(function () {
        Route::get('/', 'index')->name('index');
        Route::get('send-email', 'sendEmailForm')->name('send.email');
        Route::post('remove/{id}', 'remove')->name('remove');
        Route::post('send-email', 'sendEmail')->name('send.email');
    });

    // Cards
    Route::controller('ManageVirtualCardController')->prefix('vcard')->name('card.')->group(function () {
        Route::get('all', 'index')->name('index');
        Route::get('active', 'active')->name('active');
        Route::get('inactive', 'inactive')->name('inactive');
        Route::get('detail/{id}', 'detail')->name('detail');
        Route::post('change-status/{id}', 'changeStatus')->name('change.status');

        // card transactions
        Route::get('transactions', 'transactions')->name('transaction');
    });

    // Deposit Gateway
    Route::name('gateway.')->prefix('gateway')->group(function () {
        // Automatic Gateway
        Route::controller('AutomaticGatewayController')->prefix('automatic')->name('automatic.')->group(function () {
            Route::get('/', 'index')->name('index');
            Route::get('edit/{alias}', 'edit')->name('edit');
            Route::post('update/{code}', 'update')->name('update');
            Route::post('remove/{id}', 'remove')->name('remove');
            Route::post('status/{id}', 'status')->name('status');
        });

        // Manual Methods
        Route::controller('ManualGatewayController')->prefix('manual')->name('manual.')->group(function () {
            Route::get('/', 'index')->name('index');
            Route::get('new', 'create')->name('create');
            Route::post('new', 'store')->name('store');
            Route::get('edit/{alias}', 'edit')->name('edit');
            Route::post('update/{id}', 'update')->name('update');
            Route::post('status/{id}', 'status')->name('status');
        });
    });

    // DEPOSIT SYSTEM
    Route::controller('DepositController')->prefix('deposit')->name('deposit.')->group(function () {
        Route::get('all/{user_id?}', 'deposit')->name('list');
        Route::get('pending/{user_id?}', 'pending')->name('pending');
        Route::get('rejected/{user_id?}', 'rejected')->name('rejected');
        Route::get('approved/{user_id?}', 'approved')->name('approved');
        Route::get('successful/{user_id?}', 'successful')->name('successful');
        Route::get('initiated/{user_id?}', 'initiated')->name('initiated');
        Route::get('details/{id}', 'details')->name('details');
        Route::post('reject', 'reject')->name('reject');
        Route::post('approve/{id}', 'approve')->name('approve');
    });


    // WITHDRAW SYSTEM
    Route::name('withdraw.')->prefix('withdraw')->group(function () {

        Route::controller('WithdrawalController')->name('data.')->group(function () {
            Route::get('pending/{user_id?}', 'pending')->name('pending');
            Route::get('approved/{user_id?}', 'approved')->name('approved');
            Route::get('rejected/{user_id?}', 'rejected')->name('rejected');
            Route::get('all/{user_id?}', 'all')->name('all');
            Route::get('details/{id}', 'details')->name('details');
            Route::post('approve', 'approve')->name('approve');
            Route::post('reject', 'reject')->name('reject');
        });

        // Withdraw Method
        Route::controller('WithdrawMethodController')->prefix('method')->name('method.')->group(function () {
            Route::get('/', 'methods')->name('index');
            Route::get('create', 'create')->name('create');
            Route::post('create', 'store')->name('store');
            Route::get('edit/{id}', 'edit')->name('edit');
            Route::post('edit/{id}', 'update')->name('update');
            Route::post('status/{id}', 'status')->name('status');
        });
    });


    Route::name('plans.')->prefix('plans')->group(function () {
        //============Loan Plan================//
        Route::name('loan.')->prefix('loan')->controller('LoanPlanController')->group(function () {
            Route::get('/index', 'index')->name('index');
            Route::get('create', 'create')->name('create');
            Route::get('edit/{id}', 'edit')->name('edit');
            Route::post('store/{id?}', 'store')->name('save');
            Route::post('status/{id}', 'changeStatus')->name('status');
        });

        //============DPS Plan================//
        Route::name('dps.')->prefix('dps')->controller('DpsPlanController')->group(function () {
            Route::get('index', 'index')->name('index');
            Route::get('add-new', 'addNew')->name('add');
            Route::get('edit/{id}', 'edit')->name('edit');
            Route::post('store/{id?}', 'store')->name('save');
            Route::post('status/{id}', 'changeStatus')->name('status');
        });

        //============FDR Plan================//
        Route::name('fdr.')->prefix('fdr')->controller('FdrPlanController')->group(function () {
            Route::get('index', 'index')->name('index');
            Route::post('store/{id?}', 'store')->name('save');
            Route::post('status/{id}', 'changeStatus')->name('status');
        });
    });

    //============Staff================//
    Route::controller('AdminStaffController')->prefix('staff')->name('staff.')->group(function () {
        Route::get('', 'index')->name('index');
        Route::post('save/{id?}', 'save')->name('save');
        Route::post('switch-status/{id}', 'status')->name('status');
        Route::get('login/{id}', 'login')->name('login');
    });

    //============Roles================//
    Route::controller('RolesController')->prefix('roles')->name('roles.')->group(function () {
        Route::get('', 'index')->name('index');
        Route::get('add', 'add')->name('add');
        Route::get('edit/{id}', 'edit')->name('edit');
        Route::post('save/{id?}', 'save')->name('save');
    });

    //============Loan================//
    Route::name('loan.')->prefix('loan')->controller('LoanController')->group(function () {
        Route::get('all', 'index')->name('index');
        Route::get('running', 'runningLoans')->name('running');
        Route::get('pending', 'pendingLoans')->name('pending');
        Route::get('rejected', 'rejectedLoans')->name('rejected');
        Route::get('paid', 'paidLoans')->name('paid');
        Route::get('due', 'dueInstallment')->name('due');
        Route::post('approve/{id}', 'approve')->name('approve');
        Route::post('reject/{id}', 'reject')->name('reject');
        Route::get('details/{id}', 'details')->name('details');
        Route::get('installments/{id}', 'installments')->name('installments');
    });

    //=============DPS================//
    Route::name('dps.')->prefix('dps')->controller('DpsController')->group(function () {
        Route::get('all', 'index')->name('index');
        Route::get('running', 'runningDps')->name('running');
        Route::get('matured', 'maturedDps')->name('matured');
        Route::get('closed', 'closedDps')->name('closed');
        Route::get('due', 'dueInstallment')->name('due');
        Route::get('installments/{id}', 'installments')->name('installments');
    });

    //=============FDR================//
    Route::name('fdr.')->prefix('fdr')->controller('FdrController')->group(function () {
        Route::get('index', 'index')->name('index');
        Route::get('running', 'runningFdr')->name('running');
        Route::get('closed', 'closedFdr')->name('closed');
        Route::get('due', 'dueInstallment')->name('due');
        Route::post('due/pay/{id}', 'payDue')->name('due.pay');

        Route::get('installments/{id}', 'installments')->name('installments');
    });

    //=================Others Bank=========================//
    Route::name('bank.')->prefix('other-banks')->controller('OtherBankController')->group(function () {
        Route::get('create', 'create')->name('create');
        Route::post('store/{id?}', 'store')->name('store');
        Route::get('edit/{id}', 'edit')->name('edit');
        Route::get('index', 'index')->name('index');
        Route::post('change/status/{id}', 'changeStatus')->name('change.status');
    });

    //=================Wire Transfer=========================//
    Route::name('wire.transfer.')->prefix('wire-transfer')->controller('WireTransferSettingController')->group(function () {
        Route::get('setting', 'setting')->name('setting');
        Route::post('setting', 'saveSetting')->name('setting.save');
        Route::get('form', 'form')->name('form');
        Route::post('form', 'saveForm')->name('form.save');
    });

    //=============Transfer route=======================//
    Route::name('transfers.')->prefix('transfers')->controller('MoneyTransferController')->group(function () {
        Route::get('all/{user_id?}', 'index')->name('index');
        Route::get('pending/{user_id?}', 'pending')->name('pending');
        Route::get('rejected/{user_id?}', 'rejected')->name('rejected');
        Route::get('own-bank', 'ownBank')->name('own');
        Route::get('other-bank', 'otherBank')->name('other');
        Route::get('wire-transfer', 'wireTransfer')->name('wire');
        Route::get('details/{id}', 'details')->name('details');
        Route::post('reject', 'reject')->name('reject');
        Route::post('complete/{id}', 'complete')->name('complete');
    });

    //============== Branch =======================//
    Route::name('branch.')->prefix('branch')->controller('BranchController')->group(function () {
        Route::get('all', 'index')->name('index');
        Route::get('new', 'addNew')->name('add');
        Route::get('details/{id}', 'details')->name('details');
        Route::post('save/{id?}', 'save')->name('save');
        Route::post('status/{id}', 'changeStatus')->name('status');
    });

    //============== Branch Staff =======================//
    Route::name('branch.staff.')->prefix('branch/staff')->controller('BranchStaffController')->group(function () {
        Route::get('index', 'index')->name('index');
        Route::get('new', 'addNew')->name('add');
        Route::get('details/{id}', 'details')->name('details');
        Route::post('save/{id?}', 'save')->name('save');
        Route::post('status/{id}', 'changeStatus')->name('status');
        Route::get('login/{id}', 'login')->name('login');
    });


    //wallet
    Route::controller('WalletController')->prefix('wallet')->name('wallet.')->group(function () {
        Route::get('list/{username?}', 'list')->name('list');
        Route::get('currency', 'currency')->name('currency');
        Route::post('currency/store/{id?}', 'currencyStore')->name('currency.store');
        Route::post('currency/status/{id}', 'currencyStatus')->name('currency.status');
        Route::post('currency/api/update', 'currencyApiUpdate')->name('currency.api.update');
        Route::post('currency/rate', 'getCurrencyRate')->name('currency.rate');
    });

    //account level
    Route::controller('AccountLevelController')->prefix('account/level')->name('account.level.')->group(function () {
        Route::get('list', 'list')->name('list');
        Route::post('store/{id?}', 'store')->name('store');
        Route::post('status/{id}', 'status')->name('status');
    });

    // reward
    Route::controller('RewardPointController')->prefix('reward/point')->name('reward.point.')->group(function () {
        Route::get('earning/list', 'earningList')->name('earning.list');
        Route::get('earning/create', 'earningCreate')->name('earning.create');
        Route::get('earning/edit/{id}', 'earningEdit')->name('earning.edit');
        Route::post('earning/store/{id?}', 'earningStore')->name('earning.store');
        Route::post('earning/status/{id}', 'earningStatus')->name('earning.status');

        Route::get('redeem/list', 'redeemList')->name('redeem.list');
        Route::post('redeem/store/{id?}', 'redeemStore')->name('redeem.store');
        Route::post('redeem/status/{id}', 'redeemStatus')->name('redeem.status');
    });


    //Referral Setting
    Route::controller('ReferralSettingController')->group(function () {
        Route::get('referral-setting', 'index')->name('referral.setting');
        Route::post('referral-setting', 'save')->name('referral.setting.save');
    });

    Route::name('api.config.')->controller('GeneralSettingController')->prefix('api-configuration')->group(function () {
        Route::get('api-configuration', 'apiConfiguration')->name('index');
        Route::post('update-reloadly', 'saveAirtimeApiCredentials')->name('reloadly.save');
    });

    Route::post('table-configuration', 'GeneralSettingController@configureTable')->name('table.configure');

    Route::controller('AirtimeController')->name('airtime.')->prefix('airtime')->group(function () {
        Route::get('countries', 'countries')->name('countries');
        Route::get('fetch-countries', 'fetchCountries')->name('countries.fetch');
        Route::post('save-countries', 'saveCountries')->name('countries.save');
        Route::post('update-country-status/{id}', 'updateCountryStatus')->name('country.status');

        Route::get('operators/{iso?}', 'operators')->name('operators');
        Route::get('fetch-operators/{iso}', 'fetchOperatorsByISO')->name('operators.fetch');
        Route::post('save-operators/{iso}', 'saveOperators')->name('operators.save');
        Route::post('update-operator-status/{id}', 'updateOperatorStatus')->name('operator.status');
    });

    // Report
    Route::controller('ReportController')->prefix('report')->name('report.')->group(function () {
        Route::get('transaction/{user_name?}', 'transaction')->name('transaction');
        Route::get('vcard-transaction/{user_name?}', 'vcardTransaction')->name('vcard.transaction');
        Route::get('login/history', 'loginHistory')->name('login.history');
        Route::get('notification/history', 'notificationHistory')->name('notification.history');
        Route::get('email/detail/{id}', 'emailDetails')->name('email.details');
    });

    // Admin Support
    Route::controller('SupportTicketController')->prefix('ticket')->name('ticket.')->group(function () {
        Route::get('/', 'tickets')->name('index');
        Route::get('pending', 'pendingTicket')->name('pending');
        Route::get('closed', 'closedTicket')->name('closed');
        Route::get('answered', 'answeredTicket')->name('answered');
        Route::get('view/{id}', 'ticketReply')->name('view');
        Route::post('reply/{id}', 'replyTicket')->name('reply');
        Route::post('close/{id}', 'closeTicket')->name('close');
        Route::get('download/{attachment_id}', 'ticketDownload')->name('download');
        Route::post('delete/{id}', 'ticketDelete')->name('delete');
    });


    // Language Manager
    Route::controller('LanguageController')->prefix('language')->name('language.')->group(function () {
        Route::get('/', 'langManage')->name('manage');
        Route::post('/', 'langStore')->name('manage.store');
        Route::post('delete/{id}', 'langDelete')->name('manage.delete');
        Route::post('update/{id}', 'langUpdate')->name('manage.update');
        Route::get('keywords/{code}', 'langEdit')->name('key');
        Route::post('import', 'langImport')->name('import.lang');
        Route::post('store/key/{id}', 'storeLanguageJson')->name('store.key');
        Route::post('delete/key/{id}', 'deleteLanguageJson')->name('delete.key');
        Route::post('update/key/{id}', 'updateLanguageJson')->name('update.key');
        Route::get('get-keys', 'getKeys')->name('get.key');
    });

    Route::controller('VirtualCardConfigurationController')->name('virtualcard.')->prefix('virtual-card')->group(function(){
        Route::get('configure', 'configure')->name('configure');
        Route::post('update-configuration', 'updateConfiguration')->name('configuration.update');
    });

    Route::controller('GeneralSettingController')->group(function () {

        Route::get('settings', 'systemSetting')->name('setting.system');

        // General Setting
        Route::get('general-setting', 'general')->name('setting.general');
        Route::post('general-setting', 'generalUpdate')->name('setting.update');

        Route::get('setting/social/credentials', 'socialiteCredentials')->name('setting.socialite.credentials');
        Route::post('setting/social/credentials/update/{key}', 'updateSocialiteCredential')->name('setting.socialite.credentials.update');
        Route::post('setting/social/credentials/status/{key}', 'updateSocialiteCredentialStatus')->name('setting.socialite.credentials.status.update');

        //configuration
        Route::get('setting/system-configuration', 'systemConfiguration')->name('setting.system.configuration');
        Route::post('setting/system-configuration', 'systemConfigurationSubmit')->name('setting.system.configuration.submit');

        // Logo-Icon
        Route::get('setting/logo-icon', 'logoIcon')->name('setting.logo.icon');
        Route::post('setting/logo-icon', 'logoIconUpdate')->name('setting.logo.icon.update');


        //In app purchase
        Route::get('in-app-purchase', 'inAppPurchase')->name('setting.app.purchase');
        Route::post('in-app-purchase', 'inAppPurchaseConfigure')->name('setting.app.purchase.submit');
        Route::get('in-app-purchase/file/download', 'inAppPurchaseFileDownload')->name('setting.app.purchase.file.download');
    });


    Route::middleware('superAdminPermission')->controller('CronConfigurationController')->name('cron.')->prefix('cron')->group(function () {
        Route::get('index', 'cronJobs')->name('index');
        Route::post('store', 'cronJobStore')->name('store');
        Route::post('update', 'cronJobUpdate')->name('update');
        Route::post('delete/{id}', 'cronJobDelete')->name('delete');
        Route::get('schedule', 'schedule')->name('schedule');
        Route::post('schedule/store', 'scheduleStore')->name('schedule.store');
        Route::post('schedule/status/{id}', 'scheduleStatus')->name('schedule.status');
        Route::get('schedule/pause/{id}', 'schedulePause')->name('schedule.pause');
        Route::get('schedule/logs/{id}', 'scheduleLogs')->name('schedule.logs');
        Route::post('schedule/log/resolved/{id}', 'scheduleLogResolved')->name('schedule.log.resolved');
        Route::post('schedule/log/flush/{id}', 'logFlush')->name('log.flush');
    });


    //KYC setting
    Route::controller('KycController')->group(function () {
        Route::get('kyc-setting', 'setting')->name('kyc.setting');
        Route::post('kyc-setting', 'settingUpdate')->name('kyc.setting.submit');
    });

    //Notification Setting
    Route::name('setting.notification.')->controller('NotificationController')->prefix('notification')->group(function () {
        //Template Setting
        Route::get('global/email', 'globalEmail')->name('global.email');
        Route::post('global/email/update', 'globalEmailUpdate')->name('global.email.update');

        Route::get('global/sms', 'globalSms')->name('global.sms');
        Route::post('global/sms/update', 'globalSmsUpdate')->name('global.sms.update');

        Route::get('global/push', 'globalPush')->name('global.push');
        Route::post('global/push/update', 'globalPushUpdate')->name('global.push.update');

        Route::get('templates', 'templates')->name('templates');
        Route::get('template/edit/{type}/{id}', 'templateEdit')->name('template.edit');
        Route::post('template/update/{type}/{id}', 'templateUpdate')->name('template.update');

        //Email Setting
        Route::get('email/setting', 'emailSetting')->name('email');
        Route::post('email/setting', 'emailSettingUpdate')->name('email.update');
        Route::post('email/test', 'emailTest')->name('email.test');



        //SMS Setting
        Route::get('sms/setting', 'smsSetting')->name('sms');
        Route::post('sms/setting', 'smsSettingUpdate')->name('sms.update');
        Route::post('sms/test', 'smsTest')->name('sms.test');

        Route::get('notification/push/setting', 'pushSetting')->name('push');
        Route::post('notification/push/setting', 'pushSettingUpdate')->name('push.update');
        Route::post('notification/push/setting/upload', 'pushSettingUpload')->name('push.upload');
        Route::get('notification/push/setting/download', 'pushSettingDownload')->name('push.download');
    });

    // Plugin
    Route::controller('ExtensionController')->prefix('extensions')->name('extensions.')->group(function () {
        Route::get('/', 'index')->name('index');
        Route::post('update/{id}', 'update')->name('update');
        Route::post('status/{id}', 'status')->name('status');
    });


    //System Information
    Route::controller('SystemController')->name('system.')->prefix('system')->group(function () {
        Route::get('info', 'systemInfo')->name('info');
        Route::get('server-info', 'systemServerInfo')->name('server.info');
        Route::get('optimize', 'optimize')->name('optimize');
        Route::get('optimize-clear', 'optimizeClear')->name('optimize.clear');
        Route::get('system-update', 'systemUpdate')->name('update');
        Route::post('system-update', 'systemUpdateProcess')->name('update.process');
        Route::get('system-update/log', 'systemUpdateLog')->name('update.log');
    });


    // Frontend
    Route::name('frontend.')->prefix('frontend')->group(function () {

        Route::controller('FrontendController')->group(function () {
            Route::get('seo', 'FrontendController@seoEdit')->name('seo');
            Route::post('seo-update', 'FrontendController@seoUpdate')->name('seo.update');
            Route::get('index', 'index')->name('index');
            Route::get('templates', 'templates')->name('templates');
            Route::post('templates', 'templatesActive')->name('templates.active');
            Route::get('frontend-sections/{key?}', 'frontendSections')->name('sections');
            Route::post('frontend-content/{key}', 'frontendContent')->name('sections.content');
            Route::get('frontend-element/{key}/{id?}', 'frontendElement')->name('sections.element');
            Route::get('frontend-slug-check/{key}/{id?}', 'frontendElementSlugCheck')->name('sections.element.slug.check');
            Route::get('frontend-element-seo/{key}/{id}', 'frontendSeo')->name('sections.element.seo');
            Route::post('frontend-element-seo/{key}/{id}', 'frontendSeoUpdate')->name('sections.element.seo.update');
            Route::post('update-seo', 'updateSeoContent')->name('seo.update');
            Route::post('remove/{id}', 'remove')->name('remove');
        });

        // Page Builder
        Route::controller('PageBuilderController')->group(function () {
            Route::get('manage-pages', 'managePages')->name('manage.pages');
            Route::get('manage-pages/check-slug/{id?}', 'checkSlug')->name('manage.pages.check.slug');
            Route::post('manage-pages', 'managePagesSave')->name('manage.pages.save');
            Route::post('manage-pages/update', 'managePagesUpdate')->name('manage.pages.update');
            Route::post('manage-pages/delete/{id}', 'managePagesDelete')->name('manage.pages.delete');
            Route::get('manage-section/{id}', 'manageSection')->name('manage.section');
            Route::post('manage-section/{id}', 'manageSectionUpdate')->name('manage.section.update');

            Route::get('manage-seo/{id}', 'manageSeo')->name('manage.pages.seo');
            Route::post('manage-seo/{id}', 'manageSeoStore')->name('manage.pages.seo.store');
        });
    });

    Route::controller('FrontendController')->group(function () {
        //Custom CSS
        Route::get('custom-css', 'customCss')->name('setting.custom.css');
        Route::post('custom-css', 'customCssSubmit')->name('setting.custom.css.submit');

        Route::get('sitemap', 'sitemap')->name('setting.sitemap');
        Route::post('sitemap', 'sitemapSubmit')->name('setting.sitemap.submit');

        Route::get('robot', 'robot')->name('setting.robot');
        Route::post('robot', 'robotSubmit')->name('setting.robot.submit');

        //Cookie
        Route::get('cookie', 'cookie')->name('setting.cookie');
        Route::post('cookie', 'cookieSubmit')->name('setting.cookie.submit');

        //maintenance_mode
        Route::get('maintenance-mode', 'maintenanceMode')->name('maintenance.mode');
        Route::post('maintenance-mode', 'maintenanceModeSubmit')->name('maintenance.mode.submit');
    });
});
