151 lines
3.8 KiB
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');
|
|
}
|
|
}
|
|
}
|