<?php

use Illuminate\Support\Facades\Route;
use App\Models\Refunds;
use App\Models\Transactions;
//Admin
use App\Http\Controllers\Admin\AdminRefundController;
use App\Http\Controllers\Admin\AdminUserController;
use App\Http\Controllers\Admin\AdminSettingController;
use App\Http\Controllers\Admin\AdminTransactionController;
use App\Http\Controllers\Admin\AdminDashboardController;
//Login
use App\Http\Controllers\Login\LoginController;
//User
use App\Http\Controllers\User\UserDashboardController;
use App\Http\Controllers\User\UserContactController;
use App\Http\Controllers\User\UserTransactionController;
use App\Http\Controllers\User\UserRefundController;

// use Illuminate\Foundation\Auth\User;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
Route::get('/welcome', function () {
    return view('welcome'
    );
});


Route::get('/detail_transaction', function () {
    return view('admin/transaction/detail-transaction',[
        'name'=>'Jilhn Haura',
        'detail_transaction' => Transactions::allDetailTransactions()
    ]);
})->name('transaction.detail');
// Route::get('/history_transaction', function () {
//     return view('admin/transaction/History_Transaction',[
//         'name'=>'Jilhan Haura',
//         "transaction"=> Transactions::allTransactions()
//     ]);
// });
// Route::get('/history_refund', function () {
//     return view('admin/refund/history-refund',[
//         'name'=>'Jilhan Haura',
//         "history_refund" => Refunds::HistoryRefund()
//     ]);
// });



Route::get('/detail_refund',function() {
    return view('admin/refund/detail-refund',[
        'name'=>'Jilhan Haura',
        "detail_refund"=> Refunds::DetailRefund()
    ]);
})->name('refund.detail');
Route::get('/next_detail_refund',function() {
    return view('admin/refund/next-detail-refund',[
        'name'=>"Jilhan Haura"
    ]);
});
// Route::get('/list_user',function() {
//     return view('Admin/users/list-user',[
//         'name'=>"Jilhan Haura",
//         "list_users" => Users::listUsers()
//     ]);
// });
// Route::get('/detail-user',function() {
//     return view('Admin/users/detail-user',[
//         'name'=>"Jilhan Haura",
//         "detail_user" => Users::detailUser()
//     ]);
// });
// Route::get('/profile',function() {
//     return view('admin/profile/index',[
//         'name'=>"Jilhan Haura",
//     ]);
// });
// Route::get('/setting',function() {
//     return view('admin/setting/index',[
//         'name'=>"Jilhan Haura",
//         "setting" => Settings:: HistorySetting()
//     ]);
// });

// --------------------------------------------------------------------------------------------

//Index



// Login, logout dan register
Route::controller(LoginController::class)->group(function(){
    Route::get('/login','login')->name('login');
    Route::get('/logout','logout')->name('logout');
    Route::post('/authenticate','authenticate')->name('authenticate');
    Route::post('/register','register')->name('register');
    Route::get('/cek-email/{email}','statusAkun')->name('status.akun');
    Route::get('/cari-provinsi','cariProvinsi')->name('cari.provinsi');
    Route::get('/cari-kota/{code}','cariKota')->name('cari.kota');
    Route::get('/cari-kecamatan/{code}','cariKecamatan')->name('cari.kecamatan');
    Route::get('/cari-kelurahan/{code}','cariKelurahan')->name('cari.kelurahan');
    Route::post('/kode-verifikasi','kirimKodeVerifikasi')->name('kirim.kode');
    Route::get('ocr','getOcr');
});

// admin dan user
Route::middleware(['auth'])->group(function(){
    Route::middleware(['admin'])->group(function(){
        Route::prefix('admin')->group(function(){
            // Tampilan dashboard admin beserta perhitungan
            Route::controller(AdminDashboardController::class)->group(function(){
                Route::get('/','index')->name('admin.index');
                Route::get('/profile','profile')->name('admin.profile');
            });
            // Tampilan, aprove atau deny dan hapus user
            // Route::resource('admin-user', AdminUserController::class);
            Route::controller(AdminUserController::class)->group(function(){
                Route::get('admin-user','index')->name('admin-user.index');
                Route::get('admin-user/{id}','show')->name('admin-user.show');
                Route::delete('admin-user/{id}','delete')->name('admin-user.destroy');
                Route::put('admin-user/approve-user/{id}', 'approveUser')->name('admin-user.approve');
                Route::put('admin-user/deny-user/{id}', 'denyUser')->name('admin-user.deny');
            });
            // Tampilan transaksi
            Route::resource('admin-transaction', AdminTransactionController::class);
            // Tampilan, approve atau deny dan hapus refund
            Route::resource('admin-refund',AdminRefundController::class);
            // Tampilan, tambah, ubah dan hapus kebijakan persentase perusahaan
            Route::resource('admin-setting',AdminSettingController::class);
        });
    });
    Route::middleware(['user'])->group(function(){
        Route::prefix('user')->group(function(){
            // Tampilan dashboard user beserta perhitungan
            Route::controller(UserDashboardController::class)->group(function(){
                Route::get('/','index')->name('user.index');
                Route::get('/profile','profile')->name('user.profile');
            });
            // Tampilan, tambah dan hapus kontak
            Route::controller(UserContactController::class)->group(function(){
                Route::get('user-contact','index')->name('user-contact.index');
                Route::get('cek-contact/{email}','cekEmail')->name('user-contact.email');
                Route::post('user-contact','store')->name('user-contact.store');
                Route::delete('user-contact/{id}','destroy')->name('user-contact.delete');
                Route::get('get-user-contact','getContact')->name('user-contact.get');
            });
            // Tampilan transaksi, bayar, update status pengiriman dan refund
            Route::controller(UserTransactionController::class)->group(function(){
                // Pembeli
                Route::get('user-transaction-pembeli','indexPembeli')->name('user-transaction.index.pembeli');
                Route::get('detail-user-transaction-pembeli/{id}','detailTransaction')->name('user-transaction.detail.pembeli');
                Route::get('tambah-transaction','createTransaction')->name('tambah-transaction.pembeli');
                Route::post('store-transaction','storeTransaction')->name('store-transaction.pembeli');
                Route::post('payment-transaction/{id}','paymentTransaction')->name('payment-transaction.pembeli');
                Route::get('status','status');
                //Penjual
                Route::get('user-transaction-penjual','indexPenjual')->name('user-transaction.index.penjual');
                Route::get('translate','cancelTransaction');
            });
            // Tampilan refund
            Route::controller(UserRefundController::class)->group(function(){
                Route::get('user-refund','index')->name('user-refund.index');
                Route::get('user-refund-create','create')->name('user-refund.create');
            });
        });
    });
});