- InspectionCycle enum: 6종 점검주기 상수, 열 라벨, check_date 계산 - Equipment 모델: subManager 관계, canInspect() 권한 체크 - Template/Inspection 모델: inspection_cycle fillable 추가 - EquipmentInspectionService: 주기별 점검 조회/토글/권한 체크 - 점검표 UI: 주기 탭, 동적 필터(월/연도), 주기별 그리드 열 - 점검항목 템플릿: 주기별 탭 그룹핑, 모달에 주기 선택 - 설비 등록/수정/상세: 부 담당자 필드 추가 - 권한 없는 장비 셀 비활성(cursor-not-allowed, opacity-50)
118 lines
3.6 KiB
PHP
118 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Enums\InspectionCycle;
|
|
use App\Services\EquipmentInspectionService;
|
|
use App\Services\EquipmentRepairService;
|
|
use App\Services\EquipmentService;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\View\View;
|
|
|
|
class EquipmentController extends Controller
|
|
{
|
|
public function __construct(
|
|
private EquipmentService $equipmentService,
|
|
private EquipmentInspectionService $inspectionService,
|
|
private EquipmentRepairService $repairService
|
|
) {}
|
|
|
|
public function dashboard(Request $request): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('equipment.dashboard'));
|
|
}
|
|
|
|
$stats = $this->equipmentService->getDashboardStats();
|
|
$typeStats = $this->equipmentService->getTypeStats();
|
|
$inspectionStats = $this->inspectionService->getMonthlyStats(now()->format('Y-m'));
|
|
$recentRepairs = $this->repairService->getRecentRepairs(5);
|
|
|
|
return view('equipment.dashboard', compact('stats', 'typeStats', 'inspectionStats', 'recentRepairs'));
|
|
}
|
|
|
|
public function index(Request $request): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('equipment.index'));
|
|
}
|
|
|
|
return view('equipment.index');
|
|
}
|
|
|
|
public function create(): View
|
|
{
|
|
$users = \App\Models\User::orderBy('name')->get(['id', 'name']);
|
|
|
|
return view('equipment.create', compact('users'));
|
|
}
|
|
|
|
public function show(int $id): View
|
|
{
|
|
$equipment = $this->equipmentService->getEquipmentById($id);
|
|
|
|
if (! $equipment) {
|
|
abort(404, '설비를 찾을 수 없습니다.');
|
|
}
|
|
|
|
return view('equipment.show', compact('equipment'));
|
|
}
|
|
|
|
public function edit(int $id): View
|
|
{
|
|
$users = \App\Models\User::orderBy('name')->get(['id', 'name']);
|
|
|
|
return view('equipment.edit', compact('id', 'users'));
|
|
}
|
|
|
|
public function inspections(Request $request): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('equipment.inspections'));
|
|
}
|
|
|
|
$equipmentList = $this->equipmentService->getEquipmentList();
|
|
$cycles = InspectionCycle::all();
|
|
|
|
return view('equipment.inspections.index', compact('equipmentList', 'cycles'));
|
|
}
|
|
|
|
public function repairs(Request $request): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('equipment.repairs'));
|
|
}
|
|
|
|
$equipmentList = $this->equipmentService->getEquipmentList();
|
|
|
|
return view('equipment.repairs.index', compact('equipmentList'));
|
|
}
|
|
|
|
public function repairCreate(): View
|
|
{
|
|
$equipmentList = $this->equipmentService->getEquipmentList();
|
|
$users = \App\Models\User::orderBy('name')->get(['id', 'name']);
|
|
|
|
return view('equipment.repairs.create', compact('equipmentList', 'users'));
|
|
}
|
|
|
|
public function import(Request $request): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('equipment.import'));
|
|
}
|
|
|
|
return view('equipment.import');
|
|
}
|
|
|
|
public function guide(Request $request): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('equipment.guide'));
|
|
}
|
|
|
|
return view('equipment.guide');
|
|
}
|
|
}
|