Files
GSB-Construction/Modules/Labors/app/Http/Controllers/LaborController.php
Christopher Boyles 64d4b331a8
Some checks failed
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled
Tests / PHP 8.5 (push) Has been cancelled
Additional Changes
2026-06-02 22:04:03 +08:00

81 lines
2.6 KiB
PHP

<?php
namespace Modules\Labors\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Modules\Labors\Models\Labor;
use Modules\Labors\Models\Skill;
use Illuminate\Support\Str;
class LaborController extends Controller
{
public function index()
{
return Inertia::render('Labors::Index', [
'labors' => 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.');
}
}