<?php

// header('Access-Control-Allow-Origin: *');
// header('Access-Control-Allow-Methods: GET, POST');
// header("Access-Control-Allow-Headers: *");

use App\Http\Controllers\AdminController\CarWashOwnerController;
use App\Http\Controllers\AdminPanel\AdminController;
use App\Http\Controllers\AdminPanel\BannerController;
use App\Http\Controllers\AdminPanel\CarOwnersCarController;
use App\Http\Controllers\AdminPanel\CarWashClientsController;
use App\Http\Controllers\AdminPanel\CarWashOwnerController as AdminPanelCarWashOwnerController;
use App\Http\Controllers\AdminPanel\SearchCarController;
use App\Http\Controllers\AdminPanel\SubUserController;
use App\Http\Controllers\AdminPanel\UnitController;
use App\Http\Controllers\AdminPanel\WashCategoryController;
use App\Http\Controllers\Auth\AuthenticatedSessionController;
use App\Http\Controllers\OwnerPanel\OwnerController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\UserPanel\UserController;
use App\Http\Controllers\AdminPanel\CarWashReportController;
use App\Http\Controllers\AdminPanel\CwoUserController;
use App\Http\Controllers\OwnerPanel\OwnerWashCategoryController;
use App\Http\Controllers\OwnerPanel\OwnerCarWashReportController;
use App\Http\Controllers\OwnerPanel\OwnerSearchCarController;
use App\Http\Controllers\OwnerPanel\WashOwnerController;
use App\Http\Controllers\OwnerPanel\OwnerCwoUserController;
use App\Http\Controllers\OwnerPanel\OwnerBannerController;
use App\Http\Controllers\OwnerPanel\OwnerLoyaltyController;
use App\Http\Controllers\AdminPanel\PermissionController;
use App\Http\Controllers\FastPayControl;
use App\Http\Controllers\CwoRegisterController;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Artisan;

/*
|--------------------------------------------------------------------------
| 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('/', [AuthenticatedSessionController::class, 'create'])->name('login');



Route::middleware(['auth', 'role'])->group(function () {
    Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
    Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
    Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});

require __DIR__ . '/auth.php';

Route::get('dashboard', [UserController::class, 'index'])->name('dashboard');

Route::middleware(['auth'])->prefix('admin')->name('admin.')->group(function () {
    Route::get('dashboard', [AdminController::class, 'index'])->name('dashboard');
    Route::controller(AdminPanelCarWashOwnerController::class)->prefix('cwo')->group(function () {
        Route::get('list', 'index')->name('cwo.list');
        Route::post('list', 'index')->name('cwo.fetch.list');
        Route::get('create', 'create')->name('cwo.create');
        Route::post('store', 'store')->name('cwo.store');
        Route::post('status_change_ajax', 'status_change_ajax')->name('cwo.status_change_ajax');
        Route::get('edit/{id}', 'edit')->name('cwo.edit');
        Route::post('update/{id}', 'update')->name('cwo.update');
        Route::post('delete', 'destroy')->name('cwo.delete');
        Route::post('delete_image', 'delete_image')->name('cwo.delete_image');
        Route::get('download-list', 'downloadList')->name('cwo.download.list');
    });

    Route::controller(CarWashClientsController::class)->prefix('cwc')->group(function () {
        Route::get('list', 'index')->name('cwc.list');
        Route::post('list', 'index')->name('cwc.fetch.list');
        Route::get('create', 'create')->name('cwc.create');
        Route::post('store', 'store')->name('cwc.store');
        Route::post('status_change_ajax', 'status_change_ajax')->name('cwc.status_change_ajax');
        Route::get('edit/{id}', 'edit')->name('cwc.edit');
        Route::post('update/{id}', 'update')->name('cwc.update');
        Route::post('delete', 'destroy')->name('cwc.delete');
        Route::post('delete_image', 'delete_image')->name('cwc.delete_image');
        // Route::get('download-list', 'downloadList')->name('cwc.download.list');
        Route::get('download', 'download')->name('cwc.download');
    });

    Route::controller(WashCategoryController::class)->prefix('wash-category')->name('wc.')->group(function () {
        Route::get('list', 'index')->name('list');
        // Route::post('list', 'index')->name('fetch.list');
        Route::get('create', 'create')->name('create');
        Route::post('store', 'store')->name('store');
        Route::get('download-list', 'downloadList')->name('download.list');
        Route::get('edit/{id}', 'edit')->name('edit');
        Route::post('update/{id}', 'update')->name('update');
        Route::get('delete/{id}', 'delete')->name('delete');
    });

    Route::controller(SubUserController::class)->prefix('sub-user')->name('su.')->group(function () {
        Route::get('list', 'index')->name('list');
        Route::post('list', 'index')->name('fetch.list');
        Route::get('create', 'create')->name('create');
        Route::post('store', 'store')->name('store');
        Route::get('download-list', 'downloadList')->name('download.list');
    });

    Route::controller(SearchCarController::class)->prefix('car-search')->name('cs.')->group(function () {
        Route::get('list', 'index')->name('list');
        // Route::post('list', 'index')->name('fetch.list');
    });

    Route::controller(CarWashReportController::class)->prefix('car-wash-report')->name('cor.')->group(function () {
        Route::get('list', 'index')->name('list');
        // Route::post('list', 'index')->name('fetch.list');
        Route::get('download', 'download')->name('download');
    });

    Route::controller(UnitController::class)->prefix('unit')->group(function () {
        Route::get('list/{cwoid}', 'index')->name('unit.list');
        Route::get('create/{cwoid}', 'create')->name('unit.create');
        Route::post('store/{cwoid}', 'store')->name('unit.store');
        Route::get('edit/{cwoid}/{unitid}', 'edit')->name('unit.edit');
        Route::post('update/{cwoid}/{unitid}', 'update')->name('unit.update');
        Route::get('delete/{unitid}', 'delete')->name('unit.delete');

        Route::get('user/list/{unitid}', 'listUser')->name('unit.user.list');
        Route::get('user/create/{unitid}', 'createUser')->name('unit.user.create');
        Route::post('user/store/{unitid}', 'storeUser')->name('unit.user.store');
        Route::get('user/edit/{unitid}/{userid}', 'editUser')->name('unit.user.edit');
        Route::post('user/update/{unitid}/{userid}', 'updateUser')->name('unit.user.update');
        Route::get('user/delete/{userid}', 'deleteUser')->name('unit.user.delete');
    });
    Route::controller(BannerController::class)->prefix('banner')->group(function () {
        Route::get('list/{cwoid}', 'index')->name('banner.list');
        Route::get('create/{cwoid}', 'create')->name('banner.create');
        Route::post('store/{cwoid}', 'store')->name('banner.store');
        Route::get('edit/{cwoid}/{bannerid}', 'edit')->name('banner.edit');
        Route::post('update/{cwoid}/{bannerid}', 'update')->name('banner.update');
        // Route::get('delete/{bannerid}', 'delete')->name('banner.delete');
    });

    Route::controller(CarOwnersCarController::class)->prefix('coc')->group(function () {
        Route::get('list/{co_id}', 'index')->name('coc.list');
        Route::post('list/{co_id}', 'index')->name('coc.fetch.list');
        Route::get('create/{co_id}', 'create')->name('coc.create');
        Route::post('store/{co_id}', 'store')->name('coc.store');
        Route::post('status_change_ajax/{co_id}', 'status_change_ajax')->name('coc.status_change_ajax');
        Route::get('edit/{co_id}/{id}', 'edit')->name('coc.edit');
        Route::post('update/{co_id}/{id}', 'update')->name('coc.update');
        Route::post('delete/{co_id}', 'destroy')->name('coc.delete');
        Route::post('delete_image/{co_id}', 'delete_image')->name('coc.delete_image');
        Route::get('download-list/{co_id}', 'downloadList')->name('coc.download.list');
    });
    Route::controller(CwoUserController::class)->prefix('cwo-user')->name('cu.')->group(function () {
        Route::get('list/{cwoid}', 'listUser')->name('user.list');
        Route::get('create/{cwoid}', 'createUser')->name('user.create');
        Route::post('store/{cwoid}', 'storeUser')->name('user.store');
        Route::get('edit/{cwoid}/{userid}', 'editUser')->name('user.edit');
        Route::post('update/{cwoid}/{userid}', 'updateUser')->name('user.update');
        Route::get('delete/{userid}', 'deleteUser')->name('user.delete');
    });
    Route::controller(PermissionController::class)->prefix('permission')->name('pr.')->group(function () {
        Route::get('list', 'index')->name('list');
        Route::get('create', 'create')->name('create');
        Route::post('store', 'store')->name('store');
        Route::get('edit/{id}', 'edit')->name('edit');
        Route::post('update/{id}', 'update')->name('update');
        Route::get('delete/{id}', 'delete')->name('delete');
    });

});

// Route::middleware(['auth', 'verified', 'role:owner'])->group(function () {
//     Route::get('owner/dashboard', [OwnerController::class, 'index'])->name('owner.dashboard');
// });
Route::middleware(['auth', 'role:owner'])->prefix('owner')->name('owner.')->group(function () {
    Route::get('dashboard', [OwnerController::class, 'index'])->name('dashboard');
    Route::get('profile', [OwnerController::class, 'profile'])->name('profile');
    Route::post('updateprofile', [OwnerController::class, 'updateprofile'])->name('updateprofile');

    Route::controller(OwnerWashCategoryController::class)->prefix('wash-category')->name('wc.')->group(function () {
        Route::get('list', 'index')->name('list');
        Route::get('create', 'create')->name('create');
        Route::post('store', 'store')->name('store');
        Route::get('download-list', 'downloadList')->name('download.list');
        Route::get('edit/{id}', 'edit')->name('edit');
        Route::post('update/{id}', 'update')->name('update');
        Route::get('delete/{id}', 'delete')->name('delete');
    });
    Route::controller(OwnerCarWashReportController::class)->prefix('car-wash-report')->name('cor.')->group(function () {
        Route::get('list', 'index')->name('list');
        Route::get('download', 'download')->name('download');
    });
    Route::controller(OwnerSearchCarController::class)->prefix('car-search')->name('cs.')->group(function () {
        Route::get('list', 'index')->name('list');
    });
    Route::controller(WashOwnerController::class)->prefix('cwo')->name('cwo.')->group(function () {
        Route::get('list', 'index')->name('list');
        Route::get('edit/{id}', 'edit')->name('edit');
        Route::post('update/{id}', 'update')->name('update');
    });
    Route::controller(OwnerCwoUserController::class)->prefix('cwo-user')->name('cu.user.')->group(function () {
        Route::get('list/{cwoid}', 'listUser')->name('list');
        Route::get('create/{cwoid}', 'createUser')->name('create');
        Route::post('store/{cwoid}', 'storeUser')->name('store');
        Route::get('edit/{cwoid}/{userid}', 'editUser')->name('edit');
        Route::post('update/{cwoid}/{userid}', 'updateUser')->name('update');
        Route::get('delete/{userid}', 'deleteUser')->name('delete');
    });
    Route::controller(OwnerBannerController::class)->prefix('banner')->name('banner.')->group(function () {
        Route::get('list/{cwoid}', 'index')->name('list');
        Route::get('create/{cwoid}', 'create')->name('create');
        Route::post('store/{cwoid}', 'store')->name('store');
        Route::get('edit/{cwoid}/{bannerid}', 'edit')->name('edit');
        Route::post('update/{cwoid}/{bannerid}', 'update')->name('update');
    });
    Route::controller(OwnerLoyaltyController::class)->prefix('loyalty')->name('loyalty.')->group(function () {
        Route::get('list', 'index')->name('list');
        Route::get('create', 'create')->name('create');
        Route::post('store', 'store')->name('store');
        Route::get('edit/{id}', 'edit')->name('edit');
        Route::post('update/{id}', 'update')->name('update');
        Route::get('delete/{id}', 'delete')->name('delete');
    });

});

Route::middleware(['auth', 'role:user'])->group(function () {
    Route::get('user/dashboard', [UserController::class, 'index'])->name('dashboard');
});

Route::get('migraterun',function(){
   Artisan::call('migrate');
});
Route::get('linkstorage', function () {
    Artisan::call('storage:link');
});


Route::controller(FastPayControl::class)->prefix('payment')->name('payment.')->group(function () {
    Route::any('', 'payment')->name('payment');
    Route::any('fastpay', 'fastPay')->name('fastPay');
    Route::any('cancel', 'cancel')->name('cancel');
    Route::any('return', 'return')->name('return');
    Route::any('notify', 'notify')->name('notify');
});

Route::controller(CwoRegisterController::class)->group(function () {
    Route::get('cwo/register', 'cwoRegister')->name('cwo.register');
    Route::post('cwo/register/create', 'cwoRegisterCreate')->name('cwo.register.create');
    Route::get('cwo/register/success/{id}', 'cwoRegisterSuccess')->name('cwo.register.success');
    Route::get('cwo/register/business/{id}', 'cwoRegisterBusiness')->name('cwo.register.business');
    Route::post('cwo/register/business/create/{id}', 'cwoRegisterBusinessSuccess')->name('cwo.register.business.success');
});
