<?php


use Illuminate\Support\Facades\Route;

Route::get('/logout', [    'uses' => 'DashboardController@logout', 'as' => 'logout'   ]);
Route::get('dynamic/user/get-password/view/{token}','DynamicUserController@getResetPasswordView')->name('dynamic.users.getPasswordView');
Route::post('dynamic/user/password/update','DynamicUserController@updatePassword')->name('dynamic.users.passwordUpdate');

Route::group(['prefix'=>'account','middleware' => ['auth']],function () {
    Route::any('upgrade', 'Client\CompanyController@upgrade')->name('app.account.upgrade');
    Route::any('contact-person-info', 'Client\CompanyController@contact_person_id')->name('app.account.contact-person-id');
    Route::any('password', 'Client\CompanyController@password')->name('app.account.password');
    Route::any('password/expired', 'Client\CompanyController@passwordExpiry')->name('app.password.expiry');
});

Route::group(['middleware' => ['auth','company','changePass', 'passwordExpiry']], function () {

    Route::get('/deywuro/welcome', [ 'uses' => 'DashboardController@welcome', 'as' => 'welcome'])->middleware(['can:view-sms-dashboard']);

    Route::get('/dashboard', [ 'uses' => 'DashboardController@index', 'as' => 'app' ])->middleware(['can:view-sms-dashboard']);

    //Email Dashboard
    Route::get('/email-dashboard', ['uses' => 'DashboardController@email_index', 'as' => 'app.email'])->middleware(['can:view-email-dashboard']);

    Route::prefix('sentiment')->group(function (){
        Route::any('/facebook','Client\SentimentAnalysisController@facebook_sentiments')->name('sentiments.fb');
        Route::any('/linkedIn','Client\SentimentAnalysisController@linkedin_sentiments')->name('sentiments.lk');
        Route::any('/twitter','Client\SentimentAnalysisController@twitter_sentiments')->name('sentiments.tw');
        Route::any('/trending','Client\SentimentAnalysisController@trending')->name('sentiments.trend');
        Route::any('/','Client\SentimentAnalysisController@index')->name('sentiments.index');
        Route::match(['get','post'],'setup/sentiments','Client\SentimentAnalysisController@setup')->name('sentiments.setup');
    });


    //Email Dashboard
    Route::get('/voice-dashboard', ['uses' => 'DashboardController@voice_index', 'as' => 'app.voice']);

    Route::get('/new-purchase', ['uses' => 'DashboardController@newPurchase', 'as' => 'newPurchase']);

    Route::match(['get','post'],'BuyCredit','DashboardController@buy_now')->name('buynow');

    Route::get('sendOTPCode','DashboardController@sendOTPCode')->name('sendOTPCode');

    Route::post('verifyOTPCode','DashboardController@verifyOTPCode')->name('verifyOTPCode');



    Route::group(['middleware' => ['auth'], 'namespace' => 'Ads'], function () {

        // target.json
        Route::group(['prefix' => 'target'], function() {
            Route::get('fetch.json', ['uses' => 'ITargetController@index', 'as' => 'app.ads.target.index']);
            Route::post('filter.json', ['uses' => 'ITargetController@filter', 'as' => 'app.ads.target.filter']);
            Route::get('{id}/grid.json', ['uses' => 'ITargetController@get_grid', 'as' => 'app.ads.target.grid']);
        });

        // client portal
        Route::group(['prefix' => 'adds'], function () {
            // audience
            Route::group(['prefix' => 'aud'], function() {
                Route::get('index', ['uses' => 'AudienceController@index', 'as' => 'app.ads.aud.index']);
                Route::match(['get', 'post'], '/create', ['uses' => 'AudienceController@create', 'as' => 'app.ads.aud.create']);
                Route::match(['get', 'post'], '/{id}/view', ['uses' => 'AudienceController@view', 'as' => 'app.ads.aud.view']);
                Route::get('/{id}/grid', ['uses' => 'AudienceController@use', 'as' => 'app.ads.aud.grid']);
                Route::match(['get', 'post'], '/{id}/use', ['uses' => 'AudienceController@use', 'as' => 'app.ads.aud.use']);
                Route::match(['get', 'post'], '/{id}/edit', ['uses' => 'AudienceController@edit', 'as' => 'app.ads.aud.edit']);
                Route::get('/{id}/delete', ['uses' => 'AudienceController@delete', 'as' => 'app.ads.aud.del']);

                // send adverts
                Route::match(['get', 'post'], '/{id}/send-bulk-sms', ['uses' => 'AdvertController@send_bulk_sms', 'as' => 'app.ads.sms.send']);
                Route::match(['get', 'post'], '/{id}/send-bulk-email', ['uses' => 'AdvertController@send_bulk_email', 'as' => 'app.ads.email.send']);

            });
            Route::get('index', ['uses' => 'AudienceController@index', 'as' => 'app.ads.index']);
            Route::get('adverts', ['uses' => 'AdvertController@adverts', 'as' => 'app.ads.adverts']);
        });

        // esme portal
        // reseller portal
        Route::group(['prefix' => 'esme/ads', 'middleware' => 'auth.esme'], function () {
            // audience
            Route::group(['prefix' => 'aud'], function() {
                Route::get('index', ['uses' => 'AudienceController@index', 'as' => 'esme.ads.aud.index']);
                Route::match(['get', 'post'], '/create', ['uses' => 'AudienceController@create', 'as' => 'esme.ads.aud.create']);
                Route::match(['get', 'post'], '/{id}/view', ['uses' => 'AudienceController@view', 'as' => 'esme.ads.aud.view']);
                Route::get('/{id}/grid', ['uses' => 'AudienceController@use', 'as' => 'esme.ads.aud.grid']);
                Route::match(['get', 'post'], '/{id}/use', ['uses' => 'AudienceController@use', 'as' => 'esme.ads.aud.use']);
                Route::match(['get', 'post'], '/{id}/edit', ['uses' => 'AudienceController@edit', 'as' => 'esme.ads.aud.edit']);
                Route::get('/{id}/delete', ['uses' => 'AudienceController@delete', 'as' => 'esme.ads.aud.del']);

                // send adverts
                Route::match(['get', 'post'], '/{id}/send-bulk-sms', ['uses' => 'AdvertController@send_bulk_sms', 'as' => 'esme.ads.sms.send']);
                Route::match(['get', 'post'], '/{id}/send-bulk-email', ['uses' => 'AdvertController@send_bulk_email', 'as' => 'esme.ads.email.send']);

            });
            Route::get('index', ['uses' => 'AudienceController@index', 'as' => 'esme.ads.index']);
            Route::get('adverts', ['uses' => 'AdvertController@adverts', 'as' => 'esme.ads.adverts']);
        });


    });

    /**
     * USSD services routes
     */
    Route::group(['middleware' => ['auth'], 'namespace' => 'USSD'], function () {
        //ussd service
        Route::group(['prefix' => 'service'], function () {
            Route::get('index', ['uses' => 'USSDServiceController@index', 'as' => 'service.index']);
            Route::match(['get', 'post'], '/create', ['uses' => 'USSDServiceController@create', 'as' => 'service.create']);
            Route::match( ['get', 'post'],'/{id}/edit', ['uses' => 'USSDServiceController@edit', 'as' => 'service.edit']);
            Route::get('/{id}/delete', ['uses' => 'USSDServiceController@destroy', 'as' => 'service.delete']);
            Route::get('{id}/done', ['uses' => 'USSDServiceController@done', 'as' => 'service.done']);
            Route::get('{id}/view', ['uses' => 'USSDServiceController@show', 'as' => 'service.show']);
            Route::get('{service}/report/dashboard', ['uses' => 'USSDServiceController@reportDashboard', 'as' => 'service.report.dashboard']);
            Route::get('{service}/report/col-dashboard', ['uses' => 'USSDServiceController@reportCollectionsDashboard', 'as' => 'service.collections.dashboard']);
            Route::get('{service}/response/report', ['uses' => 'USSDServiceController@ussdResponseReport', 'as' => 'service.response.report']);
            Route::get('{service}/response/coll-report', ['uses' => 'USSDServiceController@ussdCollectionResponseReport', 'as' => 'service.collections.report']);
            Route::get('{service}/response/payment-report', ['uses' => 'USSDServiceController@ussdPaymentResponseReport', 'as' => 'service.sales.report']);

            //ussd type subscription routes -  for survey, data collection , vote etc
            Route::get('{ussdService}/subscription/question/create', ['uses' => 'UssdTypeSubscriptionController@getQuestionPage', 'as' => 'service.ussd.subscription.question']);
            Route::get('{ussdQuestion}/subscription/question/edit', ['uses' => 'UssdTypeSubscriptionController@getQuestionUpdatePage', 'as' => 'service.ussd.subscription.question.edit']);
            Route::post('subscription/question/store', ['uses' => 'UssdTypeSubscriptionController@storeQuestion', 'as' => 'service.ussd.subscription.question.store']);

            Route::post('{ussdQuestion}/subscription/question/update', ['uses' => 'UssdTypeSubscriptionController@updateQuestion', 'as' => 'service.ussd.subscription.question.update']);
            Route::delete('{ussdQuestion}/subscription/question/delete', ['uses' => 'UssdTypeSubscriptionController@deleteQuestion', 'as' => 'service.ussd.subscription.question.delete']);

            //ussd question and answer routes
            Route::get('{ussdQuestion}/subscription/answer/create', ['uses' => 'UssdTypeSubscriptionController@getAnswerPage', 'as' => 'service.ussd.subscription.answer']);
            Route::get('{ussdAnswer}/subscription/answer/edit', ['uses' => 'UssdTypeSubscriptionController@getAnswerUpdatePage', 'as' => 'service.ussd.subscription.answer.edit']);
            Route::post('subscription/answer/store', ['uses' => 'UssdTypeSubscriptionController@storeAnswer', 'as' => 'service.ussd.subscription.answer.store']);
            Route::delete('{ussdAnswer}/subscription/answer/delete', ['uses' => 'UssdTypeSubscriptionController@deleteAnswer', 'as' => 'service.ussd.subscription.answer.delete']);
            Route::post('{ussdAnswer}/subscription/answer/update', ['uses' => 'UssdTypeSubscriptionController@updateAnswer', 'as' => 'service.ussd.subscription.answer.update']);

            //ussd payment logic routes
            Route::get('{service}/payment/subscription', ['uses' => 'UssdPaymentController@index', 'as' => 'service.ussd.payment.subscription']);
            Route::resource('payments', 'UssdPaymentController')->only(['edit', 'update']);

            Route::get('verify/ussd', ['uses' => 'USSDServiceController@verify_code', 'as' => 'service.ussd.code.verify']);
        });



    });






    /*
    |--------------------------------------------------------------------------
    | User Profile Route
    |--------------------------------------------------------------------------
    */
    Route::get('/profile', ['uses' => 'DashboardController@get_user_profile', 'as' => 'profile'])->middleware(['can:edit-profile']);
    Route::get('saved/message/{message}', ['uses' => 'DashboardController@saved_message_delete', 'as' => 'profile.edit.saved.message'])->middleware(['can:edit-profile']);


/** Social Media Routes */
    Route::group(['prefix'=>'social'],function (){

        Route::get('index','SocialMediaController@index')->name('social.index');
        Route::any('facebook/dashboard','SocialMediaController@dashboard_fb')->name('social.message.fb');
        Route::any('pages/facebook','SocialMediaController@pages_fb')->name('social.pages.fb');
        Route::any('instagram/dashboard','SocialMediaController@dashboard_ig')->name('social.message.ig');
        Route::any('twitter/dashboard','SocialMediaController@dashboard_twitter')->name('social.message.twitter');
        Route::any('pages/linkedin','SocialMediaController@pages_lk')->name('social.pages.lk');
        Route::any('linkedin/dashboard','SocialMediaController@dashboard_linked')->name('social.message.linked');
        Route::any('trending','SocialMediaController@trending')->name('social.message.trending');
        Route::any('post-message','SocialMediaController@message')->name('social.message.post');


        Route::group(['prefix'=>'ajax'],function (){
            Route::get('facebook','SocialMediaController@ajax_facebook')->name('social.ajax.facebook');
        });

        /** Subscription **/
        Route::group(['prefix'=>'subscription'],function () {
            //Route::get('/', 'SocialMediaController@subscription_index')->name('social.subscription.index');
            Route::get('/', function() {
    abort(404);
})->name('social.subscription.index');
            Route::any('chose/{package}/package', 'SocialMediaController@subscription_signup')->name('social.subscription.signup');
            Route::get('payments', 'SocialMediaController@payment_history')->name('social.subscription.payments');
        });




        /** facebook routes **/
        Route::get('fb-redirect','SocialMediaController@fb_loginIsValidated')->name('social.facebook');
        Route::get('fb-accounts','SocialMediaController@fb_accounts')->name('social.facebook.accounts');
        Route::get('fb-data','SocialMediaController@fb_retrieved_data')->name('social.facebook.data'); //after successful redirecting


        /** Instagram Routes **/
        Route::get('instagram','SocialMediaController@instagram')->name('social.instagram');
        Route::get('in-redirect','SocialMediaController@ins_redirected')->name('social.ins-redirected');
        Route::get('in-access-callback','SocialMediaController@ins_access_callback')->name('social.ins-access-callback');


        /** Linked-In Routes **/
        Route::get('linkedin','SocialMediaController@linkedIn')->name('social.linkedin');
        Route::get('linkedin/callback','SocialMediaController@linkedIn0Auth')->name('social.linkedin.callback');
        Route::any('linkedin/page','SocialMediaController@linked_page')->name('social.linkedin.page');
        Route::get('linkedin-accounts','SocialMediaController@ln_accounts')->name('social.linkedin.accounts');


        Route::get('twitter','SocialMediaController@twitter')->name('social.twitter');
        Route::get('twitter/callback','SocialMediaController@twitter_callback')->name('social.twitter.callback');
    });

    Route::group(['prefix'=>'setup-email'],function (){
        Route::post('create','ClientEmailController@create')->name('setup.client.email');
        Route::post('edit/{id}','ClientEmailController@edit')->name('setup.client.edit');

        Route::group(['prefix'=>'mail-folder'],function () {
            Route::get('/update/excel', 'ClientEmailController@updateContactCsvFile')->name('email.contacts.setup.updateExcel');

            Route::get('/', 'ClientEmailController@mailFolder')->name('email.contacts.setup.folder');
            Route::post('/create', 'ClientEmailController@createFolder')->name('email.contacts.setup.folder.create');
            Route::post('/update/{id}', 'ClientEmailController@mailFolderUpdate')->name('email.contacts.setup.folder.update');
            Route::post('/delete/{id}', 'ClientEmailController@mailFolderDelete')->name('email.contacts.setup.folder.delete');
        });

        Route::group(['prefix'=>'contacts'],function () {
            Route::any('/', 'ClientEmailController@list')->name('email.contacts.setup');
            Route::any('create', 'ClientEmailController@list_create')->name('email.contacts.setup.create');
            Route::any('edit/{id}', 'ClientEmailController@list_edit')->name('email.contacts.setup.edit');
            Route::any('publish/{id}', 'ClientEmailController@list_publish')->name('email.contacts.setup.publish');
            Route::any('assign/{list}', 'ClientEmailController@list_assign')->name('email.contacts.setup.assign');
            Route::get('delete/{list}', 'ClientEmailController@list_delete')->name('email.contacts.setup.delete');

            Route::any('assign/{list}/create', 'ClientEmailController@list_assign_member')->name('email.contacts.setup.assign.create');
            Route::any('assign/{subscriber}/edit', 'ClientEmailController@list_assign_member_edit')->name('email.contacts.setup.assign.edit');
            Route::get('assign/{subscriber}/delete', 'ClientEmailController@list_assign_member_delete')->name('email.contacts.setup.assign.delete');
        });

        Route::group(['prefix'=>'audience-address'],function () {
            Route::any('/', 'ClientEmailController@address')->name('email.audience.address.index');
        });

        Route::group(['prefix'=>'subscription'],function () {
            //Route::get('/', 'ClientEmailController@subscription_index')->name('email.subscription.index');
            Route::get('/', function() {
    abort(404);
})->name('email.subscription.index');
            Route::any('chose/{package}/package', 'ClientEmailController@subscription_signup')->name('email.subscription.signup');
            Route::get('payments', 'ClientEmailController@payment_history')->name('email.subscription.payments');
        });

        Route::prefix('email')->group(function (){
                Route::prefix('templates')->group(function () {
                    Route::get('index', 'EmailTemplateController@index')->name('mail.template.index');
                    Route::any('index/create', 'EmailTemplateController@create')->name('mail.template.create');
                    Route::get('{id}/view', 'EmailTemplateController@preview')->name('mail.template.view');
                    Route::any('{id}/edit', 'EmailTemplateController@edit')->name('mail.template.edit');
                    Route::any('{id}/delete', ['uses' => 'EmailTemplateController@delete', 'as' => 'mail.template.delete']);
                });
        });

        Route::group(['prefix'=>'campaigns'],function () {
            Route::get('/', 'ClientEmailController@campaignsList')->name('email.campaigns.index');
            Route::any('create', 'ClientEmailController@campaignCreate')->name('email.campaigns.create');
            Route::any('send/{id}', 'ClientEmailController@campaignSend')->name('email.campaigns.send');
            Route::any('edit/{emailCampaign}', 'ClientEmailController@campaignEdit')->name('email.campaigns.edit');
            Route::get('delete/{id}', 'ClientEmailController@campaignDelete')->name('email.campaigns.delete');

            Route::get('get-user-mail-list/{userMailList}', 'ClientEmailController@getUserMailListData')->name('email.campaigns.getUserMailListData');


            Route::group(['prefix'=>'reports'],function () {
                Route::get('/', 'ClientEmailController@campaignsReport')->name('email.campaigns.report.index');
                Route::get('api', 'ClientEmailController@campaignsAPI')->name('email.campaigns.report.api');
                Route::get('view/{emailCampaign}/report', 'ClientEmailController@campaignsReportView')->name('email.campaigns.report.view');
                Route::get('pdf/{emailCampaign}/report', 'ClientEmailController@campaignsReportPdf')->name('email.campaigns.report.pdf');

            });
        });
    });

    Route::get('/profile/send-otp/verification', [ 'uses' => 'DashboardController@send_otp_user_profile',   'as' => 'send_otp_user_profile' ])->middleware(['can:edit-profile']);
    Route::post('/profile', [ 'uses' => 'DashboardController@post_user_profile',   'as' => 'post_profile' ])->middleware(['can:edit-profile']);

    Route::post('/sender_id','DashboardController@sender_id_submit')->name('user.sender-id.submit');


    Route::get('/sender_id/approve/{id}','DashboardController@all_sender_ids')->name('user.sender-id.table.approve');
    Route::get('/sender_id/rejection/{id}','DashboardController@sender_id_reject')->name('user.sender-id.table.reject');

    Route::post('/update/sender_id/edit/{id}','DashboardController@sender_id_edit')->name('user.sender-id.edit');
    Route::get('/update/sender_id/destroy/{id}','DashboardController@sender_id_destroy')->name('user.sender-id.destroy');


    Route::group(['prefix'=>'admin-company-email'],function (){
        Route::get('index','ClientEmailController@index')->name('admin.company.email.index');
        Route::get('single/{id}','ClientEmailController@single_client_mail')->name('admin.company.email.single');
        Route::get('approve/{id}','ClientEmailController@approve')->name('admin.company.email.single.approve');
        Route::get('reject/{id}','ClientEmailController@reject')->name('admin.company.email.single.reject');
    });
    Route::group(['prefix'=>'support'],function (){
        Route::any('feedback','DashboardController@support')->name('feedback.support');
    });


    Route::group(['prefix'=>'dynamic'],function (){
        Route::any('user','DynamicUserController@index')->name('dynamic.users.index');

        // Legacy OTP routes - deprecated but kept for backward compatibility
        Route::any('user/create/{otp}','DynamicUserController@create')->name('dynamic.users.create');
        Route::any('user/edit/{id}/{otp}','DynamicUserController@edit')->name('dynamic.users.edit');
        Route::any('user/delete/{id}/{otp}','DynamicUserController@destroy')->name('dynamic.users.delete');
        Route::any('user/lock/{id}/{otp}','DynamicUserController@lock')->name('dynamic.users.lock');
        Route::any('user/password/send-link/{id}/{otp}','DynamicUserController@sendResetLink')->name('dynamic.users.sendResetLink');
        Route::any('user/verify_admin/{text}/{source}/{otp}','DynamicUserController@sendOTP')->name('dynamic.users.sendOTP');
        Route::any('user/verify_admin_otp','DynamicUserController@verifyOTP')->name('verify.user.otp');

        // Secure OTP routes for dynamic user management
        Route::post('user/otp/send','DynamicUserController@sendSecureOTP')->name('dynamic.users.otp.send');
        Route::post('user/otp/verify','DynamicUserController@verifySecureOTP')->name('dynamic.users.otp.verify');
        Route::post('user/session/generate','DynamicUserController@generateSession')->name('dynamic.users.session.generate');
        Route::post('user/session/cleanup','DynamicUserController@cleanupSession')->name('dynamic.users.session.cleanup');

        // Secure action routes
        Route::post('user/create/secure','DynamicUserController@createSecure')->name('dynamic.users.create.secure');
        Route::post('user/edit/secure/{id}','DynamicUserController@editSecure')->name('dynamic.users.edit.secure');
        Route::post('user/delete/secure/{id}','DynamicUserController@destroySecure')->name('dynamic.users.delete.secure');
        Route::post('user/lock/secure/{id}','DynamicUserController@lockSecure')->name('dynamic.users.lock.secure');
        Route::post('user/password/send-link/secure/{id}','DynamicUserController@sendResetLinkSecure')->name('dynamic.users.sendResetLink.secure');

        Route::any('user/show/{id}','DynamicUserController@show')->name('dynamic.users.show');
    });


    /*
    |--------------------------------------------------------------------------
    | Credit History Route
    |--------------------------------------------------------------------------
    */
    Route::get('/credit-history', [ 'uses' => 'DashboardController@get_credit_history', 'as' => 'credit_history'  ])->middleware(['can:view-report-credit-history']);

    Route::get('/download-receipt/{id}', [ 'uses' => 'DashboardController@download_receipt', 'as' => 'download_receipt' ]);


    /*
    |--------------------------------------------------------------------------
    | User Settings Route
    |--------------------------------------------------------------------------
    */
    Route::get('/settings', [ 'uses' => 'DashboardController@get_user_settings', 'as' => 'settings'  ]);

    /*
    |--------------------------------------------------------------------------
    | User Billing Info Route
    |--------------------------------------------------------------------------
    */
    Route::get('/billing', [ 'uses' => 'DashboardController@get_user_billing', 'as' => 'billing' ]);


    /*
    |--------------------------------------------------------------------------
    | Send Single SMS Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-single-sms', [ 'uses' => 'SmsController@send_single_sms', 'as' => 'send_single_sms' ])->middleware(['can:send-sms-single']);


    Route::get('/add-new-sender-id/{panel}',function ($panel){session(['my_panel_value' => $panel]);   return redirect()->route('profile');  })->name('new-sender-id');

    Route::post('/send-single-sms', [ 'uses' => 'SmsController@post_send_single_sms', 'as' => 'post_send_single_sms'  ])->middleware(['can:send-sms-single']);


    /*
    |--------------------------------------------------------------------------
    | Send Single Voice Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-single-voice', ['uses' => 'voiceController@send_single_voice', 'as' => 'send_single_voice'])->middleware(['can:send-voice-single']);

    Route::post('/send-single-voice', ['uses' => 'voiceController@post_send_single_voice', 'as' => 'post_send_single_voice'])->middleware(['can:send-voice-single']);


    /*
    |--------------------------------------------------------------------------
    | Send Single Email Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-single-email', ['uses' => 'EmailController@send_single_email', 'as' => 'send_single_email'])->middleware(['can:send-email-single']);

    Route::post('/send-single-email', ['uses' => 'EmailController@post_send_single_email', 'as' => 'post_send_single_email'])->middleware(['can:send-email-single']);


    /*
    |--------------------------------------------------------------------------
    | Send Bulk SMS Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-bulk-sms', ['uses' => 'SmsController@send_bulk_sms', 'as' => 'send_bulk_sms'])->middleware(['can:send-sms-bulk']);

    Route::post('/send-bulk-sms', ['uses' => 'SmsController@post_send_bulk_sms', 'as' => 'post_send_bulk_sms'])->middleware(['can:send-sms-bulk']);

    Route::post('/save-sms', ['uses' => 'SmsController@post_save_sms', 'as' => 'post_save_sms']);

    Route::post('/get-saved-sms', ['uses' => 'SmsController@get_saved_sms', 'as' => 'get_saved_sms']);


    /*
|--------------------------------------------------------------------------
| Send Bulk Voice Route
|--------------------------------------------------------------------------
*/
    Route::get('/send-bulk-voice', ['uses' => 'voiceController@send_bulk_voice', 'as' => 'send_bulk_voice'])->middleware(['can:send-sms-bulk']);

    Route::post('/send-bulk-voice', ['uses' => 'voiceController@post_send_bulk_voice', 'as' => 'post_send_bulk_voice'])->middleware(['can:send-sms-bulk']);
    /*
    |--------------------------------------------------------------------------
    | Send Bulk Email Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-bulk-email', ['uses' => 'EmailController@send_bulk_email', 'as' => 'send_bulk_email'])->middleware(['can:send-email-bulk']);

    Route::post('/send-bulk-email', ['uses' => 'EmailController@post_send_bulk_email', 'as' => 'post_send_bulk_sms'])->middleware(['can:send-email-bulk']);

    Route::post('/save-email', ['uses' => 'EmailController@post_save_email', 'as' => 'post_save_sms']);

    Route::post('/get-saved-email', ['uses' => 'EmailController@get_saved_email', 'as' => 'get_saved_sms']);


    /*
    |--------------------------------------------------------------------------
    | Send Personalised Bulk SMS Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-personalised-bulk-sms', ['uses' => 'SmsController@send_personalised_bulk_sms', 'as' => 'send_personalised_bulk_sms'])->middleware(['can:send-sms-bulk-perso']);

    Route::post('/send-personalised-bulk-sms', ['uses' => 'SmsController@post_send_personalised_bulk_sms', 'as' => 'post_send_personalised_bulk_sms'])->middleware(['can:send-sms-bulk-perso']);


    /*
    |--------------------------------------------------------------------------
    | Send Personalised Bulk Email Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-personalised-bulk-email', ['uses' => 'EmailController@send_personalised_bulk_email', 'as' => 'send_personalised_bulk_email'])->middleware(['can:send-email-bulk-perso']);

    Route::post('/send-personalised-bulk-email', ['uses' => 'EmailController@post_send_personalised_bulk_email', 'as' => 'post_send_personalised_bulk_email'])->middleware(['can:send-email-bulk-perso']);


    /*
    |--------------------------------------------------------------------------
    | Send Personalised Email for mailchimp integration Route
    |--------------------------------------------------------------------------
    */
    Route::get('view/audience/lists', 'PersonalizedMailController@viewAudienceList')->name('audience.list');

    Route::get('/add/subscribers/to/audience/{list}/list','PersonalizedMailController@addSubscribersNewList')->name('add.subscribers');

    Route::post('/add/subscribers/to/audience/{list}/list','PersonalizedMailController@getMailAndMergeFields')->name('add.subscribers');

    Route::get('/personalised/bulk/email/report', 'PersonalizedMailController@viewBlastReport')->name('personalised.blast.report');



    /*
    |--------------------------------------------------------------------------
    | Send Group SMS Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-group-sms', [ 'uses' => 'SmsController@send_group_sms', 'as' => 'send_group_sms' ])->middleware(['can:send-sms-group']);

    Route::post('/send-group-sms', [ 'uses' => 'SmsController@post_send_group_sms', 'as' => 'post_send_group_sms'])->middleware(['can:send-sms-group']);

    Route::get('/send-group-sms/{msisdn}/delete', [ 'uses' => 'SmsController@delete_contact_from_sms_group', 'as' => 'send_group_sms.delete_contact' ]);


    /*
    |--------------------------------------------------------------------------
    | Send Group Email Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-group-email', ['uses' => 'EmailController@send_group_email', 'as' => 'send_group_email'])->middleware(['can:send-email-group']);

    Route::post('/send-group-email', ['uses' => 'EmailController@post_send_group_email', 'as' => 'post_send_group_email'])->middleware(['can:send-email-group']);

    Route::get('/send-group-email/{msisdn}/delete', ['uses' => 'EmailController@delete_contact_from_email_group', 'as' => 'send_group_email.delete_contact']);

    /*
    |--------------------------------------------------------------------------
    | Send Personalised Group SMS Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-personalised-group-sms', [ 'uses' => 'SmsController@send_personalised_group_sms', 'as' => 'send_personalised_group_sms' ])->middleware(['can:send-sms-group-perso']);

    Route::post('/send-personalised-group-sms', ['uses' => 'SmsController@post_send_personalised_group_sms', 'as' => 'post_send_personalised_group_sms'])->middleware(['can:send-sms-group-perso']);

    Route::get('/send-group-sms/{msisdn}/delete', ['uses' => 'SmsController@delete_contact_from_sms_group', 'as' => 'send_group_sms.delete_contact']);


    /*
    |--------------------------------------------------------------------------
    | Send Personalised Group Email Route
    |--------------------------------------------------------------------------
    */
    Route::get('/send-personalised-group-email', ['uses' => 'EmailController@send_personalised_group_email', 'as' => 'send_personalised_group_email'])->middleware(['can:send-email-group-perso']);

    Route::post('/send-personalised-group-email', ['uses' => 'EmailController@post_send_personalised_group_email', 'as' => 'post_send_personalised_group_email'])->middleware(['can:send-email-group-perso']);

    Route::get('/send-group-email/{msisdn}/delete', ['uses' => 'EmailController@delete_contact_from_email_group', 'as' => 'send_group_email.delete_contact']);



    /*
   |--------------------------------------------------------------------------
   | Create Email Template Route
   |--------------------------------------------------------------------------
   */

    Route::get('new-email-templates',['uses' => 'EmailTemplateController@index', 'as' => 'new_mail_template']);

    Route::post('create-email-templates',['uses' => 'EmailTemplateController@create', 'as' => 'create_new_mail_template']);

    Route::get('view-email-templates',['uses' => 'EmailTemplateController@view', 'as' => 'view_new_mail_template']);

    Route::get('{id}/see-email-templates',['uses' => 'EmailTemplateController@see', 'as' => 'see_new_mail_template']);

    Route::get('{id}/edit-email-templates',['uses' => 'EmailTemplateController@edit', 'as' => 'edit_new_mail_template']);


    Route::post('edit-email-templates',['uses' => 'EmailTemplateController@send_edit', 'as' => 'sendedit-email-template']);

    Route::get('{id}/delete-email-templates',['uses' => 'EmailTemplateController@delete', 'as' => 'delete_new_mail_template']);


    /*
    |--------------------------------------------------------------------------
    | Address Book - Groups Route
    |--------------------------------------------------------------------------
    */
    Route::get('address-book/groups', ['uses' => 'AddressBookController@getAllGroup', 'as' => 'addressbook.groups'])->middleware(['can:manage-contacts']);

    ////// NEW GROUP
    Route::get('address-book/groups/new', ['uses' => 'AddressBookController@new_group', 'as' => 'addressbook.groups.new_group'])->middleware(['can:manage-contacts']);

    Route::post('address-book/groups/new', ['uses' => 'AddressBookController@post_group', 'as' => 'addressbook.groups.post_group'])->middleware(['can:manage-contacts']);

    ////// EDIT GROUP
    Route::get('address-book/groups/{id}/edit', ['uses' => 'AddressBookController@edit_group', 'as' => 'addressbook.groups.edit_group'])->middleware(['can:manage-contacts']);

    Route::put('address-book/groups/{id}/edit', ['uses' => 'AddressBookController@update_group', 'as' => 'addressbook.groups.update_group'])->middleware(['can:manage-contacts']);

    ///// DELETE GROUP
    Route::get('address-book/groups/{id}/delete', ['uses' => 'AddressBookController@delete_group', 'as' => 'addressbook.groups.delete_group'])->middleware(['can:manage-contacts']);


    /*
    |--------------------------------------------------------------------------
    | Address Book - Contacts Route
    |--------------------------------------------------------------------------
    */
    Route::match(['get','post'], 'address-book/{group_id}/contacts', ['uses' => 'AddressBookController@getAllContact', 'as' => 'addressbook.contacts'])->middleware(['can:manage-contacts']);

    ////// BULK UPLOAD CONTACT
    Route::get('address-book/{group_id}/contacts/bulk', ['uses' => 'AddressBookController@bulk_upload', 'as' => 'addressbook.contacts.bulk_upload']);
    Route::post('address-book/{group_id}/contacts/bulk', ['uses' => 'AddressBookController@post_bulk_upload', 'as' => 'addressbook.contacts.post_bulk_upload']);

    ////// NEW CONTACT
    Route::get('address-book/{group_id}/contacts/new', ['uses' => 'AddressBookController@new_contact', 'as' => 'addressbook.contacts.new_contact']);

    Route::post('address-book/{group_id}/contacts/new', ['uses' => 'AddressBookController@post_contact', 'as' => 'addressbook.contacts.post_contact']);

    ////// EDIT CONTACT
    Route::get('address-book/{group_id}/contacts/{id}/edit', ['uses' => 'AddressBookController@edit_contact', 'as' => 'addressbook.contacts.edit_contact']);

    Route::put('address-book/{group_id}/contacts/{id}/edit', ['uses' => 'AddressBookController@update_contact', 'as' => 'addressbook.contacts.update_contact']);

    ///// DELETE CONTACT
    Route::get('address-book/{group_id}/contacts/{id}/delete', ['uses' => 'AddressBookController@delete_contact', 'as' => 'addressbook.contacts.delete_contact']);



    /*
    |--------------------------------------------------------------------------
    | Report - SMS Log 24h - Route
    |--------------------------------------------------------------------------
    */
    Route::get('/report/sms-log-24h', ['uses' => 'ReportController@get_sms_log_new_24h', 'as' => 'report_get_sms_log_new_24h'])->middleware(['can:view-report-24h-sms']);
    Route::get('/report/sms-log-24h/wht-msg', ['uses' => 'ReportController@get_sms_log_new_24h_wht_msg', 'as' => 'report_get_sms_log_new_24h_wht_msg'])->middleware(['can:view-report-24h-wht-msg-sms']);

    /*
    |--------------------------------------------------------------------------
    | Report - Stanbic OTP
    |--------------------------------------------------------------------------
    */
    Route::get('/report/stanbic/otp', ['uses' => 'ReportController@get_stanbic_otp_report', 'as' => 'report_otp'])->middleware(['can:view-report-otp']);

    /*
    |--------------------------------------------------------------------------
    | Report - Stanbic e-banking
    |--------------------------------------------------------------------------
    */
    Route::get('/report/stanbic/ebanking', ['uses' => 'ReportController@get_stanbic_ebanking_report', 'as' => 'report_ebanking']);

    /*
    |--------------------------------------------------------------------------
    | Report - Stanbic Transactional
    |--------------------------------------------------------------------------
    */
    Route::get('/report/stanbic/transactional', ['uses' => 'ReportController@get_stanbic_transactional_report', 'as' => 'report_transactional'])->middleware(['can:view-report-transactional']);

    /*
    |--------------------------------------------------------------------------
    | Report - Stanbic BulkSMS
    |--------------------------------------------------------------------------
    */
    Route::get('/report/stanbic/bulksms', ['uses' => 'ReportController@get_stanbic_bulksms_report', 'as' => 'report_bulksms'])->middleware(['can:view-report-bulksms']);

    /*
    |--------------------------------------------------------------------------
    | Report - Undelivered SMS Log 24h - Route
    |--------------------------------------------------------------------------
    */
    Route::get('/report/report_get_sms_undelivered_log_24h', ['uses' => 'ReportController@get_sms_undelivered_log_24h', 'as' => 'report_get_sms_undelivered_log_24h']);


    /*
    |--------------------------------------------------------------------------
    | Report - Delivered SMS Log 24h - Route
    |--------------------------------------------------------------------------
    */
    Route::get('/report/report_get_sms_delivered_log_24h', ['uses' => 'ReportController@get_sms_delivered_log_24h', 'as' => 'report_get_sms_delivered_log_24h']);

    /*
    |--------------------------------------------------------------------------
    | Report - Expired SMS Log 24h - Route
    |--------------------------------------------------------------------------
    */
    Route::get('/report/report_get_sms_expired_log_24h', ['uses' => 'ReportController@get_sms_expired_log_24h', 'as' => 'report_get_sms_expired_log_24h']);


    /*
    |--------------------------------------------------------------------------
    | Report - Email Log 24h - Route
    |--------------------------------------------------------------------------
    */
    Route::get('/report/email-log-24h', ['uses' => 'ReportController@get_email_log_24h', 'as' => 'report_get_email_log_24h'])->middleware(['can:view-report-24h-email']);


    /*
    |--------------------------------------------------------------------------
    | Report - Email Log 24h - Route
    |--------------------------------------------------------------------------
    */
    Route::get('/report/voice-log-24h', ['uses' => 'ReportController@get_voice_log_24h', 'as' => 'report_get_voice_log_24h'])->middleware(['can:view-report-24h-email']);

    /*
    |--------------------------------------------------------------------------
    | Report - Specify Period - Route
    |--------------------------------------------------------------------------
    */
    Route::get('/report/specify-period', ['uses' => 'ReportController@get_specify_period', 'as' => 'report_get_specify_period'])->middleware(['can:view-report-specific-sms']);
    Route::post('/report/specify-period/post', ['uses' => 'ReportController@query_specify_period', 'as' => 'specific_report.query'])->middleware(['can:view-report-specific-sms']);

    /*
    |--------------------------------------------------------------------------
    | Report - Specify Period - Route
    |--------------------------------------------------------------------------
    */
    Route::get('/report/specify-period-email', ['uses' => 'ReportController@get_specify_period_email', 'as' => 'report_get_specify_period_email'])->middleware(['can:view-report-specific-email']);


    /*
    |--------------------------------------------------------------------------
    | Report - 2ways report
    |--------------------------------------------------------------------------
    */
    Route::get('/report/2way', ['uses' => 'ReportController@_2way', 'as' => 'report_get_2way'])->middleware(['can:view-report-2way-msg']);

    /*
    |--------------------------------------------------------------------------
    | Reporting
    |--------------------------------------------------------------------------
    */
    Route::match(['get','post'], '/report/reporting', ['uses' => 'ReportController@reporting', 'as' => 'report_get_reporting'])->middleware(['can:view-report-reporting']);

    Route::get('/report/new-report', ['uses' => 'ReportController@new_report', 'as' => 'report_new_report']);

    Route::post('/report/new-report', ['uses' => 'ReportController@post_report', 'as' => 'report_post_report']);

    Route::get('/report/reporting/{id}/delete', ['uses' => 'ReportController@delete_report', 'as' => 'report_delete_report']);

    Route::get('/report/reporting/delete-selection', ['uses' => 'ReportController@delete_selection', 'as' => 'report_delete_selection_report']);

    Route::get('/report/reporting/{id}/download', ['uses' => 'ReportController@download_report', 'as' => 'report_download_report']);

    Route::get('/report/reporting/{id}/cancel', ['uses' => 'ReportController@cancel_report', 'as' => 'report_cancel_report']);

    /*
    |--------------------------------------------------------------------------
    | Campaigns
    |--------------------------------------------------------------------------
    */
    Route::get('/campaigns/dashboard', ['uses' => 'CampaignController@view_campaigns', 'as' => 'campaigns.dashboard'])->middleware(['can:view-campaign-bulk-sms']);

    //email
    Route::get('/campaigns/email-dashboard', ['uses' => 'CampaignController@view_email_campaigns', 'as' => 'campaigns.email.dashboard'])->middleware(['can:view-campaign-bulk-email']);

    Route::get('/campaigns/api', [  'uses' => 'CampaignController@view_api_campaigns',  'as' => 'campaigns.api' ])->middleware(['api', 'can:view-campaign-api-sms']);

    //email
    Route::get('/campaigns/email-api', ['uses' => 'CampaignController@view_email_api_campaigns', 'as' => 'campaigns.email.api'])->middleware(['api','can:view-campaign-api-email']);

    Route::get('/campaigns/{id}/cancel', ['uses' => 'CampaignController@cancel_campaigns', 'as' => 'campaigns.cancel_campaigns']);

    //email
    Route::get('/campaigns/{id}/cancel-email', ['uses' => 'CampaignController@cancel_email_campaigns', 'as' => 'campaigns.cancel_email_campaigns']);

    Route::get('/campaigns/{id}/send-now', ['uses' => 'CampaignController@send_campaign_now', 'as' => 'campaigns.send_campaign_now']);

    //email
    Route::get('/campaigns/{id}/send-email-now', ['uses' => 'CampaignController@send_email_campaign_now', 'as' => 'campaigns.send_email_campaign_now']);

    Route::get('/campaigns/{id}/edit', ['uses' => 'CampaignController@edit_campaign', 'as' => 'campaigns.edit_campaign']);

    //email
    Route::get('/campaigns/{id}/edit-email', ['uses' => 'CampaignController@edit_email_campaign', 'as' => 'campaigns.edit_email_campaign']);

    Route::post('/campaigns/{id}/edit', ['uses' => 'CampaignController@update_campaign', 'as' => 'campaigns.update_campaign']);

    Route::get('/campaigns/{id}/delete', ['uses' => 'CampaignController@delete_campaigns', 'as' => 'campaigns.delete_campaigns']);

    //email
    Route::get('/campaigns/{id}/delete-email', ['uses' => 'CampaignController@delete_email_campaigns', 'as' => 'campaigns.delete_email_campaigns']);

    /*
    |--------------------------------------------------------------------------
    | Report Comparison
    |--------------------------------------------------------------------------
    */
    Route::get('/report/comparison', ['uses' => 'ReportController@comparison', 'as' => 'report_get_comparison'])->middleware(['can:view-report-comparison']);

    Route::post('/report/comparison', ['uses' => 'ReportController@post_comparison', 'as' => 'report_post_comparison'])->middleware(['can:view-report-comparison']);

    /*
    |--------------------------------------------------------------------------
    | Invoice Report
    |--------------------------------------------------------------------------
    */
    Route::match(['get', 'post'],'/report/invoice', ['uses' => 'ReportController@invoice', 'as' => 'report_get_invoice'])->middleware(['can:view-report-invoice']);


    /*
    |--------------------------------------------------------------------------
    | Campaign Analytics Route
    |--------------------------------------------------------------------------
    */
    Route::get('/campaigns/{id}/analytics', ['uses' => 'CampaignController@get_campaign_analitics', 'as' => 'canalytics']);

    //email
    Route::get('/campaigns/{id}/analytics-email', ['uses' => 'CampaignController@get_email_campaign_analitics', 'as' => 'canalytics.email']);


    Route::get('/campaigns/{date}/analytics_api', ['uses' => 'CampaignController@get_campaign_analitics_api', 'as' => 'canalytics_api'])->middleware('api');

    //email
    Route::get('/campaigns/{date}/analytics_email_api', ['uses' => 'CampaignController@get_campaign_analitics_email_api', 'as' => 'canalytics_email_api'])->middleware('api');


    /*
    |--------------------------------------------------------------------------
    | API Routes
    |--------------------------------------------------------------------------
    */
    Route::group(['prefix' => 'api', 'middleware' => 'api'], function () {

        //sms
        Route::post('get-traffic-performance-data', ['uses' => 'DashboardController@get_traffic_performance_data']);

        //email
        Route::post('get-email-traffic-performance', ['uses' => 'DashboardController@get_email_traffic_performance']);

        //sms
        Route::any('get-user-log-summary', ['uses' => 'DashboardController@get_user_log_summary']);

        //email
        Route::post('get-email-log-summary', ['uses' => 'DashboardController@get_email_log_summary']);

        Route::post('get-performance-for-comparison', ['uses' => 'DashboardController@get_performance_for_comparison']);

        Route::get('maker-balance/{name}','DashboardController@maker_balance')->name('onua.balance');
    });

});
