<?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 PetugasController extends Controller
{
/**
* Display a listing of the resource.
*/
public $breadcrumbs;
public $title = "Petugas";
public $url = "petugas";
public $menu = "petugas";
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('Petugas')->get();
return view('pages.petugas.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.petugas.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([
'email' => 'required|unique:users,email',
'nama_petugas' => 'required',
'no_hp' => 'required',
'alamat' => 'required',
'jenis_kelamin' => 'required',
'tanggal_lahir' => 'required',
// 'password' => 'required',
// 'c_password' => 'required|same:password',
]);
DB::beginTransaction();
try {
$user = User::create([
'nama' => $request->nama_petugas,
'email' => $request->email,
// 'password' => bcrypt($request->password),
// 'no_hp_siswa' => $request->no_hp,
]);
$user->assignRole('Petugas');
$petugas = Petugas::create([
'user_id' => $user->id,
'nama_petugas' => $request->nama_petugas,
'no_hp' => $request->no_hp,
'alamat' => $request->alamat,
'jenis_kelamin' => $request->jenis_kelamin,
'tanggal_lahir' => $request->tanggal_lahir,
]);
DB::commit();
return redirect()->route('petugas.index')->with('success','Berhasil menambahkan '.$this->title);
} catch (\Throwable $th) {
//throw $th;
DB::rollback();
Log::error($th);
return back()->with('error','Gagal menambahkan '.$this->title.' : ' . $th->getMessage())->withInput();
}
}
/**
* Display the specified resource.
*/
public function show(Petugas $petuga)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Petugas $petuga)
{
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.petugas.edit', compact('title', 'url', 'menu', 'petuga', 'breadcrumbs'));
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Petugas $petuga)
{
if(!Auth()->user()->can('edit '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
$rules = [
'nama_petugas' => 'required',
'no_hp' => 'required',
'alamat' => 'required',
'jenis_kelamin' => 'required',
'tanggal_lahir' => 'required',
];
if($petuga->user->email != $request->email) {
$rules['email'] = 'required|unique:users,email,'.$petuga->id;
}
$request->validate($rules);
DB::beginTransaction();
try {
if($request->password){
if ($request->password != $request->c_password) {
return back()->with('error', 'Mohon Periksa Kembali Password Yang Anda Masukkan')->withInput();
}
$petuga->user->update([
'password' => bcrypt($request->password),
]);
}
$petuga->user->update([
'nama' => $request->nama_petugas,
'email' => $request->email,
// 'no_hp_siswa' => $request->no_hp,
]);
$petuga->user->syncRoles('Petugas');
$petuga->update([
'nama_petugas' => $request->nama_petugas,
'no_hp' => $request->no_hp,
'alamat' => $request->alamat,
'jenis_kelamin' => $request->jenis_kelamin,
'tanggal_lahir' => $request->tanggal_lahir,
]);
DB::commit();
return redirect()->route('petugas.index')->with('success','Berhasil mengubah '.$this->title);
} catch (\Throwable $th) {
//throw $th;
DB::rollback();
Log::error($th);
return back()->with('error','Gagal mengubah '.$this->title.' : ' . $th->getMessage())->withInput();
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Petugas $petuga)
{
if(!Auth()->user()->can('delete '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
DB::beginTransaction();
try {
$petuga->user->syncRoles([]);
$user = $petuga->user;
$petuga->delete();
$user->delete();
DB::commit();
return redirect()->route('petugas.index')->with('success','Berhasil menghapus '.$this->title);
} catch (\Throwable $th) {
//throw $th;
DB::rollback();
Log::error($th);
return redirect()->route('petugas.index')->with('error','Gagal menghapus '.$this->title.' : ' . $th->getMessage());
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]