MIF_E31210287/app/Http/Controllers/UserController.php

151 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Database\QueryException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
use Yajra\DataTables\Facades\DataTables;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(Request $request)
{
if ($request->ajax()) {
$data = User::select('*')->whereIn('level', [1,2])->orderBy('created_at', 'desc');
// Convert the Eloquent Collection to a regular PHP array
$data->each(function ($item, $key) {
$item->rowIndex = $key + 1;
});
return DataTables::eloquent($data)
->addIndexColumn()
->addColumn('role', function($row){
if ($row->level == 1) {
return 'Admin';
} else {
return 'User';
}
})
->rawColumns(['role'])
->make(true);
}
return view('main.user');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('main.add-user');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'level' => 'required',
'email' => 'required',
'password' => 'required'
]);
if($validator->fails())
{
return redirect()->back()->with('error', 'Terjadi kesalahan pada penambahan data');
}
$post = new User([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => Hash::make($request->input('password')),
'level' => $request->input('level')
]);
$check = User::where('name', $request->input('name'))->count();
if($check == 0) {
if($post->save()) {
return redirect()->route('user')->with('success' , 'Data berhasil ditambahkan');
} else {
return redirect()->route('user')->with('error' , 'Data gagal ditambahkan');
}
} else {
return redirect()->route('user')->with('error' , 'Data yang diproses telah ada sebelumnya');
}
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$user = User::find($id);
if($user) {
return view('main.edit-user', compact('user', 'id'));
} else {
return redirect()->back()->with('error' , 'Data tidak ditemukan.')->withInput();
}
}
public function update(Request $request, $id)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'level' => 'required',
]);
if ($validator->fails()) {
return redirect()->back()->with('error' , 'Terdapat inputan yang masih kosong.')->withInput();
}
// Cari data berdasarkan ID
$user = User::find($id);
// Jika data ditemukan
if ($user) {
// Update data dengan data baru dari form yang telah dibersihkan
$user->name = $request->input('name');
$user->email = $request->input('email');
!empty($request->input('password')) ? $user->password = bcrypt($request->input('password')) : $user->password;
$user->level = $request->input('level');
// Simpan perubahan pada database
$user->save();
return redirect()->route('user')->with('success', 'Berhasil diperbarui');
} else {
return redirect()->route('user')->with('error' , 'Gagal diperbarui');
}
}
/**
* Remove the specified resource from storage.
*/
public function delete($id)
{
$user = User::find($id);
// Jika data ditemukan
if ($user) {
// Hapus data dari database
$user->delete();
return redirect()->route('user')->with('success', 'Berhasil dihapus akun!');
} else {
return redirect()->route('user')->with('error', 'Terjadi kesalahan');
}
}
}