<?php
namespace App\Http\Controllers;
use App\Imports\DataKelurahanImport;
use App\Models\Kabupaten;
use Illuminate\Http\Request;
use App\Models\Kelurahan;
use App\Models\Kecamatan;
use Illuminate\Http\UploadedFile;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use App\Models\UserLog;
// use Auth;
use Exception;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Maatwebsite\Excel\Facades\Excel;
class KelurahanController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$title = "Kelurahan";
$link = "kelurahan";
$parent = "Master Data";
$s = '';
$page = 1;
if(isset($_GET['s'])){
$s = $_GET['s'];
}
if(isset($_GET['page'])){
$page = $_GET['page'];
}
$datas = Kelurahan::where('nama_kelurahan','like','%'.$s.'%')->orWhereHas('kecamatan',function ($q)use($s){
$q->where('nama_kecamatan','like','%'.$s.'%')->orWhereHas('kabupatens', function ($k) use ($s) {
$k->where('nama_kabupaten','like', '%'.$s.'%');
});
})->orWhere('id','like','%'.$s.'%')->orWhere('nama_kelurahan','like','%'.$s.'%')->orderBy('created_at','DESC')->paginate(10);
$datas->appends($_GET);
$no = 1*$page*10-10+1;
// return view('kelurahan.index',compact('title','kelurahan','parent','link','datas','no'));
return view('kelurahan.index',compact('title','parent','link','datas','no'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$title = "Tambah Data Kelurahan";
$link = "kelurahan";
$parent = "Kelurahan";
if(Request('kabupaten')) {
$datas = Kecamatan::where('kabupaten_id', Request('kabupaten'))->get();
return response()->json([
'data' => $datas,
]);
} else {
$kabupatens = Kabupaten::orderBy('nama_kabupaten','ASC')->pluck('nama_kabupaten','id');
// return view('kelurahan.create',compact('title','kelurahan','parent','link','kecamatans'));
return view('kelurahan.create',compact('title','parent','link','kabupatens'));
}
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
try {
$request->validate([
'nama_kelurahan' => 'required|unique:kelurahans|max:255|string',
]);
$data = new Kelurahan;
$data->nama_kelurahan = $request->nama_kelurahan;
$data->kecamatan_id = $request->kecamatan_id;
$data->save();
$msg = 'Berhasil menambah data kelurahan '.$data->nama_kelurahan;
UserLog::create(['user_id'=>Auth::user()->id,'keterangan'=>$msg]);
return redirect('kelurahan')->with('success_message', $msg);
} catch (Exception $e) {
return redirect('kelurahan')->with('error_message', "Gagal di tambah");
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$title = "Edit Data Kelurahan";
$link = "kelurahan";
$parent = "Kelurahan";
$kabupatens = Kabupaten::orderBy('nama_kabupaten','ASC')->pluck('nama_kabupaten','id');
$data = Kelurahan::find($id);
// dd();
$kecamatans = Kecamatan::where('kabupaten_id',$data->kecamatan->kabupaten_id)->orderBy('nama_kecamatan','ASC')->pluck('nama_kecamatan','id');
// return view('kelurahan.edit',compact('title','kelurahan','parent','link','kecamatans','data'));
return view('kelurahan.edit',compact('title','parent','link','kabupatens','kecamatans','data'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
try {
$rules = [];
$data = Kelurahan::find($id);
if($data->nama_kelurahan != $request->nama_kelurahan) {
$rules['nama_kelurahan'] = 'required|unique:kelurahans|max:255|string';
} else {
$rules['nama_kelurahan'] = 'required|max:255|string';
}
$request->validate($rules);
$data->nama_kelurahan = $request->nama_kelurahan;
$data->kecamatan_id = $request->kecamatan_id;
$data->save();
$msg = 'Berhasil mengubah data kelurahan '.$data->nama_kelurahan;
UserLog::create(['user_id'=>Auth::user()->id,'keterangan'=>$msg]);
return redirect('kelurahan')->with('success_message', $msg);
} catch (Exception $e) {
return redirect('kelurahan')->with('error_message', "Gagal diubah");
}
}
public function importView()
{
// dd("Test");
$title = "Import Data Kelurahan";
$link = "kelurahan";
$parent = "Data Kelurahan";
$warnings = Session::get('alert_import',[]);
return view('kelurahan.import',compact('title','parent','link','warnings'));
}
public function import(Request $request)
{
Session::put('alert_import',[]);
Excel::import(new DataKelurahanImport,request()->file('file'));
$msg = 'Berhasil mengimport data excel dengan nama '.$request->file->getClientOriginalName();
UserLog::create(['user_id'=>Auth::user()->id,'keterangan'=>$msg]);
return redirect('kelurahan/import')->with('success_message', $msg);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
try {
$data = Kelurahan::find($id);
if(count($data->wargas) > 0){
return redirect('kelurahan')->with('error_message', "Data tidak bisa di hapus.masih ada warga yang menggunakan kelurahan ini");
}
$data->delete();
$msg = 'Berhasil menghapus data kelurahan '.$data->nama_kelurahan;
UserLog::create(['user_id'=>Auth::user()->id,'keterangan'=>$msg]);
return redirect('kelurahan')->with('success_message', $msg);
} catch (Exception $e) {
return redirect('kelurahan')->with('error_message', "Gagal dihapus");
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]