<?php

$routes->group('api', static function ($routes) {
    
    // ===== STOCK MANAGEMENT (PRIMARY CRITICAL) =====
    $routes->resource('stock', ['controller' => 'StockController']);
    $routes->get('stock/item/(:num)/available', 'StockController::available/$1');
    $routes->post('stock/deduct', 'StockController::deduct');
    $routes->post('stock/reserve', 'StockController::reserve');
    $routes->post('stock/unreserve', 'StockController::unreserve');
    $routes->get('stock/fifo-matrix', 'StockController::fifoMatrix');
    $routes->get('stock/valuation', 'StockController::valuation');
    $routes->post('stock/mark-defective', 'StockController::markDefective');
    $routes->get('stock/(:num)/transactions', 'StockController::transactions/$1');
    $routes->post('stock/adjust', 'StockController::adjust');
    $routes->get('stock/low-stock', 'StockController::lowStock');
    $routes->get('stock/search', 'StockController::search');

    // ===== INDENT MANAGEMENT (APPROVAL WORKFLOW) =====
    $routes->resource('indents', ['controller' => 'IndentController']);
    $routes->post('indents/(:num)/items', 'IndentController::addItem/$1');
    $routes->delete('indents/(:num)/items/(:num)', 'IndentController::removeItem/$1/$2');
    $routes->post('indents/(:num)/submit', 'IndentController::submit/$1');
    $routes->post('indents/(:num)/approve', 'IndentController::approve/$1');
    $routes->post('indents/(:num)/reject', 'IndentController::reject/$1');
    $routes->post('indents/(:num)/cancel', 'IndentController::cancel/$1');
    $routes->post('indents/(:num)/fulfill', 'IndentController::fulfill/$1');
    $routes->get('indents/pending-approval', 'IndentController::pendingApproval');
    $routes->get('indents/draft/(:num)', 'IndentController::drafts/$1');

    // ===== GRN MANAGEMENT (QC WORKFLOW) =====
    $routes->resource('grn', ['controller' => 'GRNController']);
    $routes->post('grn/(:num)/start-qc', 'GRNController::startQC/$1');
    $routes->post('grn/(:num)/pass-qc', 'GRNController::passQC/$1');
    $routes->post('grn/(:num)/reject-items', 'GRNController::rejectItems/$1');
    $routes->post('grn/(:num)/accept', 'GRNController::accept/$1');
    $routes->post('grn/(:num)/reverse', 'GRNController::reverse/$1');
    $routes->get('grn/pending-qc', 'GRNController::pendingQC');
    $routes->get('grn/in-progress-qc', 'GRNController::inProgressQC');
    $routes->get('grn/(:num)/approvals', 'GRNController::approvals/$1');

    // ===== MATERIAL ISSUE MANAGEMENT (FIFO TRACKING) =====
    $routes->resource('material-issues', ['controller' => 'MaterialIssueController']);
    $routes->post('material-issues/(:num)/items', 'MaterialIssueController::addItem/$1');
    $routes->post('material-issues/(:num)/process', 'MaterialIssueController::process/$1');
    $routes->post('material-issues/(:num)/return', 'MaterialIssueController::returnItem/$1');
    $routes->post('material-issues/(:num)/cancel', 'MaterialIssueController::cancel/$1');
    $routes->get('material-issues/pending/(:num)', 'MaterialIssueController::pending/$1');
    $routes->get('material-issues/issued', 'MaterialIssueController::issued');
    $routes->get('material-issues/fifo-matrix', 'MaterialIssueController::fifoMatrix');

    // ===== WAREHOUSE MANAGEMENT =====
    $routes->resource('warehouses', ['controller' => 'WarehouseController']);
    $routes->post('warehouses/(:num)/bins', 'WarehouseController::createBin/$1');
    $routes->get('warehouses/(:num)/utilization', 'WarehouseController::utilization/$1');

    // ===== STOCK TRANSFER MANAGEMENT =====
    $routes->resource('transfers', ['controller' => 'StockTransferController']);
    $routes->post('transfers/(:num)/items', 'StockTransferController::addItem/$1');
    $routes->post('transfers/(:num)/dispatch', 'StockTransferController::dispatch/$1');
    $routes->post('transfers/(:num)/receive', 'StockTransferController::receive/$1');
    $routes->get('transfers/pending-dispatch/(:num)', 'StockTransferController::pendingDispatch/$1');
    $routes->get('transfers/pending-receipt/(:num)', 'StockTransferController::pendingReceipt/$1');

    // ===== ANALYTICS & REPORTING =====
    $routes->get('analytics/dashboard', 'StockAnalyticsController::dashboard');
    $routes->get('analytics/low-stock', 'StockAnalyticsController::lowStock');
    $routes->get('analytics/slow-moving', 'StockAnalyticsController::slowMoving');
    $routes->get('analytics/stock-movement', 'StockAnalyticsController::stockMovement');
    $routes->get('analytics/valuation-category', 'StockAnalyticsController::valuationByCategory');
    $routes->get('analytics/valuation-warehouse', 'StockAnalyticsController::valuationByWarehouse');
    $routes->get('analytics/abc-analysis', 'StockAnalyticsController::abcAnalysis');
    $routes->get('analytics/expiring-stock', 'StockAnalyticsController::expiringStock');
    $routes->get('analytics/defective-stock', 'StockAnalyticsController::defectiveStock');
    $routes->get('analytics/reserved-stock', 'StockAnalyticsController::reservedStock');
    $routes->get('analytics/report', 'StockAnalyticsController::report');
    $routes->get('analytics/health-check', 'StockAnalyticsController::healthCheck');
});
