You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.9 KiB
66 lines
1.9 KiB
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Employee;
|
|
use Illuminate\Http\Request;
|
|
use Inertia\Inertia;
|
|
|
|
class EmployeeController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$data = Employee::when($request->sort_by, function ($query, $value) {
|
|
$query->orderBy($value, request('order_by', 'asc'));
|
|
})
|
|
->when(!isset($request->sort_by), function ($query) {
|
|
$query->latest();
|
|
})
|
|
->when($request->search, function ($query, $value) {
|
|
$query->where('name', 'LIKE', '%'.$value.'%');
|
|
})
|
|
->paginate($request->page_size ?? 10);
|
|
return Inertia::render('employee/index', [
|
|
'items' => $data,
|
|
]);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$data = $this->validate($request, [
|
|
'name' => 'required|string',
|
|
'job_title' => 'required|string',
|
|
'email' => 'required|email',
|
|
'address' => 'required|string',
|
|
]);
|
|
Employee::create($data);
|
|
return redirect()->back()->with('message', [
|
|
'type' => 'success',
|
|
'text' => 'Success create employee!',
|
|
]);
|
|
}
|
|
|
|
public function update(Employee $employee, Request $request)
|
|
{
|
|
$data = $this->validate($request, [
|
|
'name' => 'required|string',
|
|
'job_title' => 'required|string',
|
|
'email' => 'required|email',
|
|
'address' => 'required|string'
|
|
]);
|
|
$employee->update($data);
|
|
return redirect()->back()->with('message', [
|
|
'type' => 'success',
|
|
'text' => 'Success edit employee!',
|
|
]);
|
|
}
|
|
|
|
public function destroy(Employee $employee)
|
|
{
|
|
$employee->delete();
|
|
return redirect()->back()->with('message', [
|
|
'type' => 'success',
|
|
'text' => 'Success delete employee!',
|
|
]);
|
|
}
|
|
}
|