96 lines
2.6 KiB
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.');
|
|
}
|
|
}
|