<?php

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

use Illuminate\Support\Facades\Route;

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']);

    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']], 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'
        ]);


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



        /*
        |--------------------------------------------------------------------------
        | Reseller - Users Route
        |--------------------------------------------------------------------------
        */
        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::put('/users/{id}/edit', [
            'uses' => 'UserController@update_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'
        ]);

        ///// 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']);

        /*
        |--------------------------------------------------------------------------
        | 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']);

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

        /*
        |--------------------------------------------------------------------------
        | 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']);

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

        /*
        |--------------------------------------------------------------------------
        | 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-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'
        ]);
    });


});