125 lines
3.7 KiB
PHP
125 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Kategori;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Inertia\Inertia;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
return Inertia::render('Admin/User', [
|
|
"kategori" => Kategori::all(),
|
|
]);
|
|
}
|
|
|
|
public function getUser(Request $request)
|
|
{
|
|
try {
|
|
//code...
|
|
$user = User::orderBy('created_at', 'DESC');
|
|
|
|
$user->with(['kategori']);
|
|
|
|
if ($request->has('search')) {
|
|
$user->where('name', 'like', '%' . $request->search . '%');
|
|
}
|
|
|
|
return response()->json([
|
|
"status" => "success",
|
|
"message" => "Data user berhasil diambil",
|
|
"result" => $user->paginate(10)
|
|
], 200);
|
|
} catch (\Throwable $th) {
|
|
//throw $th;
|
|
return response()->json([
|
|
"status" => "error",
|
|
"message" => $th->getMessage(),
|
|
], 400);
|
|
}
|
|
}
|
|
|
|
public function storeUser(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'name' => 'required|string|max:50',
|
|
'email' => 'required|max:50|email|unique:users,email',
|
|
'password' => 'required',
|
|
'roles' => 'required',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(['message' => 'Validation failed', 'errors' => $validator->errors()->first()], 400);
|
|
}
|
|
|
|
$data = new User;
|
|
$data->name = $request->name;
|
|
$data->email = $request->email;
|
|
$data->password = bcrypt($request->password);
|
|
$data->role = $request->roles;
|
|
|
|
if ($request->has('category') || $request->category !== null || $request->category !== "") {
|
|
$data->kategori_id = $request->category;
|
|
}
|
|
|
|
$data->save();
|
|
|
|
// Berikan respon dengan data yang berhasil dibuat
|
|
return response()->json(['message' => 'Data created successfully', 'data' => $data], 201);
|
|
}
|
|
|
|
public function updateUser(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'id' => 'required',
|
|
'name' => 'required|string|max:50',
|
|
'email' => 'required|max:50|email|unique:users,email, ' . $request->id,
|
|
'roles' => 'required',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json(['message' => 'Validation failed', 'errors' => $validator->errors()->first()], 400);
|
|
}
|
|
|
|
$user = User::find($request->id);
|
|
|
|
if (!$user) {
|
|
return response()->json(['message' => 'Data not found'], 404);
|
|
}
|
|
|
|
$user->name = $request->name;
|
|
$user->email = $request->email;
|
|
if ($request->has('password') && $request->password !== "" && $request->password !== null) {
|
|
$request['password'] = bcrypt($request->password);
|
|
$user->password = $request->password;
|
|
}
|
|
|
|
if ($request->has('category') || $request->category !== null || $request->category !== "") {
|
|
$user->kategori_id = $request->category;
|
|
}
|
|
|
|
$user->role = $request->roles;
|
|
$user->save();
|
|
|
|
return response()->json(['message' => 'Data updated successfully', 'data' => $user], 200);
|
|
}
|
|
|
|
public function deleteUser(Request $request)
|
|
{
|
|
$user = User::find($request->id);
|
|
|
|
if (!$user) {
|
|
return response()->json(['message' => 'Data not found'], 404);
|
|
}
|
|
|
|
$user->delete();
|
|
|
|
return response()->json(['message' => 'Data deleted successfully'], 200);
|
|
}
|
|
}
|