<?php


use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| ESME Routes
|--------------------------------------------------------------------------
*/
Route::group(['prefix' => 'esme', 'namespace' => 'Esme'], function () {

    Route::get('/', [
        'uses' => 'DashboardController@goto_main_route',
        'as' => 'esme.main_route'
    ]);

    Route::get('/home', [
        'uses' => 'DashboardController@goto_main_route',
        'as' => 'esme.home'
    ]);

    /*
    |--------------------------------------------------------------------------
    | Unprotected ESME route for Guess only
    |--------------------------------------------------------------------------
    */
    Route::group(['middleware' => ['guest.esme']], function () {

        /*
        |--------------------------------------------------------------------------
        | Route for ESME Login
        |--------------------------------------------------------------------------
        */
        Route::get('/login', function () {
            return view('esme.layouts.login');
        })->name('esme.login');

        Route::post('/login', [
            'uses' => 'LoginController@postLogin',
            'as' => 'esme.post_login'
        ]);
    });

    /*
    |--------------------------------------------------------------------------
    | ESME Protected Route Group
    |--------------------------------------------------------------------------
    */
    Route::group(['middleware' => ['auth.esme']], function () {
        /*
        |--------------------------------------------------------------------------
        | ESME Dashboard Route
        |--------------------------------------------------------------------------
        */
        Route::get('/dashboard', [
            'uses' => 'DashboardController@index',
            'as' => 'esme.app'
        ]);

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

        /*
        |--------------------------------------------------------------------------
        | ESME Report - SMS Log 24h - Route
        |--------------------------------------------------------------------------
        */
        Route::get('/report/sms-log-24h', [
            'uses' => 'ReportController@get_sms_log_new_24h',
            'as' => 'esme.report_get_sms_log_new_24h'
        ]);


        /*
        |--------------------------------------------------------------------------
        | ESME Report - Specify Period - Route
        |--------------------------------------------------------------------------
        */
        Route::get('/report/specify-period', [
            'uses' => 'ReportController@get_specify_period',
            'as' => 'esme.report_get_specify_period'
        ]);

        /*
        |--------------------------------------------------------------------------
        | ESME Report - Comparison Report Route
        |--------------------------------------------------------------------------
        */
        Route::get('/reports/comparison', [
            'uses' => 'ReportController@comparison',
            'as' => 'esme.reports.comparison'
        ]);

        Route::post('/reports/comparison', [
            'uses' => 'ReportController@post_comparison',
            'as' => 'esme.reports.post_comparison'
        ]);

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

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

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

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

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

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



        /*
         * ESME FINANCIAL REPORTS
         */
        Route::group(['prefix' => '/reports/financial'], function () {
            /*
            |--------------------------------------------------------------------------
            | OPERATIONAL
            |--------------------------------------------------------------------------
            */
            Route::get('/operational-costs', [
                'uses' => 'ReportController@get_operational_costs',
                'as' => 'esme.reports.operational.costs'
            ]);
            Route::get('/operational-cost/{date}', [
                'uses' => 'ReportController@get_operational_cost',
                'as' => 'esme.reports.operational.cost'
            ]);

        });



        /*
        |--------------------------------------------------------------------------
        | ESME Campaigns
        |--------------------------------------------------------------------------
        */
        Route::get('/campaigns/dashboard', [
            'uses' => 'CampaignController@view_campaigns',
            'as' => 'esme.campaigns.dashboard'
        ]);

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

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

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

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

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

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

        /*
        |--------------------------------------------------------------------------
        | ESME - Campaign Analytics Route
        |--------------------------------------------------------------------------
        */
        Route::get('/campaigns/{id}/analytics', [
            'uses' => 'CampaignController@get_campaign_analitics',
            'as' => 'esme.canalytics'
        ]);
        Route::get('/campaigns/{date}/analytics_api', [
            'uses' => 'CampaignController@get_campaign_analitics_api',
            'as' => 'esme.canalytics_api'
        ])->middleware('api');

        /*
        |--------------------------------------------------------------------------
        | ESME User Profile Route
        |--------------------------------------------------------------------------
        */
        Route::get('/profile', [
            'uses' => 'DashboardController@get_user_profile',
            'as' => 'esme.profile'
        ]);



        Route::post('/profile', [
            'uses' => 'DashboardController@post_user_profile',
            'as' => 'esme.post_profile'
        ]);


        /*
        |--------------------------------------------------------------------------
        | ESME Logout Route
        |--------------------------------------------------------------------------
        */
        Route::get('/logout', [
            'uses' => 'DashboardController@logout',
            'as' => 'esme.logout'
        ]);
    });

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

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

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

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

});
