ultimatepos/Modules/IndustrialEngineering/Http/Controllers/DashboardController.php

52 lines
2.3 KiB
PHP

<?php
namespace Modules\IndustrialEngineering\Http\Controllers;
use Illuminate\Routing\Controller;
use Modules\IndustrialEngineering\Http\Controllers\Concerns\AuthorizesIndustrialEngineering;
use Modules\IndustrialEngineering\Models\Bom;
use Modules\IndustrialEngineering\Models\CostScenario;
use Modules\IndustrialEngineering\Models\CustomerInstalledAsset;
use Modules\IndustrialEngineering\Models\ProductPlatform;
use Modules\IndustrialEngineering\Models\LineTemplate;
use Modules\IndustrialEngineering\Models\ItemMaster;
use Modules\IndustrialEngineering\Models\LineRevision;
use Modules\IndustrialEngineering\Models\ReleasePackage;
use Modules\IndustrialEngineering\Models\ResearchProject;
use Modules\IndustrialEngineering\Models\SerializedUnit;
use Modules\IndustrialEngineering\Models\SupplierSourcingCase;
use Modules\IndustrialEngineering\Services\DigitalThreadAnalyticsService;
class DashboardController extends Controller
{
use AuthorizesIndustrialEngineering;
public function __construct(protected DigitalThreadAnalyticsService $analytics)
{
}
public function index()
{
$this->authorizeIe('ie.view');
$businessId = $this->businessId();
$stats = [
'products' => ProductPlatform::forBusiness($businessId)->count(),
'production_lines' => LineTemplate::forBusiness($businessId)->whereNull('parent_template_id')->count(),
'item_masters' => ItemMaster::forBusiness($businessId)->count(),
'line_revisions' => LineRevision::forBusiness($businessId)->count(),
'boms' => Bom::forBusiness($businessId)->count(),
'cost_scenarios' => CostScenario::forBusiness($businessId)->count(),
'release_packages' => ReleasePackage::forBusiness($businessId)->count(),
'serialized_units' => SerializedUnit::forBusiness($businessId)->count(),
'installed_assets' => CustomerInstalledAsset::forBusiness($businessId)->count(),
'sourcing_cases' => SupplierSourcingCase::forBusiness($businessId)->where('status', 'open')->count(),
'research_projects' => ResearchProject::forBusiness($businessId)->where('status', 'active')->count(),
];
$thread = $this->analytics->dashboard($businessId);
return view('industrialengineering::dashboard.index', compact('stats', 'thread'));
}
}