<?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;
use App\Http\Controllers\Profile\ProfileController;
//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('/', 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('autentikasi');
    Route::post('register','register')->name('register');
    Route::get('cek-email/{email}','accountStatus')->name('status-akun');
    Route::get('cari-provinsi','searchProvince')->name('cari-provinsi');
    Route::get('cari-kota/{code}','searchCity')->name('cari-kota');
    Route::get('cari-kecamatan/{code}','searchDistrict')->name('cari-kecamatan');
    Route::get('cari-kelurahan/{code}','searchVillage')->name('cari-kelurahan');
    Route::post('kode-verifikasi','sendVerificationCode')->name('kirim-kode');
    Route::get('ocr','getOcr');
});

// admin dan user
Route::middleware(['auth'])->group(function(){

    Route::prefix('profile')->group(function(){
        Route::controller(ProfileController::class)->group(function(){
            Route::get('/','index')->name('profile.index');
            Route::post('update','updateProfile')->name('profile.update');
            Route::put('ganti-password','changePassword')->name('profile.change-password');
        });
    });

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

            // Tampilan, aprove atau deny dan hapus user
            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 (Sudah)
            Route::controller(AdminTransactionController::class)->group(function(){
                Route::get('admin-transaction','index')->name('admin-transaction.index');
                Route::get('admin-transaction/detail/{id}','show')->name('admin-transaction.show');

            });

            // Tampilan, approve atau deny dan hapus refund
            Route::controller(AdminRefundController::class)->group(function(){
                Route::get('admin-refund','index')->name('admin-refund.index');
                Route::get('admin-refund/{id}','show')->name('admin-refund.show');
                Route::put('admin-refund/approve-refund/{id}','approveRefund')->name('admin-refund.approve');
                Route::put('admin-refund/deny-refund/{id}','denyRefund')->name('admin-refund.deny');
            });

            // Tampilan, tambah, ubah dan hapus kebijakan persentase perusahaan
            Route::controller(AdminSettingController::class)->group(function(){
                Route::get('admin-setting','index')->name('admin-setting.index');
                Route::post('admin-setting/store','store')->name('admin-setting.store');
                Route::put('admin-setting/active/','activeSetting')->name('admin-setting.active-setting');
            });
        });
    });

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

                //
            });

            // Tampilan, tambah dan hapus kontak
            Route::controller(UserContactController::class)->group(function(){
                Route::get('user-contact','index')->name('user-contact.index');
                Route::post('user-contact','store')->name('user-contact.store');
                Route::delete('user-contact/delete/{id}','destroy')->name('user-contact.destroy');
                Route::get('user-contact/get-user-contact','getContact')->name('user-contact.get');
                Route::get('user-contact/cek-contact/{email}','checkEmail')->name('user-contact.email');
            });

            // Tampilan transaksi, bayar, update status pengiriman dan refund
            Route::controller(UserTransactionController::class)->group(function(){
                // Pembeli
                Route::get('user-pembeli','indexPembeli')->name('user-pembeli.index');
                Route::get('user-pembeli/detail-transaksi/{id}','show')->name('user-pembeli.show');
                Route::get('user-pembeli/tambah-transaksi','create')->name('user-pembeli.create');
                Route::get('user-pembeli/invoice/{id}','invoice')->name('user-pembeli.invoice');
                Route::post('user-pembeli','store')->name('user-pembeli.store');
                Route::put('user-pembeli/bayar-transaksi/{id}','payTransaction')->name('user-pembeli.pay');
                Route::put('user-pembeli/batal-transaksi/{id}','cancelTransaction')->name('user-pembeli.cancel');
                Route::put('user-pembeli/transaksi-selesai/{id}','finishTransaction')->name('user-pembeli.finish');
                Route::put('user-pembeli/transaksi-komplain/{id}','complainTransaction')->name('user-pembeli.complain');

                //Penjual
                Route::get('user-penjual','indexPenjual')->name('user-penjual.index');
                Route::get('user-penjual/detail-transaksi/{id}','show')->name('user-penjual.show');
                Route::put('user-penjual/terima-transaksi/{id}','acceptTransaction')->name('user-penjual.accept');
                Route::put('user-penjual/kirim-pesanan/{id}','sendingOrder')->name('user-penjual.sending');
                Route::put('user-penjual/selesai-kirim-pesanan/{id}','sentOrder')->name('user-penjual.sent');
            });

            // Tampilan refund
            Route::controller(UserRefundController::class)->group(function(){
                Route::get('user-refund','index')->name('user-refund.index');
                Route::get('user-refund/ajukan-komplain/{id}','create')->name('user-refund.create');
                Route::get('user-refund/detail-refund/{id}','show')->name('user-refund.show');
                Route::post('user-refund','store')->name('user-refund.store');
            });
        });
    });
});