TIF_E41210178/app/Http/Controllers/Admin/UserController.php

143 lines
5.2 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Models\Role;
use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
public function index()
{
$user = User::where('role_id', '!=', 1)->get();
$role = Role::all()->sortByDesc('id');
return view('admin2.pages.user', [
'user' => $user,
'role' => $role
]);
}
public function store(Request $request){
try {
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email',
'image' => 'required|image|mimes:jpeg,png,jpg|max:20000',
'password' => 'required|string',
'role_id' => 'required|numeric'
], [
'name.required' => 'Nama harus diisi',
'name.string' => 'Nama harus berupa string',
'name.max' => 'Nama maksimal 255 karakter',
'email.required' => 'Email harus diisi',
'email.email' => 'Email tidak valid',
'image.required' => 'Image harus diisi',
'image.image' => 'File harus berupa gambar',
'image.mimes' => 'File harus berupa jpeg, png, atau jpg',
'image.max' => 'File maksimal 20MB',
'password.required' => 'Password harus diisi',
'password.string' => 'Password harus berupa string',
'role_id.required' => 'Role harus diisi',
'role_id.numeric' => 'Role harus berupa angka'
]);
$image = $request->file('image');
$image_name = time() . '.' . $image->getClientOriginalExtension();
$image_path = public_path('images/user/') . $image_name;
$image->move(public_path('images/user/'), $image_name);
$user = new User();
$user->name = $request->name;
$user->image = $image_name;
$user->email = $request->email;
$user->password = bcrypt($request->password);
$user->role_id = $request->role_id;
$user->save();
return redirect()->back()->with('success', 'User berhasil ditambahkan');
} catch (\Exception $e) {
return redirect()->back()->with('error', $e->getMessage());
}
}
public function update(Request $request, $id){
try {
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email',
'role_id' => 'required|numeric'
], [
'name.required' => 'Nama harus diisi',
'name.string' => 'Nama harus berupa string',
'name.max' => 'Nama maksimal 255 karakter',
'email.required' => 'Email harus diisi',
'email.email' => 'Email tidak valid',
'role_id.required' => 'Role harus diisi',
'role_id.numeric' => 'Role harus berupa angka'
]);
if ($request->password) {
$request->validate([
'password' => 'required|string'
], [
'password.required' => 'Password harus diisi',
'password.string' => 'Password harus berupa string'
]);
}
if ($request->file('image')) {
$request->validate([
'image' => 'required|image|mimes:jpeg,png,jpg|max:20000',
], [
'image.required' => 'Image harus diisi',
'image.image' => 'File harus berupa gambar',
'image.mimes' => 'File harus berupa jpeg, png, atau jpg',
'image.max' => 'File maksimal 20MB',
]);
$image = $request->file('image');
$image_name = time() . '.' . $image->getClientOriginalExtension();
$image_path = public_path('images/user/') . $image_name;
$image->move(public_path('images/user/'), $image_name);
}
$user = User::find($id);
$user->name = $request->name;
if ($request->file('image')) {
$user->image = $image_name;
}
if ($request->password) {
$user->password = bcrypt($request->password);
}
$user->email = $request->email;
$user->role_id = $request->role_id;
$user->save();
return redirect()->back()->with('success', 'User berhasil diubah');
} catch (\Exception $e) {
return redirect()->back()->with('error', $e->getMessage());
}
}
public function destroy($id){
try {
$user = User::find($id);
// hapus gambar
$image_path = public_path('images/user/') . $user->image;
if (file_exists($image_path)) {
unlink($image_path);
}
$user->delete();
return redirect()->back()->with('success', 'User berhasil dihapus');
} catch (\Exception $e) {
return redirect()->back()->with('error', $e->getMessage());
}
}
}