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

133 lines
9.0 KiB
PHP

<?php
namespace Modules\IndustrialEngineering\Http\Controllers;
use App\Http\MenuIcons;
use App\Utils\ModuleUtil;
use Illuminate\Routing\Controller;
use Menu;
use Modules\IndustrialEngineering\Http\Controllers\DashboardController as IeDashboardController;
use Modules\IndustrialEngineering\Http\Controllers\ItemMasterController;
use Modules\IndustrialEngineering\Http\Controllers\ProductHubController;
use Modules\IndustrialEngineering\Http\Controllers\ProductionLineController;
use Modules\IndustrialEngineering\Http\Controllers\LineRevisionController;
use Modules\IndustrialEngineering\Http\Controllers\BomController;
use Modules\IndustrialEngineering\Http\Controllers\CostScenarioController;
use Modules\IndustrialEngineering\Http\Controllers\ReleasePackageController;
use Modules\IndustrialEngineering\Http\Controllers\SerializedUnitController;
use Modules\IndustrialEngineering\Http\Controllers\InstalledAssetController;
use Modules\IndustrialEngineering\Http\Controllers\SourcingController;
use Modules\IndustrialEngineering\Http\Controllers\ResearchProjectController;
class DataController extends Controller
{
public function superadmin_package()
{
return [
[
'name' => 'industrial_engineering_module',
'label' => __('industrialengineering::lang.module_name'),
'default' => false,
],
];
}
public function user_permissions()
{
return [
['value' => 'ie.access', 'label' => __('industrialengineering::lang.access'), 'default' => false],
['value' => 'ie.view', 'label' => __('industrialengineering::lang.view_dashboard'), 'default' => false],
['value' => 'ie.items.view', 'label' => __('industrialengineering::lang.items_view'), 'default' => false],
['value' => 'ie.items.create', 'label' => __('industrialengineering::lang.items_create'), 'default' => false],
['value' => 'ie.platforms.view', 'label' => __('industrialengineering::lang.platforms_view'), 'default' => false],
['value' => 'ie.platforms.create', 'label' => __('industrialengineering::lang.platforms_create'), 'default' => false],
['value' => 'ie.revisions.view', 'label' => __('industrialengineering::lang.revisions_view'), 'default' => false],
['value' => 'ie.revisions.create', 'label' => __('industrialengineering::lang.revisions_create'), 'default' => false],
['value' => 'ie.bom.view', 'label' => __('industrialengineering::lang.bom_view'), 'default' => false],
['value' => 'ie.bom.create', 'label' => __('industrialengineering::lang.bom_create'), 'default' => false],
['value' => 'ie.costing.view', 'label' => __('industrialengineering::lang.costing_view'), 'default' => false],
['value' => 'ie.costing.create', 'label' => __('industrialengineering::lang.costing_create'), 'default' => false],
['value' => 'ie.release.view', 'label' => __('industrialengineering::lang.release_view'), 'default' => false],
['value' => 'ie.release.create', 'label' => __('industrialengineering::lang.release_create'), 'default' => false],
['value' => 'ie.release.approve', 'label' => __('industrialengineering::lang.release_approve'), 'default' => false],
['value' => 'ie.traceability.view', 'label' => __('industrialengineering::lang.traceability_view'), 'default' => false],
['value' => 'ie.traceability.create', 'label' => __('industrialengineering::lang.traceability_create'), 'default' => false],
['value' => 'ie.installed.view', 'label' => __('industrialengineering::lang.installed_view'), 'default' => false],
['value' => 'ie.installed.create', 'label' => __('industrialengineering::lang.installed_create'), 'default' => false],
['value' => 'ie.installed.update', 'label' => __('industrialengineering::lang.installed_update'), 'default' => false],
['value' => 'ie.sourcing.view', 'label' => __('industrialengineering::lang.sourcing_view'), 'default' => false],
['value' => 'ie.sourcing.create', 'label' => __('industrialengineering::lang.sourcing_create'), 'default' => false],
['value' => 'ie.research.view', 'label' => __('industrialengineering::lang.research_view'), 'default' => false],
['value' => 'ie.research.create', 'label' => __('industrialengineering::lang.research_create'), 'default' => false],
['value' => 'ie.cpq.view', 'label' => __('industrialengineering::lang.cpq_view'), 'default' => false],
['value' => 'ie.cpq.create', 'label' => __('industrialengineering::lang.cpq_create'), 'default' => false],
];
}
public function modifyAdminMenu()
{
if (! \Module::has('IndustrialEngineering') || ! \Module::isEnabled('IndustrialEngineering')) {
return;
}
$module_util = new ModuleUtil();
if (! $module_util->isModuleInstalled('IndustrialEngineering')) {
return;
}
$user = auth()->user();
if (! $user->can('ie.access') && ! $user->can('ie.view')) {
return;
}
Menu::modify('admin-sidebar-menu', function ($menu) {
$menu->dropdown(
__('industrialengineering::lang.module_name'),
function ($sub) {
$user = auth()->user();
if ($user->can('ie.view') || $user->can('ie.access')) {
$sub->url(action([IeDashboardController::class, 'index']), __('industrialengineering::lang.dashboard'), ['active' => request()->segment(2) == 'dashboard']);
}
if ($user->can('ie.items.view')) {
$sub->url(action([ItemMasterController::class, 'index']), __('industrialengineering::lang.item_masters'), ['active' => request()->segment(2) == 'item-masters']);
}
if ($user->can('ie.platforms.view')) {
$sub->url(action([ProductHubController::class, 'index']), __('industrialengineering::lang.products'), ['active' => in_array(request()->segment(2), ['products', 'platforms'])]);
}
if ($user->can('ie.revisions.view')) {
$sub->url(action([LineRevisionController::class, 'index']), __('industrialengineering::lang.line_revisions'), ['active' => request()->segment(2) == 'line-revisions']);
$productionLineLabel = config('menu_consolidation.unified_production_line_labels', true)
? __('lang_v1.production_lines_plm')
: __('industrialengineering::lang.production_lines');
$sub->url(action([ProductionLineController::class, 'index']), $productionLineLabel, ['active' => request()->segment(2) == 'production-lines']);
}
if ($user->can('ie.bom.view')) {
$sub->url(action([BomController::class, 'index']), __('industrialengineering::lang.boms'), ['active' => request()->segment(2) == 'boms']);
}
if ($user->can('ie.costing.view')) {
$sub->url(action([CostScenarioController::class, 'index']), __('industrialengineering::lang.cost_scenarios'), ['active' => request()->segment(2) == 'cost-scenarios']);
}
if ($user->can('ie.release.view')) {
$sub->url(action([ReleasePackageController::class, 'index']), __('industrialengineering::lang.release_packages'), ['active' => request()->segment(2) == 'release-packages']);
}
if ($user->can('ie.traceability.view')) {
$sub->url(action([SerializedUnitController::class, 'index']), __('industrialengineering::lang.serialized_units'), ['active' => request()->segment(2) == 'serialized-units']);
}
if ($user->can('ie.installed.view')) {
$sub->url(action([InstalledAssetController::class, 'index']), __('industrialengineering::lang.installed_assets'), ['active' => request()->segment(2) == 'installed-assets']);
$sub->url(action([InstalledAssetController::class, 'lookup']), __('industrialengineering::lang.lookup'), ['active' => request()->segment(2) == 'lookup']);
}
if ($user->can('ie.sourcing.view')) {
$sub->url(action([SourcingController::class, 'index']), __('industrialengineering::lang.sourcing'), ['active' => request()->segment(2) == 'sourcing']);
}
if ($user->can('ie.research.view')) {
$sub->url(action([ResearchProjectController::class, 'index']), __('industrialengineering::lang.research'), ['active' => request()->segment(2) == 'research']);
}
},
['icon' => MenuIcons::svg('diagram'), 'active' => request()->segment(1) == 'industrial-engineering', 'data-module' => 'IndustrialEngineering', 'data-menu-group' => 'engineering']
)->order(86);
});
}
}