<?php

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Admin\PaymentProcessController;


Route::redirect('/', '/login');

Route::get('/home', function () {
    if (session('status')) {
        return redirect()->route('admin.home')->with('status', session('status'));
    }
    return redirect()->route('admin.home');
});

Auth::routes(['register' => false]);

Route::get('payment/callback/api', 'HomeController@paymentCallbackAPI')->name('payment.payment_callback_api');

Route::get('payment-success', 'HomeController@paymentSuccess');
Route::get('payment-failed', 'HomeController@paymentFailed');

Route::get('auction-payment-callback', 'HomeController@auctionPaymentCallbackAPI')->name('payment.auction_payment_callback_api');

Route::get('select-payment-option/{user_id}/{product_sku}', 'HomeController@selectPaymentOption')->name('admin.payment.select_payment_option')->middleware('signed');
Route::get('select-payment-option-for-sell-product/{user_id}/{shipping_id}/{total_amount}', 'HomeController@selectPaymentOptionForSellProduct')->name('admin.payment.select_payment_option_for_sell_product');

Route::post('select-payment-option-submit', 'HomeController@selectPaymentOptionSubmit')->name('payment.select_payment_option_submit');
Route::get('payment/cash-payment-success', 'HomeController@cashPaymentSuccess')->name('payment.cash_payment_success');

Route::group(['prefix' => 'admin', 'as' => 'admin.', 'namespace' => 'Admin', 'middleware' => ['auth']], function () {
    Route::get('/', 'HomeController@index')->name('home');
    // Permissions
    Route::delete('permissions/destroy', 'PermissionsController@massDestroy')->name('permissions.massDestroy');
    Route::resource('permissions', 'PermissionsController');

    // Roles
    Route::delete('roles/destroy', 'RolesController@massDestroy')->name('roles.massDestroy');
    Route::post('roles/parse-csv-import', 'RolesController@parseCsvImport')->name('roles.parseCsvImport');
    Route::post('roles/process-csv-import', 'RolesController@processCsvImport')->name('roles.processCsvImport');
    Route::resource('roles', 'RolesController');

    // Users
    Route::resource('users', 'UsersController');
    Route::delete('users/destroy', 'UsersController@massDestroy')->name('users.massDestroy');
    Route::post('users/parse-csv-import', 'UsersController@parseCsvImport')->name('users.parseCsvImport');
    Route::post('users/process-csv-import', 'UsersController@processCsvImport')->name('users.processCsvImport');
    Route::post('kyc-status-update', 'UsersController@KYCStatusUpdate')->name('users.kyc_status_update');
    Route::get('users/{id}', 'UsersController@show')->name('users.user_show')->middleware('signed');
    Route::post('seller-status-update', 'UsersController@sellerStatusUpdate')->name('users.seller_status_update');
    Route::get('buyer', 'UsersController@getBuyerData')->name('users.buyer');
    Route::post('user-status-update', 'UsersController@userStatusUpdate')->name('users.status_update');
    Route::get('seller', 'UsersController@getSellerData')->name('users.seller');

    // Smtp Configuration
    Route::get('/get-smtp', 'EnvsettingController@index')->name('EnvSetting.SMTP');
    Route::post('/get-smtp', 'EnvsettingController@storeSmtp')->name('EnvSetting.saveSMTP');

    // One Signal Push Notification
    Route::get('get-one-signal-push-notification', 'OneSignalPushNotificationController@edit')->name('one_signal_push_notification.edit');
    Route::post('update-one-signal-push-notification', 'OneSignalPushNotificationController@update')->name('one_signal_push_notification.update');

    // Twilio SMS Settings
    Route::get('/get-twilio-sms', 'TwilioSMSController@index')->name('twilio_sms.index');
    Route::post('/update-twilio-sms', 'TwilioSMSController@update')->name('twilio_sms.update');

    // Payment Gateway Settings
    Route::get('/get-payment-gateway-setting', 'PaymentGatewayController@index')->name('payment_gateway.index');
    Route::post('/update-payment-gateway-setting', 'PaymentGatewayController@update')->name('payment_gateway.update');

    // Cms Pages
    Route::delete('cms-pages/destroy', 'CmsPagesController@massDestroy')->name('cms-pages.massDestroy');
    Route::post('cms-pages/media', 'CmsPagesController@storeMedia')->name('cms-pages.storeMedia');
    Route::post('cms-pages/ckmedia', 'CmsPagesController@storeCKEditorImages')->name('cms-pages.storeCKEditorImages');
    Route::resource('cms-pages', 'CmsPagesController');
 
    // Contactus Page
    Route::delete('contact-uss/destroy', 'ContactUsController@massDestroy')->name('contact-us.massDestroy');
    Route::resource('contact-us', 'ContactUsController');

    // General Settings
    Route::get('general-settings', 'GeneralSettingsController@edit')->name('general_settings.edit');
    Route::post('general-settings', 'GeneralSettingsController@update')->name('general_settings.update');

    //Payment Methods
    // Route::get('/get-payment', 'EnvsettingController@paymentMethod')->name('EnvSetting.paymentmethod');
    // Route::post('/get-payment', 'EnvsettingController@storepaymentMethod')->name('EnvSetting.paymentMethod');

    // Category
    Route::resource('category', 'CategoryController');
    Route::delete('category/destroy', 'CategoryController@massDestroy')->name('category.massDestroy');
    
    // Product
    Route::resource('products', 'ProductController');
    Route::get('products/get-seller-commission/{id}', 'ProductController@getSellerCommission')->name('products.get_seller_commission');
    Route::get('products/{id}/bids', 'ProductController@getProductBids')->name('products.bids');
    Route::get('products/{id}/shipping-details', 'ProductController@getShippingDetails')->name('products.shipping_details');
    Route::delete('products/document-delete/{id}', 'ProductController@documentsDestroy');
    Route::get('reminder-product-receipt-list', 'ProductController@reminderProductReceiptList')->name('products.reminder_product_receipt');
    Route::post('admin-send-message-to-seller', 'ProductController@adminSendMessageToSeller')->name('products.admin_send_message_to_seller');
    Route::post('user-followup-bid-message', 'ProductController@userFollowupBidMessage')->name('products.user_followup_bid_message');
    Route::post('admin-make-winner-user', 'ProductController@makeBidderAsWinner')->name('products.admin_make_winner_user');
    Route::post('user-bid-winner-expire', 'ProductController@userBidWinnerExpire')->name('products.user_bid_winner_expire');

    Route::get('auction', 'ProductController@getAuctionProduct')->name('products.auction_product');
    Route::get('sell', 'ProductController@getSellProduct')->name('products.sell_product');

    //Advertisement
    Route::resource('advertisement', 'AdvertisementController');
    Route::delete('advertisement/destroy', 'AdvertisementController@massDestroy')->name('advertisement.massDestroy');

    // Route::get('pay-service', 'PaymentProcessController@payUserService')->name('payUserService');
    // Route::post('pay-service/servicePostData', 'PaymentProcessController@servicePostData')->name('servicePostData');
    // Route::get('service-payment/callback', 'PaymentProcessController@servicePaymentCallback')->name('servicePayment.callback');

    Route::get('payment/success', 'PaymentProcessController@paymentSuccess')->name('payment.payment_success');
    Route::get('payment/failed', 'PaymentProcessController@paymentFailed')->name('payment.payment_failed');

    Route::get('transaction-list', 'PaymentProcessController@transactionList')->name('transaction.index');
    Route::delete('transaction-destroy/{id}', 'PaymentProcessController@transactionDestroy')->name('transaction.destroy');
    Route::get('transaction-show/{id}', 'PaymentProcessController@show')->name('transaction.show');
    Route::get('order-details-show/{id}', 'PaymentProcessController@orderDetailsShow')->name('transaction.order_details_show');
    Route::post('update-paid-on-delivery', 'PaymentProcessController@updatePaidOnDelivery')->name('transaction.update_paid_on_delivery');

    // Country Page
    Route::resource('country', 'CountryController');
    Route::post('country/{id}/toggle-seller-flag', 'CountryController@toggleSellerFlag')->name('country.toggle_seller_flag');

    Route::post('/set-timezone', function (\Illuminate\Http\Request $request) {
        session(['user_timezone' => $request->timezone]);
        
        return response()->json(['status' => true]);
    });

    //Seller Wallet
    Route::resource('seller-wallet', 'SellerWalletController');
    Route::get('seller-wallet-export', 'SellerWalletController@export')->name('seller_wallet.export_seller_wallet');
    Route::post('seller-wallet-import', 'SellerWalletController@importSellerWallet')->name('seller_wallet.import_seller_wallet');

    // COD Payment Requests
    // Route::get('cod-payment-request', 'CODPaymentRequestController@index')->name('cod_payment.cod_payment_request');
    // Route::post('cod-payment-request-status', 'CODPaymentRequestController@codPaymentStatusUpdate')->name('cod_payment.cod_payment_request_status');
});

Route::group(['prefix' => 'admin', 'as' => 'admin.', 'namespace' => 'Admin'], function () {
    // Route::post('process-to-buy-product/{user_id}/{product_sku}', 'PaymentProcessController@processToBuyProduct')->name('payment.process_to_buy_product');
    Route::match(['get','post'], 
    'process-to-buy-product/{user_id}/{product_sku}',
        [PaymentProcessController::class, 'processToBuyProduct']
    )->name('payment.process_to_buy_product')->middleware('signed');
    Route::post('process-to-payment', 'PaymentProcessController@processToPayment')->name('payment.process_to_payment');
   //  Route::get('payment/callback', 'PaymentProcessController@paymentCallback')->name('payment.payment_callback');
});

Route::group(['prefix' => 'profile', 'as' => 'profile.', 'namespace' => 'Auth', 'middleware' => ['auth']], function () {
    // Change password
    if (file_exists(app_path('Http/Controllers/Auth/ChangePasswordController.php'))) {
        Route::get('password', 'ChangePasswordController@edit')->name('password.edit');
        Route::post('password', 'ChangePasswordController@update')->name('password.update');
        Route::post('profile', 'ChangePasswordController@updateProfile')->name('password.updateProfile');
        Route::post('profile/destroy', 'ChangePasswordController@destroy')->name('password.destroyProfile');
    }
});
