TIFNJK_E41222887/app/Http/Controllers/Admin/EmployeeController.php

96 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Employee;
use App\Models\User;
use App\Http\Requests\StoreEmployeeRequest;
use App\Http\Requests\UpdateEmployeeRequest;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Inertia\Inertia;
class EmployeeController extends Controller
{
public function index()
{
$employees = Employee::with('user')
->latest()
->paginate(10);
return Inertia::render('admin/employees/index', [
'employees' => $employees
]);
}
public function create()
{
return Inertia::render('admin/employees/create');
}
public function store(StoreEmployeeRequest $request)
{
DB::transaction(function () use ($request) {
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
'role' => 'employee',
]);
$user->employee()->create([
'nip' => $request->nip,
'position' => $request->position,
'status' => $request->status,
'join_date' => $request->join_date,
]);
});
return redirect()->route('admin.employees.index')
->with('success', 'Karyawan berhasil ditambahkan.');
}
public function edit(Employee $employee)
{
$employee->load('user');
return Inertia::render('admin/employees/edit', [
'employee' => $employee
]);
}
public function update(UpdateEmployeeRequest $request, Employee $employee)
{
DB::transaction(function () use ($request, $employee) {
// Update User Data
$userData = [
'name' => $request->name,
'email' => $request->email,
];
if ($request->filled('password')) {
$userData['password'] = Hash::make($request->password);
}
$employee->user->update($userData);
// Update Employee Data
$employee->update([
'nip' => $request->nip,
'position' => $request->position,
'status' => $request->status,
'join_date' => $request->join_date,
]);
});
return redirect()->route('admin.employees.index')
->with('success', 'Data karyawan diperbarui.');
}
public function destroy(Employee $employee)
{
$employee->user->delete();
return back()->with('success', 'Karyawan dihapus.');
}
}