/home2/mshostin/public_html/routes/web.php
<?php

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| 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!
|
*/
// Route::get('/register', function () {
//     return redirect()->route('login');
// })->name('register');

Auth::routes();

Route::get('/', [App\Http\Controllers\HomeController::class, 'index'])->name('home')->middleware('auth');


Route::group(['middleware' => 'auth'], function () {

    Route::resources([
        'users' => 'App\Http\Controllers\UserController',
        'providers' => 'App\Http\Controllers\ProviderController',
        'inventory/products' => 'App\Http\Controllers\ProductController',
        'clients' => 'App\Http\Controllers\ClientController',
        'reference' => 'App\Http\Controllers\ReferenceController',
        'inventory/categories' => 'App\Http\Controllers\ProductCategoryController',
        'transactions/transfer' => 'App\Http\Controllers\TransferController',
        'methods' => 'App\Http\Controllers\MethodController',
    ]);

    Route::resource('transactions', 'App\Http\Controllers\TransactionController')->except(['create', 'show']);
    Route::get('transactions/stats/{year?}/{month?}/{day?}', [App\Http\Controllers\TransactionController::class,'stats'])->name('transactions.stats');
    Route::get('transactions/{type}', [App\Http\Controllers\TransactionController::class,'type'])->name('transactions.type');
    Route::get('transactions/{type}/create', [App\Http\Controllers\TransactionController::class,'create'])->name('transactions.create');
    Route::get('transactions/{transaction}/edit', [App\Http\Controllers\TransactionController::class,'edit'])->name('transactions.edit');

    Route::get('inventory/stats/{year?}/{month?}/{day?}', [App\Http\Controllers\InventoryController::class,'stats'])->name('inventory.stats');
    Route::resource('inventory/receipts', 'App\Http\Controllers\ReceiptController')->except(['edit', 'update']);
    Route::get('inventory/receipts/{receipt}/finalize', [App\Http\Controllers\ReceiptController::class,'finalize'])->name('receipts.finalize');
    Route::get('inventory/receipts/{receipt}/product/add',  [App\Http\Controllers\ReceiptController::class,'addproduct'])->name('receipts.product.add');
    Route::get('inventory/receipts/{receipt}/product/{receivedproduct}/edit',  [App\Http\Controllers\ReceiptController::class,'editproduct'])->name('receipts.product.edit');
    Route::post('inventory/receipts/{receipt}/product',  [App\Http\Controllers\ReceiptController::class,'storeproduct'])->name('receipts.product.store');
    Route::match(['put', 'patch'], 'inventory/receipts/{receipt}/product/{receivedproduct}',  [App\Http\Controllers\ReceiptController::class,'updateproduct'])->name('receipts.product.update');
    Route::delete('inventory/receipts/{receipt}/product/{receivedproduct}',  [App\Http\Controllers\ReceiptController::class,'destroyproduct'])->name('receipts.product.destroy');

    Route::resource('sales', 'App\Http\Controllers\SaleController')->except(['edit', 'update']);
    Route::get('sales/{sale}/finalize', [App\Http\Controllers\SaleController::class,'finalize'])->name('sales.finalize');
    Route::get('sales/{sale}/product/add',  [App\Http\Controllers\SaleController::class,'addproduct'])->name('sales.product.add');
    Route::get('sales/{sale}/product/{soldproduct}/edit',  [App\Http\Controllers\SaleController::class,'editproduct'])->name('sales.product.edit');
    Route::post('sales/{sale}/product',  [App\Http\Controllers\SaleController::class,'storeproduct'])->name('sales.product.store');
    Route::match(['put', 'patch'], 'sales/{sale}/product/{soldproduct}', [App\Http\Controllers\SaleController::class,'updateproduct'])->name('sales.product.update');
    Route::delete('sales/{sale}/product/{soldproduct}',  [App\Http\Controllers\SaleController::class,'destroyproduct'])->name('sales.product.destroy');

    Route::get('clients/{client}/transactions/add',  [App\Http\Controllers\ClientController::class,'addtransaction'])->name('clients.transactions.add');
    // Print Ledger
    Route::get('reference/{id}/print/report',  [App\Http\Controllers\ReferenceController::class,'printReport'])->name('reference.print.report');
    Route::get('reference/{id}/print/ledger',  [App\Http\Controllers\ReferenceController::class,'printLedger'])->name('reference.print.ledger');

    Route::get('profile', [App\Http\Controllers\ProfileController::class,'edit'])->name('profile.edit');
    Route::match(['put', 'patch'], 'profile', [App\Http\Controllers\ProfileController::class,'update'])->name('profile.update');
    Route::match(['put', 'patch'], 'profile/password', [App\Http\Controllers\ProfileController::class,'password'])->name('profile.password');
});

Route::group(['middleware' => 'auth'], function () {
    Route::get('icons', [App\Http\Controllers\PageController::class,'icons'])->name('pages.icons');
    Route::get('notifications', [App\Http\Controllers\PageController::class,'notifications'])->name('pages.notifications');
    Route::get('tables', [App\Http\Controllers\PageController::class,'tables'])->name('pages.tables');
    Route::get('typography', [App\Http\Controllers\PageController::class,'typography'])->name('ages.typography');
});