feat: implement core ERP modules, multi-tenant architecture, and comprehensive system workflow documentation.
This commit is contained in:
@@ -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'])
|
||||
: [],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user