get(); return view('pages.admin.users.index', compact('roles')); } public function getDataUser() { $users = User::with('role')->latest()->get(); return datatables()->of($users) ->addColumn('rolenya', function ($users) { $roles = ''; foreach ($users->role as $role) { $roles .= '' . $role->name . ' '; } return $roles; }) ->addColumn('action', function ($users) { return ' '; }) ->addColumn('updated_atnya', function ($users) { return tanggal_indonesia($users->updated_at) . ' ' . $users->updated_at->format('H:i:s'); }) ->rawColumns(['action' => 'action', 'rolenya' => 'rolenya', 'updated_atnya' => 'updated_atnya']) ->addIndexColumn() ->make(true); } /** * Store a newly created resource in storage. */ public function store(Request $request) { // validation $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|email|unique:users', 'password' => 'required|min:8|confirmed', 'role_id' => 'required' ], [ 'name.required' => 'Nama tidak boleh kosong!', 'email.required' => 'Email tidak boleh kosong!', 'email.email' => 'Email tidak valid!', 'email.unique' => 'Email sudah terdaftar!', 'password.required' => 'Password tidak boleh kosong!', 'password.min' => 'Password minimal 8 karakter!', 'password.confirmed' => 'Password tidak sama!', 'role_id.required' => 'Role tidak boleh kosong!', ]); // check validation if ($validator->fails()) { return ResponseFormatter::error($validator->errors()->first()); } try { DB::beginTransaction(); // create new account $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request->password), ]); // Create role for user foreach ($request->role_id as $key => $value) { $role = Role::findOrFail($value); // Pengunjung $user->assignRole($role); } DB::commit(); return ResponseFormatter::success($user, "User berhasil ditambahkan"); } catch (\Throwable $th) { DB::rollBack(); return ResponseFormatter::error($th->getMessage()); } } /** * Display the specified resource. */ public function show(string $id) { // } /** * Show the form for editing the specified resource. */ public function edit(string $id) { // get data from user $user = User::with('role')->findOrFail($id); return ResponseFormatter::success([ 'user' => $user ]); } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { // validation $validator = Validator::make($request->all(), [ 'name_edit' => 'required', 'email_edit' => 'required|email|unique:users,email,' . $id, 'role_id_edit' => 'required' ], [ 'name_edit.required' => 'Nama tidak boleh kosong!', 'email_edit.required' => 'Email tidak boleh kosong!', 'email_edit.email' => 'Email tidak valid!', 'email_edit.unique' => 'Email sudah terdaftar!', 'role_id.required' => 'Role tidak boleh kosong!', ]); // check validation if ($validator->fails()) { return ResponseFormatter::error($validator->errors()->first()); } try { DB::beginTransaction(); // create new account $user = User::findOrFail($id); $user->update([ 'name' => $request->name_edit, 'email' => $request->email_edit, ]); // Password change if ($request->password_edit) { $user->update([ 'password' => bcrypt($request->password_edit), ]); } // Delete role for user $user->roles()->detach(); // Assing role for user foreach ($request->role_id_edit as $key => $value) { $role = Role::findOrFail($value); // Pengunjung $user->assignRole($role); } DB::commit(); return ResponseFormatter::success($user, "User berhasil diubah"); } catch (\Throwable $th) { DB::rollBack(); return ResponseFormatter::error($th->getMessage()); } } /** * Remove the specified resource from storage. */ public function destroy(string $id) { // get data from user $user = User::findOrFail($id); // check user if (!$user) { return ResponseFormatter::error("Data pengguna tidak ditemukan!"); } // delete user $user->delete(); return ResponseFormatter::success(null, "User berhasil dihapus!"); } }