feat: implement core ERP modules, multi-tenant architecture, and comprehensive system workflow documentation.

This commit is contained in:
Ajjj
2026-08-05 01:18:31 +08:00
parent 1fcb468dc1
commit c03de704e2
46 changed files with 1902 additions and 387 deletions

View File

@@ -8,6 +8,7 @@ use Modules\ApprovalWorkflow\Models\ApprovalChain;
use Modules\ContractorManagement\Models\Contractor;
use Modules\MaterialLogistics\Models\MaterialRequisition;
use Modules\MaterialLogistics\Models\PurchaseOrder;
use Modules\ProjectManagement\Models\Project;
class HandleInertiaRequests extends Middleware
{
@@ -44,12 +45,46 @@ class HandleInertiaRequests extends Middleware
'success' => $request->session()->get('success'),
'error' => $request->session()->get('error'),
],
'sidebarBadges' => fn () => $request->user() ? [
'pending_requisitions' => MaterialRequisition::where('status', 'draft')->count(),
'pending_purchase_orders' => PurchaseOrder::where('status', 'draft')->count(),
'pending_approvals' => ApprovalChain::where('status', 'pending')->count(),
] : null,
'sidebarBadges' => fn () => $request->user() ? (function () use ($request) {
$user = $request->user();
// Drafts belong to their creator. Submitted requests are
// relevant only when the current user is an assigned approver.
$ownDraftRequisitions = MaterialRequisition::where('status', 'draft')
->where('requested_by', $user->id)
->count();
$assignedRequisitionApprovals = ApprovalChain::where('status', 'pending')
->where('type', 'material_requisition')
->whereHas('steps', function ($query) use ($user) {
$query->where('approver_id', $user->id)
->where('status', 'pending');
})
->count();
$ownDraftPurchaseOrders = PurchaseOrder::where('status', 'draft')
->where('requested_by', $user->id)
->count();
$assignedApprovals = ApprovalChain::where('status', 'pending')
->whereHas('steps', function ($query) use ($user) {
$query->where('approver_id', $user->id)
->where('status', 'pending');
})
->count();
return [
'pending_requisitions' => $ownDraftRequisitions + $assignedRequisitionApprovals,
'pending_purchase_orders' => $ownDraftPurchaseOrders,
'pending_approvals' => $assignedApprovals,
];
})() : null,
'projectOptions' => fn () => $request->user()
? Project::where('current_wizard_step', '>=', 7)
->whereHas('bidPackages')
->with('parentProject:id,ulid,name,code')
->get(['id', 'ulid', 'name', 'code', 'project_type', 'parent_project_id', 'status'])
: [],
];
}
}