<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\PosController;
use App\Http\Controllers\BillController;


/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/



// Common Routes Authentication Related
Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login');
Route::post('/login', [AuthController::class, 'login']);
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');

Route::prefix('admin')->middleware('auth')->group(function () {

    
    
    Route::post('/delete-user', [AdminController::class, 'deleteUser'])->name('admin.deleteUser');


    Route::get('/roles', [AdminController::class, 'role_index'])->name('admin.roles');
    Route::post('/roles/store', [AdminController::class, 'role_store'])->name('admin.roles.store');
    Route::get('/roles/delete/{id}', [AdminController::class, 'role_destroy'])->name('admin.roles.delete');
    Route::get('/roles/{id}/menus', [AdminController::class, 'role_editMenus'])->name('admin.roles.menus');
    Route::post('/roles/{id}/menus', [AdminController::class, 'role_updateMenus'])->name('admin.roles.menus.update');

    Route::get('/change/password', [AdminController::class, 'change_password'])->name('admin.change_password');
    Route::post('/admin/settings/change-password', [AdminController::class, 'changePassword'])->name('admin.settings.changePassword');


    Route::get('/dashboard', [AdminController::class, 'index'])->name('admin.dashboard');
    Route::get('/users', [AdminController::class, 'users'])->name('admin.users');
    Route::post('/users/create', [AdminController::class, 'create_user'])->name('admin.create_user');
    Route::post('/users/update', [AdminController::class, 'updateUser'])->name('admin.update_user');
    Route::get('/settings', [AdminController::class, 'settings'])->name('admin.settings');
    Route::post('/admin/settings/update', [AdminController::class, 'updateSettings'])->name('admin.settings.update');
    Route::get('/items', [AdminController::class, 'itemsIndex'])->name('admin.items.index');
    Route::post('/items/store', [AdminController::class, 'itemsStore'])->name('admin.items.store');
    Route::get('/items/{id}/edit', [AdminController::class, 'itemsEdit'])->name('admin.items.edit');
    Route::delete('/items/{id}', [AdminController::class, 'itemsDestroy'])->name('admin.items.destroy');
    Route::get('/addons/create', [AdminController::class, 'addon_create'])->name('admin.addon_create');
    Route::post('/addon/store', [AdminController::class, 'storeAddon'])->name('admin.addon.store');
    Route::get('/addons', [AdminController::class, 'addon_index'])->name('admin.addons.index');
    Route::get('/addons/data', [AdminController::class, 'addon_getData'])->name('admin.addons.data');
    Route::get('/addons/{id}/edit', [AdminController::class, 'addon_edit'])->name('admin.addons.edit');
    Route::post('/addons/{id}/update', [AdminController::class, 'addon_update'])->name('admin.addons.update');

    Route::get('/addon/item/config', [AdminController::class, 'addon_item_config'])->name('admin.addons.item_config');
    Route::get('/addon/groups', [AdminController::class, 'addon_groups'])->name('admin.addons.addon_groups');
    Route::post('/admin/addon-map/save', [AdminController::class, 'save_addon_mapping'])->name('admin.addon_map.save');

    Route::post('/admin/addon_map/save_single', [AdminController::class, 'save_single'])->name('admin.addon_map.save_single');
    Route::post('/admin/addon_map/delete_single', [AdminController::class, 'delete_single'])->name('admin.addon_map.delete_single');


    Route::get('item/rules', [AdminController::class, 'item_group_addon_rule'])->name('admin.item_rules');
    Route::post('admin/item-addon-rule/save', [AdminController::class, 'save_item_group_addon_rule'])->name('admin.item_group_addon_rule.save');
    Route::get('admin/item-addon-rule/delete/{id}', [AdminController::class, 'delete_item_group_addon_rule'])->name('admin.item_group_addon_rule.delete');
    Route::post('/combo-addons/save', [AdminController::class, 'combo_maping_store'])->name('combo_addons.store');

    Route::get('/customers', [AdminController::class, 'customer_index'])->name('customers.index');
    Route::get('/customers/list', [AdminController::class, 'getCustomers'])->name('customers.list');
    Route::post('/customers/store', [AdminController::class, 'customer_store'])->name('customers.store');
    Route::get('/customers/edit/{id}', [AdminController::class, 'customer_edit'])->name('customers.edit');
    Route::delete('/customers/delete/{id}', [AdminController::class, 'customer_destroy'])->name('customers.delete');

    Route::post('/combo-addons/update', [AdminController::class, 'combo_addon_update'])->name('combo_addons.update');
    Route::post('/combo-addons/delete', [AdminController::class, 'combo_addon_destroy'])->name('combo_addons.destroy');


    Route::post('/logout', function () {
        Auth::logout();
        request()->session()->invalidate();
        request()->session()->regenerateToken();
        return redirect('/login'); // Change to your login route
    })->name('logout');


});



Route::get('/pos/login', [PosController::class, 'showLoginForm'])->name('pos.login');
Route::post('/pos/login', [PosController::class, 'loginBack'])->name('pos.login_back');
Route::post('/pos/logout', [PosController::class, 'logout'])->name('pos.logout');
Route::prefix('pos')->middleware('auth')->group(function () 
{

    Route::get('index', [PosController::class, 'index'])->name('pos.index');   
    Route::get('load_items', [PosController::class, 'load_items'])->name('pos.load_items'); 
    Route::get('load_cart', [PosController::class, 'load_cart'])->name('pos.load_cart');
    Route::get('remove_item', [PosController::class, 'remove_item'])->name('pos.remove_item');
    Route::post('add_to_cart', [PosController::class, 'add_to_cart'])->name('pos.add_to_cart');
    Route::get('load_adons', [PosController::class, 'load_adons'])->name('pos.load_adons');
    Route::get('load_adons/combo', [PosController::class, 'load_adons_combo'])->name('pos.load_adons_combo');
    Route::get('switch_type', [PosController::class, 'switch_type'])->name('pos.switch_type');
    Route::get('checkout', [PosController::class, 'checkout'])->name('pos.checkout');
    Route::post('save-bill', [PosController::class, 'saveBill'])->name('save.bill');

    Route::get('bills', [BillController::class, 'index'])->name('bills.index');
    Route::get('bills/data', [BillController::class, 'getData'])->name('bills.data');
    Route::get('bills/show/{id}', [BillController::class, 'show'])->name('bills.show');

/* Added by Meenu on Nov 6, 2025*/

Route::post('/pos/clear-cart', [PosController::class, 'clearCart'])->name('pos.clearCart');

/* * */


});


Route::get('/run-storage-link', function () {
    try {
        Artisan::call('storage:link');
        return response()->json([
            'status' => 'success',
            'message' => 'Storage link created successfully!',
            'output' => Artisan::output(),
        ]);
    } catch (Exception $e) {
        return response()->json([
            'status' => 'error',
            'message' => $e->getMessage(),
        ], 500);
    }
});




