<?php
namespace App\Http\Controllers;
use App\Helpers\RoleHelper;
use App\Models\OrangTua;
use App\Models\Siswa;
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 OrangTuaController extends Controller
{
/**
* Display a listing of the resource.
*/
public $breadcrumbs;
public $title = "Orang Tua";
public $url = "orang_tua";
public $menu = "orang tua";
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('Orang Tua')->get();
return view('pages.orang_tua.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;
$siswas = Siswa::all();
return view('pages.orang_tua.create', compact('title', 'url', 'menu', 'siswas', '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([
'username' => 'required|unique:users,username',
'siswa_id' => 'required',
'nama_lengkap' => 'required',
'no_identitas' => 'required',
'jenis_kelamin' => 'required',
'agama' => 'required',
'tempat_lahir' => 'required',
'tanggal_lahir' => 'required',
'alamat' => 'required',
'nomor_hp' => 'required',
'password' => 'required',
'c_password' => 'required|same:password',
]);
DB::beginTransaction();
try {
$user = User::create([
'nama' => $request->nama_lengkap,
'username' => $request->username,
'password' => bcrypt($request->password),
]);
$user->assignRole('Orang Tua');
$orang_tua = OrangTua::create([
'user_id' => $user->id,
'siswa_id' => $request->siswa_id,
'nama_lengkap' => $request->nama_lengkap,
'no_identitas' => $request->no_identitas,
'jenis_kelamin' => $request->jenis_kelamin,
'agama' => $request->agama,
'tempat_lahir' => $request->tempat_lahir,
'tanggal_lahir' => $request->tanggal_lahir,
'alamat' => $request->alamat,
'nomor_hp' => $request->nomor_hp,
]);
DB::commit();
return redirect()->route($this->url.'.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(OrangTua $orang_tua)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(OrangTua $orang_tua)
{
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;
$siswas = Siswa::all();
return view('pages.orang_tua.edit', compact('title', 'url', 'menu', 'siswas', 'orang_tua', 'breadcrumbs'));
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, OrangTua $orang_tua)
{
if(!Auth()->user()->can('edit '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
$request->validate([
'username' => 'required|unique:users,username,'.$orang_tua->id,
'siswa_id' => 'required',
'nama_lengkap' => 'required',
'no_identitas' => 'required',
'jenis_kelamin' => 'required',
'agama' => 'required',
'tempat_lahir' => 'required',
'tanggal_lahir' => 'required',
'alamat' => 'required',
'nomor_hp' => 'required',
]);
DB::beginTransaction();
try {
if($request->password){
if ($request->password != $request->c_password) {
return back()->with('error', 'Mohon Periksa Kembali Password Yang Anda Masukkan')->withInput();
}
$orang_tua->user->update([
'password' => bcrypt($request->password),
]);
}
$orang_tua->user->update([
'nama' => $request->nama_lengkap,
'username' => $request->username,
]);
$orang_tua->update([
'siswa_id' => $request->siswa_id,
'nama_lengkap' => $request->nama_lengkap,
'no_identitas' => $request->no_identitas,
'jenis_kelamin' => $request->jenis_kelamin,
'agama' => $request->agama,
'tempat_lahir' => $request->tempat_lahir,
'tanggal_lahir' => $request->tanggal_lahir,
'alamat' => $request->alamat,
'nomor_hp' => $request->nomor_hp,
]);
DB::commit();
return redirect()->route($this->url.'.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(OrangTua $orang_tua)
{
if(!Auth()->user()->can('delete '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
DB::beginTransaction();
try {
$orang_tua->user->syncRoles([]);
$user = $orang_tua->user;
$orang_tua->delete();
$user->delete();
DB::commit();
return redirect()->route($this->url.'.index')->with('success','Berhasil menghapus ' . $this->title);
} catch (\Throwable $th) {
//throw $th;
DB::rollback();
Log::error($th);
return redirect()->route($this->url.'.index')->with('error','Gagal menghapus '.$this->title.' : ' . $th->getMessage());
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]