<?php
namespace App\Http\Controllers;
use App\Helpers\Helper;
use App\Models\Siswa;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Routing\UrlGenerator;
class SiswaController extends Controller
{
/**
* Display a listing of the resource.
*/
public $breadcrumbs;
public $menu = "siswa";
public $url = "siswa";
public $title = "Siswa";
public function __construct(UrlGenerator $urlGenerator)
{
$this->breadcrumbs = [
['title' => 'Home', 'url' => $urlGenerator->route('admin.dashboard')],
['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 = Siswa::with('kelurahan.kecamatan.kabupaten')->orderBy('created_at','DESC')->get();
return view('admin.pages.siswa.index', compact('title', 'url', 'menu', 'datas', 'breadcrumbs'));
}
/**
* Display the specified resource.
*/
public function show($id)
{
if(!Auth()->user()->can('view '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
$siswa = Siswa::with(['sekolah.siswas'=>function($w){
$w->select('siswas.*',DB::raw("TIMESTAMPDIFF(day, DATE(tanggal_lahir), CURDATE()) as age_date"),DB::raw("(
6371 * 2
* ASIN(SQRT(POWER(SIN((siswas.lintang - s.lintang) * pi()/180 / 2), 2)
+ COS(siswas.lintang * pi()/180 )
* COS(s.lintang * pi()/180)
* POWER(SIN((siswas.bujur - s.bujur) * pi()/180 / 2), 2) ))
) as distance"))
->join('sekolah_siswas as ss','ss.siswa_id','=','siswas.id')
->join('sekolahs as s','ss.sekolah_id','=','s.id')
->where('jalur_pendaftaran',DB::raw('s.jalur_pendaftaran'))
->where('status','diverifikasi')
->with('media')->whereHas('media',function($query){
$query->where('collection_name','kartu_keluargas');
})->orderBy('pivot_nomor_pilihan','ASC')
->orderBy('distance','ASC')
->orderBy('age_date','DESC')
->orderBy('created_at','ASC')
->groupBy('siswas.id');
}])->findOrFail($id);
// dd($siswa->toArray());
$breadcrumbs = $this->breadcrumbs;
$title = $this->title;
$url = $this->url;
$menu = $this->menu;
return view('admin.pages.siswa.detail', compact('title', 'url', 'menu', 'siswa', 'breadcrumbs'));
}
/**
* Show the form for editing the specified resource.
*/
public function update(Request $request, Siswa $siswa)
{
if(!Auth()->user()->can('edit '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
DB::beginTransaction();
try {
$status = "diproses";
if ($request->terima) {
$status = "diverifikasi";
}else if($request->tolak){
$status = "ditolak";
}
$no_pendaftaran = Helper::generateNoPendaftaran();
$siswa->update([
'no_pendaftaran' => $no_pendaftaran,
'status' => $status,
]);
DB::commit();
return redirect()->route('siswa.index')->with('success','Data Berhasil Disimpan');
} catch (\Throwable $th) {
//throw $th;
DB::rollback();
Log::error($th);
return back()->with('error','Gagal : ' . $th->getMessage())->withInput();
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Siswa $siswa)
{
if(!Auth()->user()->can('delete '.$this->menu)){
return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
}
DB::beginTransaction();
try {
$siswa->delete();
DB::commit();
return redirect()->route('siswa.index')->with('success','Berhasil menghapus siswa');
} catch (\Throwable $th) {
//throw $th;
DB::rollback();
Log::error($th);
return redirect()->route('siswa.index')->with('error','Gagal menghapus siswa : ' . $th->getMessage());
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]