Labor::with('skills')->latest()->get(), 'skills' => Skill::orderBy('name')->get(), ]); } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'category' => 'required|string|in:skilled,unskilled', 'hourly_rate' => 'required|numeric|min:0', 'status' => 'required|string|in:active,inactive', 'skills' => 'nullable|array', 'skills.*' => 'integer|exists:skills,id', ]); \DB::transaction(function () use ($validated) { $labor = Labor::create([ 'ulid' => (string) Str::ulid(), 'name' => $validated['name'], 'category' => $validated['category'], 'hourly_rate' => $validated['hourly_rate'], 'status' => $validated['status'], ]); if (!empty($validated['skills'])) { $labor->skills()->sync($validated['skills']); } }); return redirect()->back()->with('success', 'Labor record created successfully.'); } public function update(Request $request, Labor $labor) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'category' => 'required|string|in:skilled,unskilled', 'hourly_rate' => 'required|numeric|min:0', 'status' => 'required|string|in:active,inactive', 'skills' => 'nullable|array', 'skills.*' => 'integer|exists:skills,id', ]); \DB::transaction(function () use ($labor, $validated) { $labor->update([ 'name' => $validated['name'], 'category' => $validated['category'], 'hourly_rate' => $validated['hourly_rate'], 'status' => $validated['status'], ]); $labor->skills()->sync($validated['skills'] ?? []); }); return redirect()->back()->with('success', 'Labor record updated successfully.'); } public function destroy(Labor $labor) { $labor->delete(); return redirect()->back()->with('success', 'Labor record deleted successfully.'); } }