<?php

/*
|--------------------------------------------------------------------------
| Reseller Routes
|--------------------------------------------------------------------------
*/

use Illuminate\Support\Facades\Route;

Route::get('reseller/logout', ['uses' => 'Reseller\DashboardController@logout', 'as' => 'reseller.logout']);


// reseller portal
Route::group(['prefix' => 'reseller/ads','middleware' => ['auth.reseller','company','changePass']], function () {

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

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

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

    });

});

Route::group(['prefix' => 'reseller', 'namespace' => 'Reseller'], function () {

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

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

    Route::get('/new-purchaseReseller', ['uses' => 'DashboardController@newPurchaseReseller', 'as' => 'newPurchaseReseller'])->middleware(['company']);

    Route::match(['get','post'],'BuyCreditReseller','DashboardController@buy_now_reseller')->name('buynowReseller');

    Route::group(['middleware' => ['guest']], function () {

        /*
        |--------------------------------------------------------------------------
        | Route for Reseller Login
        |--------------------------------------------------------------------------
        */

        Route::get('/login', ['uses' => 'LoginController@getLogin', 'as' => 'reseller.login']);

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

        /*
        |--------------------------------------------------------------------------
        | Route for Reseller Sign up
        |--------------------------------------------------------------------------
        */
        Route::get('/register', function () {
            return view('reseller.layouts.register');
        })->name('reseller.register');

        Route::post('/register', [
            'uses' => 'LoginController@postRegistration',
            'as' => 'reseller.post_register'
        ]);
    });

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





        /*
        |--------------------------------------------------------------------------
        | Reseller Dashboard Route
        |--------------------------------------------------------------------------
        */
        Route::get('/dashboard', ['uses' => 'DashboardController@index', 'as' => 'reseller.app']);

        Route::get('/financial-dashboard', ['uses' => 'DashboardController@financial_index', 'as' => 'reseller.financial.dashboard']);


        Route::group(['prefix'=>'email-price-setup'],function (){
            Route::any('pricing','ResellerEmailPricingController@email_price_index')->name('reseller.email.price.setup.index');
            Route::any('pricing/create','ResellerEmailPricingController@email_price_create')->name('reseller.email.price.setup.create');
            Route::any('pricing/{package}/edit','ResellerEmailPricingController@email_price_edit')->name('reseller.email.price.setup.edit');
            Route::any('pricing/{package}/delete','ResellerEmailPricingController@email_price_destroy')->name('reseller.email.price.setup.delete');
        });


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


        /** For Social Media pricing */
        Route::group(['prefix'=>'social-price-setup'],function (){
            Route::any('pricing','ResellerSocialPricingController@social_price_index')->name('reseller.social.price.setup.index');
            Route::any('pricing/create','ResellerSocialPricingController@social_price_create')->name('reseller.social.price.setup.create');
            Route::any('pricing/{package}/edit','ResellerSocialPricingController@social_price_edit')->name('reseller.social.price.setup.edit');
            Route::any('pricing/{package}/delete','ResellerSocialPricingController@social_price_destroy')->name('reseller.social.price.setup.delete');
        });

        /** For Social Media pricing   reseller doing his own subscription **/
        Route::group(['prefix'=>'social-subscription'],function () {
            Route::get('/', 'ResellerSocialPricingController@subscription_index')->name('reseller.social.subscription.index');
            Route::any('chose/{package}/package', 'ResellerSocialPricingController@subscription_signup')->name('reseller.social.subscription.signup');
            Route::get('payments', 'ResellerSocialPricingController@payment_history')->name('reseller.social.subscription.payments');
        });





        /** For USSD pricing */
        Route::group(['prefix'=>'ussd-price-setup'],function (){
            Route::any('pricing','ResellerUssdPricingController@ussd_price_index')->name('reseller.ussd.price.setup.index');
            Route::any('pricing/create','ResellerUssdPricingController@ussd_price_create')->name('reseller.ussd.price.setup.create');
            Route::any('pricing/{package}/edit','ResellerUssdPricingController@ussd_price_edit')->name('reseller.ussd.price.setup.edit');
            Route::any('pricing/{package}/delete','ResellerUssdPricingController@ussd_price_destroy')->name('reseller.ussd.price.setup.delete');
        });

        /** For USSD pricing */
        Route::group(['prefix'=>'ussd-subscription'],function () {
            Route::get('request', 'ResellerUssdPricingController@subscription_request')->name('reseller.ussd.subscription.request');
            Route::get('request/assign/{user}', 'ResellerUssdPricingController@subscription_request_assign')->name('reseller.ussd.subscription.request.assign');
            Route::get('request/post/{service}/{package}', 'ResellerUssdPricingController@subscription_request_post')->name('reseller.ussd.subscription.request.post');
            Route::get('/', 'ResellerUssdPricingController@subscription_index')->name('reseller.ussd.subscription.index');
            Route::any('chose/{package}/package', 'ResellerUssdPricingController@subscription_signup')->name('reseller.ussd.subscription.signup');
            Route::get('payments', 'ResellerUssdPricingController@payment_history')->name('reseller.ussd.subscription.payments');
        });



        Route::get('/users', ['uses' => 'UserController@index', 'as' => 'reseller.users']);

        ////// NEW USER
        Route::get('/users/new', ['uses' => 'UserController@new_user', 'as' => 'reseller.users.new_user']);

        Route::post('/users/new', ['uses' => 'UserController@post_new_user', 'as' => 'reseller.users.post_new_user']);

        ////// EDIT USER
        Route::get('/users/{id}/edit', ['uses' => 'UserController@edit_user', 'as' => 'reseller.users.edit_user']);

        Route::post('/users/{id}/edit', ['uses' => 'UserController@edit_user', 'as' => 'reseller.users.update_user']);

        ///// DELETE USER
        Route::get('/users/{id}/delete', ['uses' => 'UserController@delete_user', 'as' => 'reseller.users.delete_user']);

        ///// DELETE USER
        Route::get('/users/{id}/lock', ['uses' => 'UserController@lock_user', 'as' => 'reseller.users.lock_user']);

        ///// USER PAYMENT
        Route::get('/users/{id}/payments', ['uses' => 'UserController@user_payments', 'as' => 'reseller.users.payments']);

        Route::get('/users/{user}/payments/email', ['uses' => 'UserController@user_email_payment', 'as' => 'reseller.users.payments.email']);
        Route::get('/users/{user}/payments/email/signup/{package}', ['uses' => 'UserController@user_email_signup', 'as' => 'reseller.users.payments.email.signup']);


        Route::get('/users/{user}/payments/social', ['uses' => 'UserController@user_social_payment', 'as' => 'reseller.users.payments.social']);
        Route::get('/users/{user}/payments/social/signup/{package}', ['uses' => 'UserController@user_social_signup', 'as' => 'reseller.users.payments.social.signup']);

        ///// USER NETWORKS
        Route::get('/users/{user_id}/networks', ['uses' => 'UserController@user_networks', 'as' => 'reseller.users.networks']);

        Route::get('/users/{user_id}/networks/{id}/edit', ['uses' => 'UserController@edit_user_network', 'as' => 'reseller.users.edit_user_network']);

        Route::put('/users/{user_id}/networks/{id}/edit', ['uses' => 'UserController@update_user_network', 'as' => 'reseller.users.update_user_network']);

        /// MAKE NEW PAYMENT FOR USER
        Route::get('/users/{id}/payments/new', ['uses' => 'UserController@new_user_payment', 'as' => 'reseller.users.new_user_payment']);

        Route::post('/users/{id}/payments/new', ['uses' => 'UserController@post_user_payment', 'as' => 'reseller.users.post_user_payment']);

        Route::post('/users/payments/{id}/check_reseller_balance', ['uses' => 'UserController@check_reseller_balance', 'as' => 'reseller.users.check_reseller_balance_payment']);

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

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

        Route::get('/mark_payment_as_paid/{id}', [   'uses' => 'UserController@mark_payment_as_paid', 'as' => 'reseller.mark_payment_as_paid' ]);

        /*
        |--------------------------------------------------------------------------
        | Reseller - Credit History Route
        |--------------------------------------------------------------------------
        */
        Route::get('/credit-history', ['uses' => 'DashboardController@view_clients_for_credit_history', 'as' => 'reseller.clients_credit_history']);
        Route::get('/credit-history/{client_id}', ['uses' => 'DashboardController@get_credit_history', 'as' => 'reseller.credit_history']);

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

        /*
        |--------------------------------------------------------------------------
        | Reseller - Invoice Report
        |--------------------------------------------------------------------------
        */
        Route::get('/report/invoice', ['uses' => 'DashboardController@view_clients_for_invoice', 'as' => 'reseller.clients_report_get_invoice']);
        Route::match(['get', 'post'],'/report/invoice/{id}', ['uses' => 'ReportController@invoice', 'as' => 'reseller.report_get_invoice']);
        Route::get('/report/reporting/{id}/download', ['uses' => 'ReportController@download_report', 'as' => 'reseller.report_download_report']);
        Route::get('/report/reporting/{id}/delete', ['uses' => 'ReportController@delete_report', 'as' => 'reseller.report_delete_report']);

        Route::match(['get','post'], '/report/reporting', ['uses' => 'ReportController@reseller_reporting', 'as' => 'reseller.report_get_reporting']);
        Route::get('/report/new-report', ['uses' => 'ReportController@reseller_new_report', 'as' => 'reseller.report_new_report']);
        Route::post('/report/new-report', ['uses' => 'ReportController@post_report', 'as' => 'reseller.report_post_report']);

        /*
        |--------------------------------------------------------------------------
        | Reseller - Report daily Route
        |--------------------------------------------------------------------------
        */
        Route::get('/reports/daily', ['uses' => 'ReportController@get_reports_daily', 'as' => 'reseller.reports.daily']);
        Route::get('reseller_client_sender_campaign/{user}', ['uses' => 'ReportController@reseller_client_sender_campaign', 'as' => 'reseller.reports.user.camp.sender']);

        /*
        |--------------------------------------------------------------------------
        | Reseller - Report daily Route
        |--------------------------------------------------------------------------
        */
        Route::get('/reports/dept-status', ['uses' => 'ReportController@get_report_dept_status', 'as' => 'reseller.reports.dept_status']);

        /*
        |--------------------------------------------------------------------------
        | Reseller - Report specific-date Route
        |--------------------------------------------------------------------------
        */
        Route::match(['get', 'post'], '/reports/specific', ['uses' => 'ReportController@get_reports_specific', 'as' => 'reseller.reports.specific']);

        Route::get('/reports/specific/{user}', ['uses' => 'ReportController@get_reports_specific_user', 'as' => 'reseller.reports.specific.usr']);

        Route::any('api/get-reseller-users', ['uses' => 'ReportController@get_reseller_users', 'as' => 'reseller.get_reseller_users']);

        /*
        |--------------------------------------------------------------------------
        | Reseller - Report daily per user Route
        |--------------------------------------------------------------------------
        */
        Route::get('/reports/daily/{username}', ['uses' => 'ReportController@get_reports_daily_for_user', 'as' => 'reseller.reports.daily.user']);

        Route::prefix('report/email')->group(function (){
            Route::get('index', ['uses' => 'ReportController@client_email_report', 'as' => 'reseller.reports.client.email']);
            Route::get('user/{user}', ['uses' => 'ReportController@user_campaign', 'as' => 'reseller.reports.client.campaign']);
            Route::get('campaign/{user}/view', ['uses' => 'ReportController@campaignsReportView', 'as' => 'chimp.client.campaign.view']);
        });

        Route::get('reports/social', ['uses' => 'ReportController@client_social_report', 'as' => 'reseller.reports.client.social']);
        Route::get('reports/ussd', ['uses' => 'ReportController@client_ussd_report', 'as' => 'reseller.reports.client.ussd']);

        /*
        |--------------------------------------------------------------------------
        | Reseller - Report per CLIENT
        |--------------------------------------------------------------------------
        */
        Route::get('/reports/sms-clients', ['uses' => 'ReportController@get_sms_report', 'as' => 'reseller.reports.sms.clients']);

        Route::get('/reports/sms-clients/{client}', ['uses' => 'ReportController@get_sms_client_report', 'as' => 'reseller.reports.sms.client']);


        Route::get('/settings/get-country-networks/{id}', ['uses' => 'SettingsController@get_networks_by_country']);

        Route::middleware(['can:manage-groups'])->resource('groups', 'GroupController');

        Route::middleware(['can:manage-stanbic-users'])->prefix('stanbic-users')->group(function () {
            Route::get('{stanbic_user}/reset', 'StanbicUserController@reset')->name('stanbic-users.reset');
            Route::put('{stanbic_user}/reset', 'StanbicUserController@updatePassword')->name('stanbic-users.updatePassword');
            Route::get('{stanbic_user}/lockUnlock', 'StanbicUserController@lockUnlockUser')->name('stanbic-users.lockUnlockUser');
        });
        Route::middleware(['can:manage-stanbic-users'])->resource('stanbic-users', 'StanbicUserController');


        Route::match(['get', 'post'], '/settings/operational-setting', ['uses' => 'SettingsController@operational_setting', 'as' => 'reseller.setting.operational']);

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

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

        // reseller client registration
        Route::get('/reports/clients/registrations', ['uses' => 'ReportController@client_registrations', 'as' => 'reseller.reports.client_registrations']);

        // reseller top clients
        Route::match(['get', 'post'], '/reports/clients/top-clients', ['uses' => 'ReportController@top_clients', 'as' => 'reseller.reports.top_clients']);

        // RESELLER CAMPAIGNS
        Route::get('/campaigns/dashboard', ['uses' => 'CampaignController@view_clients', 'as' => 'reseller.campaigns.dashboard']);

        Route::get('/campaigns/daily/dashboard', ['uses' => 'CampaignController@view_clients_daily', 'as' => 'reseller.daily.campaigns.dashboard']);

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

        Route::get('/campaigns/api/{id}/campaigns', ['uses' => 'CampaignController@view_api_campaigns', 'as' => 'reseller.view.campaigns.api'])->middleware('api');

        Route::get('/campaigns/api/daily/{id}/campaigns', ['uses' => 'CampaignController@view_api_campaigns_daily', 'as' => 'reseller.view.campaigns.api.daily'])->middleware('api');

        Route::get('/campaigns/daily/{id}/campaigns', ['uses' => 'CampaignController@view_daily_campaigns', 'as' => 'reseller.daily.view.campaigns']);

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

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

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

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

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

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

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



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

        /*
         * RESELLER FINANCIAL REPORTS
         */
        Route::group(['prefix' => '/reports/financial'], function () {
            /*
            |--------------------------------------------------------------------------
            | OPERATIONAL
            |--------------------------------------------------------------------------
            */
            Route::get('/operational-costs', ['uses' => 'ReportController@get_operational_costs', 'as' => 'reseller.reports.operational.costs']);
            Route::get('/operational-cost/{date}', ['uses' => 'ReportController@get_operational_cost', 'as' => 'reseller.reports.operational.cost']);
            /*
            |--------------------------------------------------------------------------
            | SALES - BY PERIOD
            |--------------------------------------------------------------------------
            */
            Route::get('/sales/{from?}/{to?}', ['uses' => 'ReportController@get_sales', 'as' => 'reseller.reports.sales']);
            /*
            |--------------------------------------------------------------------------
            | SALES BY DATE
            |--------------------------------------------------------------------------
            */
            Route::get('/sale/{date}', ['uses' => 'ReportController@get_sale', 'as' => 'reseller.reports.sale']);
            /*
            |--------------------------------------------------------------------------
            | PROFITABILITY
            |--------------------------------------------------------------------------
            */
            Route::get('/profitability/{from?}/{to?}', ['uses' => 'ReportController@get_profitability', 'as' => 'reseller.reports.profitability']);
            /*
            |--------------------------------------------------------------------------
            | COMPARE
            |--------------------------------------------------------------------------
            */
            Route::match(['get', 'post'], '/compare-sales', ['uses' => 'ReportController@compare_sales', 'as' => 'reseller.reports.sales.compare']);
        });

        // API
        Route::group(['prefix' => '/api', 'middleware' => 'api'], function () {
            Route::get('/get-client-senders/{id}', ['uses' => 'ApiController@get_client_senders', 'as' => 'reseller.api.client.senders']);
        });
    });

    Route::group(['prefix' => 'api', 'middleware' => 'api'], function () {

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

        Route::post('get-financial-data', ['uses' => 'DashboardController@get_financial_data']);

        Route::post('get-reseller-data', ['uses' => 'DashboardController@get_reseller_data']);

        Route::post('get-reseller-data-user', ['uses' => 'DashboardController@get_reseller_data_user']);

        Route::post('get-reseller-users', ['uses' => 'DashboardController@get_reseller_users']);

        Route::get('report/sms-clients', ['uses' => 'ReportController@get_sms_report_api']);

        Route::get('report/sms-clients2', ['uses' => 'ReportController@get_sms_report_api_2']);

        Route::get('report/sms-client/{user}', ['uses' => 'ReportController@get_sms_client_report_api']);

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


});
