authorizeTmsAccess('tms.vehicles.view'); $business_id = $this->tmsUtil->getBusinessId(); if ($request->ajax()) { $query = Vehicle::where('business_id', $business_id)->orderBy('plate_number'); if ($request->boolean('active_only')) { $query->where('is_active', true); } $types = $this->tmsUtil->vehicleTypes(); $statuses = $this->tmsUtil->vehicleStatuses(); return DataTables::of($query) ->editColumn('vehicle_type', fn ($row) => $types[$row->vehicle_type] ?? $row->vehicle_type) ->editColumn('status', fn ($row) => $statuses[$row->status] ?? $row->status) ->editColumn('is_active', fn ($row) => $row->is_active ? __('tms::lang.active') : __('tms::lang.inactive')) ->addColumn('action', function ($row) { $html = '
'; if (auth()->user()->can('tms.vehicles.update')) { $html .= ''; } if (auth()->user()->can('tms.vehicles.delete')) { $html .= ' '; } $html .= '
'; return $html; }) ->rawColumns(['action']) ->make(true); } return view('tms::vehicles.index'); } public function create() { $this->authorizeTmsAccess('tms.vehicles.create'); return view('tms::vehicles.create', [ 'vehicle_types' => $this->tmsUtil->vehicleTypes(), 'vehicle_statuses' => $this->tmsUtil->vehicleStatuses(), ]); } public function store(Request $request) { $this->authorizeTmsAccess('tms.vehicles.create'); $business_id = $this->tmsUtil->getBusinessId(); $data = $request->validate([ 'plate_number' => 'required|string|max:50', 'vehicle_type' => 'required|string|max:50', 'brand' => 'nullable|string|max:100', 'model' => 'nullable|string|max:100', 'capacity_weight' => 'nullable|numeric|min:0', 'capacity_volume' => 'nullable|numeric|min:0', 'status' => 'required|string|max:50', 'notes' => 'nullable|string', 'is_active' => 'sometimes|boolean', ]); Vehicle::create(array_merge($data, [ 'business_id' => $business_id, 'is_active' => $request->boolean('is_active', true), ])); return $this->tmsUtil->jsonOrRedirect($request, true, __('tms::lang.vehicle_created')); } public function edit($id) { $this->authorizeTmsAccess('tms.vehicles.update'); $vehicle = Vehicle::where('business_id', $this->tmsUtil->getBusinessId())->findOrFail($id); return view('tms::vehicles.edit', [ 'vehicle' => $vehicle, 'vehicle_types' => $this->tmsUtil->vehicleTypes(), 'vehicle_statuses' => $this->tmsUtil->vehicleStatuses(), ]); } public function update(Request $request, $id) { $this->authorizeTmsAccess('tms.vehicles.update'); $vehicle = Vehicle::where('business_id', $this->tmsUtil->getBusinessId())->findOrFail($id); $data = $request->validate([ 'plate_number' => 'required|string|max:50', 'vehicle_type' => 'required|string|max:50', 'brand' => 'nullable|string|max:100', 'model' => 'nullable|string|max:100', 'capacity_weight' => 'nullable|numeric|min:0', 'capacity_volume' => 'nullable|numeric|min:0', 'status' => 'required|string|max:50', 'notes' => 'nullable|string', 'is_active' => 'sometimes|boolean', ]); $vehicle->update(array_merge($data, ['is_active' => $request->boolean('is_active')])); return $this->tmsUtil->jsonOrRedirect($request, true, __('tms::lang.vehicle_updated')); } public function destroy(Request $request, $id) { $this->authorizeTmsAccess('tms.vehicles.delete'); $vehicle = Vehicle::where('business_id', $this->tmsUtil->getBusinessId())->findOrFail($id); $vehicle->delete(); return $this->tmsUtil->jsonOrRedirect($request, true, __('tms::lang.vehicle_deleted')); } }