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

70 lines
2.6 KiB
PHP

<?php
namespace Modules\IndustrialEngineering\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\IndustrialEngineering\Http\Controllers\Concerns\AuthorizesIndustrialEngineering;
use Modules\IndustrialEngineering\Models\LineRevision;
use Yajra\DataTables\Facades\DataTables;
class LineRevisionController extends Controller
{
use AuthorizesIndustrialEngineering;
public function index(Request $request)
{
$this->authorizeIe('ie.revisions.view');
$businessId = $this->businessId();
if ($request->ajax()) {
$query = LineRevision::forBusiness($businessId)
->with('lineTemplate.productPlatform');
return DataTables::of($query)
->addColumn('template_name', fn ($row) => $row->lineTemplate?->name ?? '—')
->addColumn('platform_name', fn ($row) => $row->lineTemplate?->productPlatform?->name ?? '—')
->addColumn('action', fn ($row) => '<a href="'.action([self::class, 'show'], $row->id).'" class="btn btn-xs btn-info"><i class="fa fa-code-branch"></i></a>')
->rawColumns(['action'])
->make(true);
}
return view('industrialengineering::line_revisions.index');
}
public function create()
{
$this->authorizeIe('ie.revisions.create');
$templates = \Modules\IndustrialEngineering\Models\LineTemplate::forBusiness($this->businessId())->pluck('name', 'id');
return view('industrialengineering::line_revisions.create', compact('templates'));
}
public function store(Request $request)
{
$this->authorizeIe('ie.revisions.create');
$data = $request->validate([
'line_template_id' => 'required|exists:ie_line_templates,id',
'revision_code' => 'required|string|max:50',
'name' => 'nullable|string|max:255',
'description' => 'nullable|string',
]);
$data['business_id'] = $this->businessId();
$revision = LineRevision::create($data);
return redirect()->action([self::class, 'show'], $revision->id)
->with('status', ['success' => true, 'msg' => __('industrialengineering::lang.saved')]);
}
public function show($id)
{
$this->authorizeIe('ie.revisions.view');
$revision = LineRevision::forBusiness($this->businessId())
->with(['lineTemplate.productPlatform', 'boms', 'costScenarios', 'releasePackages'])
->findOrFail($id);
return view('industrialengineering::line_revisions.show', compact('revision'));
}
}