<?php
namespace App\Http\Controllers;
use App\Helpers\RoleHelper;
use App\Models\Petugas;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use Illuminate\Routing\UrlGenerator;
class AdminController extends Controller
{
/**
* Display a listing of the resource.
*/
public $breadcrumbs;
public $title = "Admin";
public $url = "admin";
public $menu = "admin";
public function __construct(UrlGenerator $urlGenerator)
{
$this->breadcrumbs = [
['title' => 'Home', 'url' => $urlGenerator->route('dashboard')],
['title' => 'Pengaturan Aplikasi', 'url' => "#"],
['title' => $this->title, 'url' => $urlGenerator->route($this->url.'.index')],
];
}
public function index()
{
if(!Auth()->user()->can('view '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
$breadcrumbs = $this->breadcrumbs;
$title = $this->title;
$url = $this->url;
$menu = $this->menu;
$datas = User::role('Admin')->get();
return view('pages.admin.index', compact('title', 'url', 'menu', 'datas', 'breadcrumbs'));
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
if(!Auth()->user()->can('create '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
$breadcrumbs = $this->breadcrumbs;
$title = $this->title;
$url = $this->url;
$menu = $this->menu;
return view('pages.admin.create', compact('title', 'url', 'menu', 'breadcrumbs'));
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
if(!Auth()->user()->can('create '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
if ($request->password != $request->c_password) {
return back()->with('error', 'Mohon Periksa Kembali Password Yang Anda Masukkan')->withInput();
}
$request->validate([
'nama' => 'required',
'email' => 'required|unique:users,email',
'no_hp_siswa' => 'required|unique:petugas,no_hp',
// 'password' => 'required',
// 'c_password' => 'required|same:password',
]);
DB::beginTransaction();
try {
$admin = User::create([
'nama' => $request->nama,
'email' => $request->email,
// 'no_hp_siswa' => $request->no_hp_siswa,
// 'password' => bcrypt($request->password),
]);
$petugas = Petugas::where('user_id', $admin->id)->first();
$petugasAdmin = new Petugas();
$petugasAdmin->user_id = $admin->id;
$petugasAdmin->nama_petugas = $request->nama;
$petugasAdmin->no_hp = $request->no_hp_siswa;
$petugasAdmin->alamat = "A";
$petugasAdmin->jenis_kelamin = "Laki-Laki";
$petugasAdmin->tanggal_lahir = "2000-01-01";
$petugasAdmin->save();
$admin->assignRole('Admin');
DB::commit();
return redirect()->route('admin.index')->with('success','Berhasil menambahkan user');
} catch (\Throwable $th) {
//throw $th;
DB::rollback();
Log::error($th);
return back()->with('error','Gagal menambahkan user : ' . $th->getMessage())->withInput();
}
}
/**
* Display the specified resource.
*/
public function show(User $admin)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(User $admin)
{
if(!Auth()->user()->can('edit '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
$breadcrumbs = $this->breadcrumbs;
$title = $this->title;
$url = $this->url;
$menu = $this->menu;
return view('pages.admin.edit', compact('title', 'url', 'menu', 'admin', 'breadcrumbs'));
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, User $admin)
{
if(!Auth()->user()->can('edit '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
$request->validate([
'nama' => 'required',
'email' => 'required|unique:users,email,'.$admin->id,
'no_hp_siswa' => 'required|unique:petugas,no_hp',
// 'password' => 'nullable|string',
]);
DB::beginTransaction();
try {
// if($request->password){
// if ($request->password != $request->c_password) {
// return back()->with('error', 'Mohon Periksa Kembali Password Yang Anda Masukkan')->withInput();
// }
// $admin->update([
// 'password' => bcrypt($request->password),
// ]);
// }
$admin->update([
'nama' => $request->nama,
'email' => $request->email,
// 'no_hp_siswa' => $request->no_hp_siswa,
]);
$petugas = Petugas::where('user_id', $admin->id)->first();
if($petugas) {
$petugasAdmin = Petugas::find($petugas->id);
} else {
$petugasAdmin = new Petugas();
}
$petugasAdmin->user_id = $admin->id;
$petugasAdmin->nama_petugas = $request->nama;
$petugasAdmin->no_hp = $request->no_hp_siswa;
$petugasAdmin->alamat = "A";
$petugasAdmin->jenis_kelamin = "Laki-laki";
$petugasAdmin->tanggal_lahir = "2000-01-01";
$petugasAdmin->save();
// $petuga->user->syncRoles('Petugas');
// $petuga->update([
// 'nama_petugas' => $request->nama,
// 'no_hp' => $request->no_hp_siswa,
// 'alamat' => $request->alamat,
// 'jenis_kelamin' => $request->jenis_kelamin,
// 'tanggal_lahir' => $request->tanggal_lahir,
// ]);
// $admin->syncRoles('Admin');
DB::commit();
return redirect()->route('admin.index')->with('success','Berhasil mengubah user');
} catch (\Throwable $th) {
//throw $th;
DB::rollback();
Log::error($th);
return back()->with('error','Gagal mengubah user : ' . $th->getMessage())->withInput();
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(User $admin)
{
if(auth()->user()->id == $admin->id){
return redirect()->route('admin.index')->with('error','Tidak dapat menghapus user yang sedang login');
}
DB::beginTransaction();
try {
$admin->syncRoles([]);
$admin->delete();
DB::commit();
return redirect()->route('admin.index')->with('success','Berhasil menghapus user');
} catch (\Throwable $th) {
//throw $th;
DB::rollback();
Log::error($th);
return redirect()->route('admin.index')->with('error','Gagal menghapus user : ' . $th->getMessage());
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]