diff --git a/app/Http/Controllers/FrontEnd/PpidController.php b/app/Http/Controllers/FrontEnd/PpidController.php new file mode 100644 index 000000000..a4e3f4a44 --- /dev/null +++ b/app/Http/Controllers/FrontEnd/PpidController.php @@ -0,0 +1,261 @@ +urut()->get(); + $dokumen_terbaru = PpidDokumen::where('status', true) + ->with('jenisDokumen') + ->latest() + ->take(10) + ->get(); + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.index', compact( + 'page_title', + 'page_description', + 'jenis_dokumen', + 'dokumen_terbaru', + 'pengaturan' + )); + } + + /** + * Display documents by category. + * + * @param int|null $id + * @return \Illuminate\View\View + */ + public function dokumen($id = null) + { + $page_title = 'Dokumen PPID'; + $page_description = 'Daftar Dokumen PPID'; + + $jenis_dokumen = PpidJenisDokumen::aktif()->urut()->get(); + + if ($id) { + $jenis = PpidJenisDokumen::findOrFail($id); + $dokumen = PpidDokumen::where('status', true) + ->where('id_jenis_dokumen', $id) + ->with('jenisDokumen') + ->latest() + ->paginate(12); + } else { + $jenis = null; + $dokumen = PpidDokumen::where('status', true) + ->with('jenisDokumen') + ->latest() + ->paginate(12); + } + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.dokumen', compact( + 'page_title', + 'page_description', + 'jenis_dokumen', + 'dokumen', + 'jenis', + 'pengaturan' + )); + } + + /** + * Display document detail. + * + * @param int $id + * @return \Illuminate\View\View + */ + public function showDokumen($id) + { + $dokumen = PpidDokumen::with('jenisDokumen')->findOrFail($id); + + if (!$dokumen->status) { + abort(404); + } + + $page_title = $dokumen->judul; + $page_description = 'Detail Dokumen PPID'; + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.show_dokumen', compact( + 'page_title', + 'page_description', + 'dokumen', + 'pengaturan' + )); + } + + /** + * Download document. + * + * @param int $id + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + */ + public function downloadDokumen($id) + { + $dokumen = PpidDokumen::findOrFail($id); + + if (!$dokumen->status || !$dokumen->file) { + abort(404); + } + + $filePath = public_path('storage/ppid_dokumen/' . $dokumen->file); + + if (!file_exists($filePath)) { + return back()->with('error', 'File tidak ditemukan!'); + } + + return response()->download($filePath, $dokumen->judul . '.' . pathinfo($filePath, PATHINFO_EXTENSION)); + } + + /** + * Display permohonan form. + * + * @return \Illuminate\View\View + */ + public function permohonan() + { + $page_title = 'Permohonan Informasi'; + $page_description = 'Formulir Permohonan Informasi Publik'; + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.permohonan', compact( + 'page_title', + 'page_description', + 'pengaturan' + )); + } + + /** + * Store permohonan. + * + * @param \App\Http\Requests\Ppid\PermohonanRequest $request + * @return \Illuminate\Http\Response + */ + public function storePermohonan(PermohonanRequest $request) + { + try { + $input = $request->validated(); + $input['status'] = 'MENUNGGU'; + + PpidPermohonan::create($input); + + return redirect()->route('ppid.permohonan') + ->with('success', 'Permohonan informasi berhasil dikirim! Permohonan Anda akan diproses dalam waktu maksimal 10 hari kerja sesuai dengan peraturan perundang-undangan.'); + } catch (\Exception $e) { + report($e); + + return back()->withInput()->with('error', 'Permohonan gagal dikirim. Silakan coba lagi atau hubungi admin.'); + } + } + + /** + * Check permohonan status. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\View\View + */ + public function cekPermohonan(Request $request) + { + $page_title = 'Cek Status Permohonan'; + $page_description = 'Cek Status Permohonan Informasi Publik'; + + $permohonan = null; + + if ($request->has('nomor_permohonan')) { + $permohonan = PpidPermohonan::where('id', $request->nomor_permohonan) + ->first(); + + if (!$permohonan) { + return back()->with('error', 'Permohonan tidak ditemukan!'); + } + } + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.cek_permohonan', compact( + 'page_title', + 'page_description', + 'permohonan', + 'pengaturan' + )); + } + + /** + * Get PPID settings. + * + * @return array + */ + private function getPengaturan() + { + return [ + 'nama_ppid' => PpidPengaturan::getValue('nama_ppid', 'PPID'), + 'alamat_ppid' => PpidPengaturan::getValue('alamat_ppid', ''), + 'nomor_telepon' => PpidPengaturan::getValue('nomor_telepon', ''), + 'email_ppid' => PpidPengaturan::getValue('email_ppid', ''), + 'jam_operasional' => PpidPengaturan::getValue('jam_operasional', ''), + 'nama_pejabat' => PpidPengaturan::getValue('nama_pejabat', ''), + 'nip_pejabat' => PpidPengaturan::getValue('nip_pejabat', ''), + 'jabatan_pejabat' => PpidPengaturan::getValue('jabatan_pejabat', ''), + ]; + } +} diff --git a/app/Http/Controllers/FrontEnd/PpidPublicController.php b/app/Http/Controllers/FrontEnd/PpidPublicController.php new file mode 100644 index 000000000..705820e59 --- /dev/null +++ b/app/Http/Controllers/FrontEnd/PpidPublicController.php @@ -0,0 +1,234 @@ +urut()->get(); + $dokumen_terbaru = PpidDokumen::where('status', true) + ->with('jenisDokumen') + ->latest() + ->take(10) + ->get(); + } catch (\Exception $e) { + $jenis_dokumen = collect(); + $dokumen_terbaru = collect(); + } + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.index', compact( + 'page_title', + 'page_description', + 'jenis_dokumen', + 'dokumen_terbaru', + 'pengaturan' + )); + } + + public function dokumen($id = null) + { + $page_title = 'Dokumen PPID'; + $page_description = 'Daftar Dokumen PPID'; + + try { + $jenis_dokumen = PpidJenisDokumen::aktif()->urut()->get(); + + if ($id) { + $jenis = PpidJenisDokumen::findOrFail($id); + $dokumen = PpidDokumen::where('status', true) + ->where('id_jenis_dokumen', $id) + ->with('jenisDokumen') + ->latest() + ->paginate(12); + } else { + $jenis = null; + $dokumen = PpidDokumen::where('status', true) + ->with('jenisDokumen') + ->latest() + ->paginate(12); + } + } catch (\Exception $e) { + $jenis_dokumen = collect(); + $dokumen = null; + $jenis = null; + } + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.dokumen', compact( + 'page_title', + 'page_description', + 'jenis_dokumen', + 'dokumen', + 'jenis', + 'pengaturan' + )); + } + + public function showDokumen($id) + { + $dokumen = PpidDokumen::with('jenisDokumen')->findOrFail($id); + + if (!$dokumen->status) { + abort(404); + } + + $page_title = $dokumen->judul; + $page_description = 'Detail Dokumen PPID'; + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.show_dokumen', compact( + 'page_title', + 'page_description', + 'dokumen', + 'pengaturan' + )); + } + + public function downloadDokumen($id) + { + $dokumen = PpidDokumen::findOrFail($id); + + if (!$dokumen->status || !$dokumen->file) { + abort(404); + } + + $filePath = public_path('storage/ppid_dokumen/' . $dokumen->file); + + if (!file_exists($filePath)) { + return back()->with('error', 'File tidak ditemukan!'); + } + + return response()->download($filePath, $dokumen->judul . '.' . pathinfo($filePath, PATHINFO_EXTENSION)); + } + + public function permohonan() + { + $page_title = 'Permohonan Informasi'; + $page_description = 'Formulir Permohonan Informasi Publik'; + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.permohonan', compact( + 'page_title', + 'page_description', + 'pengaturan' + )); + } + + public function storePermohonan(PermohonanRequest $request) + { + try { + $input = $request->validated(); + $input['status'] = 'MENUNGGU'; + + PpidPermohonan::create($input); + + return redirect()->route('ppid.permohonan') + ->with('success', 'Permohonan informasi berhasil dikirim! Permohonan Anda akan diproses dalam waktu maksimal 10 hari kerja sesuai dengan peraturan perundang-undangan.'); + } catch (\Exception $e) { + report($e); + + return back()->withInput()->with('error', 'Permohonan gagal dikirim. Silakan coba lagi atau hubungi admin.'); + } + } + + public function cekPermohonan(Request $request) + { + $page_title = 'Cek Status Permohonan'; + $page_description = 'Cek Status Permohonan Informasi Publik'; + + $permohonan = null; + + if ($request->has('nomor_permohonan')) { + $permohonan = PpidPermohonan::where('id', $request->nomor_permohonan) + ->first(); + + if (!$permohonan) { + return back()->with('error', 'Permohonan tidak ditemukan!'); + } + } + + $pengaturan = $this->getPengaturan(); + + return view('frontend.ppid.cek_permohonan', compact( + 'page_title', + 'page_description', + 'permohonan', + 'pengaturan' + )); + } + + private function getPengaturan() + { + try { + return [ + 'nama_ppid' => PpidPengaturan::getValue('nama_ppid', 'PPID'), + 'alamat_ppid' => PpidPengaturan::getValue('alamat_ppid', ''), + 'nomor_telepon' => PpidPengaturan::getValue('nomor_telepon', ''), + 'email_ppid' => PpidPengaturan::getValue('email_ppid', ''), + 'jam_operasional' => PpidPengaturan::getValue('jam_operasional', ''), + 'nama_pejabat' => PpidPengaturan::getValue('nama_pejabat', ''), + 'nip_pejabat' => PpidPengaturan::getValue('nip_pejabat', ''), + 'jabatan_pejabat' => PpidPengaturan::getValue('jabatan_pejabat', ''), + ]; + } catch (\Exception $e) { + return [ + 'nama_ppid' => 'PPID', + 'alamat_ppid' => '', + 'nomor_telepon' => '', + 'email_ppid' => '', + 'jam_operasional' => '', + 'nama_pejabat' => '', + 'nip_pejabat' => '', + 'jabatan_pejabat' => '', + ]; + } + } +} diff --git a/app/Http/Controllers/Ppid/DokumenController.php b/app/Http/Controllers/Ppid/DokumenController.php new file mode 100644 index 000000000..28c67d5a6 --- /dev/null +++ b/app/Http/Controllers/Ppid/DokumenController.php @@ -0,0 +1,217 @@ +get(); + + return view('ppid.dokumen.index', compact('page_title', 'page_description', 'jenis_dokumen')); + } + + /** + * Get data for DataTables. + * + * @return \Yajra\DataTables\DataTables + */ + public function getDataDokumen() + { + $query = PpidDokumen::with('jenisDokumen'); + + return DataTables::of($query) + ->addColumn('aksi', function ($row) { + $data['edit_url'] = route('ppid.dokumen.edit', $row->id); + $data['delete_url'] = route('ppid.dokumen.destroy', $row->id); + $data['download_url'] = route('ppid.dokumen.download', $row->id); + return view('forms.aksi', $data); + }) + ->editColumn('jenis_dokumen', function ($row) { + return $row->jenisDokumen->nama ?? '-'; + }) + ->editColumn('status', function ($row) { + return $row->status ? 'Aktif' : 'Tidak Aktif'; + }) + ->editColumn('file', function ($row) { + return $row->file ? 'Ada File' : 'Tidak Ada File'; + }) + ->rawColumns(['aksi', 'status', 'file']) + ->make(); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + $page_title = 'Dokumen PPID'; + $page_description = 'Tambah Dokumen PPID'; + $jenis_dokumen = PpidJenisDokumen::aktif()->get(); + + return view('ppid.dokumen.create', compact('page_title', 'page_description', 'jenis_dokumen')); + } + + /** + * Store a newly created resource in storage. + * + * @param \App\Http\Requests\Ppid\DokumenRequest $request + * @return \Illuminate\Http\Response + */ + public function store(DokumenRequest $request) + { + try { + $input = $request->validated(); + + // Handle file upload + $this->handleFileUpload($request, $input, 'file', 'ppid_dokumen'); + + // Set status default + if (!isset($input['status'])) { + $input['status'] = true; + } + + PpidDokumen::create($input); + + return redirect()->route('ppid.dokumen.index')->with('success', 'Dokumen PPID berhasil ditambahkan!'); + } catch (\Exception $e) { + report($e); + + return back()->withInput()->with('error', 'Dokumen PPID gagal ditambahkan!'); + } + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\PpidDokumen $dokumen + * @return \Illuminate\View\View + */ + public function edit(PpidDokumen $dokumen) + { + $page_title = 'Dokumen PPID'; + $page_description = 'Ubah Dokumen PPID'; + $jenis_dokumen = PpidJenisDokumen::aktif()->get(); + + return view('ppid.dokumen.edit', compact('page_title', 'page_description', 'dokumen', 'jenis_dokumen')); + } + + /** + * Update the specified resource in storage. + * + * @param \App\Http\Requests\Ppid\DokumenRequest $request + * @param \App\Models\PpidDokumen $dokumen + * @return \Illuminate\Http\Response + */ + public function update(DokumenRequest $request, PpidDokumen $dokumen) + { + try { + $input = $request->validated(); + + // Handle file upload + $this->handleFileUpload($request, $input, 'file', 'ppid_dokumen'); + + // Set status default + if (!isset($input['status'])) { + $input['status'] = false; + } + + $dokumen->update($input); + + return redirect()->route('ppid.dokumen.index')->with('success', 'Dokumen PPID berhasil diupdate!'); + } catch (\Exception $e) { + report($e); + + return back()->withInput()->with('error', 'Dokumen PPID gagal diupdate!'); + } + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\PpidDokumen $dokumen + * @return \Illuminate\Http\RedirectResponse + */ + public function destroy(PpidDokumen $dokumen) + { + try { + $dokumen->delete(); + } catch (\Exception $e) { + report($e); + + return back()->with('error', 'Dokumen PPID gagal dihapus!'); + } + + return redirect()->route('ppid.dokumen.index')->with('success', 'Dokumen PPID berhasil dihapus!'); + } + + /** + * Download the specified document. + * + * @param \App\Models\PpidDokumen $dokumen + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + */ + public function download(PpidDokumen $dokumen) + { + try { + $filePath = public_path('storage/ppid_dokumen/' . $dokumen->file); + + if (!file_exists($filePath)) { + return back()->with('error', 'File tidak ditemukan!'); + } + + return response()->download($filePath, $dokumen->judul . '.' . pathinfo($filePath, PATHINFO_EXTENSION)); + } catch (\Exception $e) { + report($e); + + return back()->with('error', 'File tidak dapat diunduh!'); + } + } +} diff --git a/app/Http/Controllers/Ppid/JenisDokumenController.php b/app/Http/Controllers/Ppid/JenisDokumenController.php new file mode 100644 index 000000000..e479bf4ba --- /dev/null +++ b/app/Http/Controllers/Ppid/JenisDokumenController.php @@ -0,0 +1,181 @@ +orderBy('urutan')) + ->addColumn('aksi', function ($row) { + $data['modal_form'] = $row->id; + $data['delete_url'] = route('ppid.jenis-dokumen.destroy', $row->id); + return view('forms.aksi', $data); + }) + ->editColumn('status', function ($row) { + return $row->status ? 'Aktif' : 'Tidak Aktif'; + }) + ->rawColumns(['aksi', 'status']) + ->make(); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + return view('ppid.jenis-dokumen.create'); + } + + /** + * Store a newly created resource in storage. + * + * @param \App\Http\Requests\Ppid\JenisDokumenRequest $request + * @return \Illuminate\Http\Response + */ + public function store(JenisDokumenRequest $request) + { + try { + PpidJenisDokumen::create($request->validated()); + + session()->flash('success', 'Jenis Dokumen berhasil ditambahkan!'); + + return response()->json([ + 'success' => true, + 'message' => session('success') + ]); + } catch (\Exception $e) { + report($e); + + session()->flash('error', 'Jenis Dokumen gagal ditambahkan!'); + + return response()->json([ + 'success' => false, + 'message' => session('error') + ]); + } + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\PpidJenisDokumen $jenisDokumen + * @return \Illuminate\Http\Response + */ + public function edit(PpidJenisDokumen $jenisDokumen) + { + return response()->json($jenisDokumen); + } + + /** + * Update the specified resource in storage. + * + * @param \App\Http\Requests\Ppid\JenisDokumenRequest $request + * @param \App\Models\PpidJenisDokumen $jenisDokumen + * @return \Illuminate\Http\Response + */ + public function update(JenisDokumenRequest $request, PpidJenisDokumen $jenisDokumen) + { + try { + $jenisDokumen->update($request->validated()); + + session()->flash('success', 'Jenis Dokumen berhasil diupdate!'); + + return response()->json([ + 'success' => true, + 'message' => session('success') + ]); + } catch (\Exception $e) { + report($e); + + session()->flash('error', 'Jenis Dokumen gagal diupdate!'); + + return response()->json([ + 'success' => false, + 'message' => session('error') + ]); + } + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\PpidJenisDokumen $jenisDokumen + * @return \Illuminate\Http\RedirectResponse + */ + public function destroy(PpidJenisDokumen $jenisDokumen) + { + try { + $isUsed = PpidDokumen::query() + ->where('id_jenis_dokumen', $jenisDokumen->id) + ->exists(); + + if ($isUsed) { + return back()->with('error', 'Jenis Dokumen tidak bisa dihapus karena sedang digunakan pada Dokumen PPID.'); + } + + $jenisDokumen->delete(); + } catch (\Exception $e) { + report($e); + + return back()->withInput()->with('error', 'Jenis Dokumen gagal dihapus!'); + } + + return redirect()->route('ppid.jenis-dokumen.index')->with('success', 'Jenis Dokumen berhasil dihapus!'); + } +} diff --git a/app/Http/Controllers/Ppid/PengaturanController.php b/app/Http/Controllers/Ppid/PengaturanController.php new file mode 100644 index 000000000..66c5199c0 --- /dev/null +++ b/app/Http/Controllers/Ppid/PengaturanController.php @@ -0,0 +1,95 @@ + PpidPengaturan::getValue('nama_ppid', ''), + 'alamat_ppid' => PpidPengaturan::getValue('alamat_ppid', ''), + 'nomor_telepon' => PpidPengaturan::getValue('nomor_telepon', ''), + 'email_ppid' => PpidPengaturan::getValue('email_ppid', ''), + 'jam_operasional' => PpidPengaturan::getValue('jam_operasional', ''), + 'nama_pejabat' => PpidPengaturan::getValue('nama_pejabat', ''), + 'nip_pejabat' => PpidPengaturan::getValue('nip_pejabat', ''), + 'jabatan_pejabat' => PpidPengaturan::getValue('jabatan_pejabat', ''), + ]; + + return view('ppid.pengaturan.index', compact('page_title', 'page_description', 'pengaturan')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function update(Request $request) + { + try { + $pengaturanList = [ + 'nama_ppid' => ['value' => $request->nama_ppid, 'keterangan' => 'Nama Instansi PPID'], + 'alamat_ppid' => ['value' => $request->alamat_ppid, 'keterangan' => 'Alamat PPID'], + 'nomor_telepon' => ['value' => $request->nomor_telepon, 'keterangan' => 'Nomor Telepon PPID'], + 'email_ppid' => ['value' => $request->email_ppid, 'keterangan' => 'Email PPID'], + 'jam_operasional' => ['value' => $request->jam_operasional, 'keterangan' => 'Jam Operasional Pelayanan'], + 'nama_pejabat' => ['value' => $request->nama_pejabat, 'keterangan' => 'Nama Pejabat PPID'], + 'nip_pejabat' => ['value' => $request->nip_pejabat, 'keterangan' => 'NIP Pejabat PPID'], + 'jabatan_pejabat' => ['value' => $request->jabatan_pejabat, 'keterangan' => 'Jabatan Pejabat PPID'], + ]; + + foreach ($pengaturanList as $key => $data) { + PpidPengaturan::setValue($key, $data['value'], $data['keterangan']); + } + + return back()->with('success', 'Pengaturan PPID berhasil disimpan!'); + } catch (\Exception $e) { + report($e); + + return back()->withInput()->with('error', 'Pengaturan PPID gagal disimpan!'); + } + } +} diff --git a/app/Http/Controllers/Ppid/PermohonanController.php b/app/Http/Controllers/Ppid/PermohonanController.php new file mode 100644 index 000000000..17c7637d5 --- /dev/null +++ b/app/Http/Controllers/Ppid/PermohonanController.php @@ -0,0 +1,277 @@ +has('status') && $request->status != '') { + $query->where('status', $request->status); + } + + return DataTables::of($query->latest()) + ->addColumn('aksi', function ($row) { + $data['show_url'] = route('ppid.permohonan.show', $row->id); + $data['edit_url'] = route('ppid.permohonan.edit', $row->id); + $data['delete_url'] = route('ppid.permohonan.destroy', $row->id); + return view('forms.aksi', $data); + }) + ->editColumn('status', function ($row) { + $badgeClass = match($row->status) { + 'MENUNGGU' => 'badge-warning', + 'DIPROSES' => 'badge-info', + 'SELESAI' => 'badge-success', + 'DITOLAK' => 'badge-danger', + default => 'badge-secondary' + }; + return '' . $row->status . ''; + }) + ->editColumn('cara_memperoleh', function ($row) { + return $row->cara_memperoleh == 'ONLINE' ? 'Online' : 'Offline'; + }) + ->editColumn('created_at', function ($row) { + return $row->created_at->format('d/m/Y H:i'); + }) + ->filterColumn('status', function ($query, $keyword) { + $query->where('status', 'like', '%' . $keyword . '%'); + }) + ->rawColumns(['aksi', 'status']) + ->make(); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\View\View + */ + public function create() + { + $page_title = 'Permohonan Informasi PPID'; + $page_description = 'Tambah Permohonan Informasi PPID'; + + return view('ppid.permohonan.create', compact('page_title', 'page_description')); + } + + /** + * Store a newly created resource in storage. + * + * @param \App\Http\Requests\Ppid\PermohonanRequest $request + * @return \Illuminate\Http\Response + */ + public function store(PermohonanRequest $request) + { + try { + $input = $request->validated(); + + // Set default status + if (!isset($input['status'])) { + $input['status'] = 'MENUNGGU'; + } + + PpidPermohonan::create($input); + + return redirect()->route('ppid.permohonan.index')->with('success', 'Permohonan berhasil ditambahkan!'); + } catch (\Exception $e) { + report($e); + + return back()->withInput()->with('error', 'Permohonan gagal ditambahkan!'); + } + } + + /** + * Display the specified resource. + * + * @param \App\Models\PpidPermohonan $permohonan + * @return \Illuminate\View\View + */ + public function show(PpidPermohonan $permohonan) + { + $page_title = 'Detail Permohonan'; + $page_description = 'Detail Permohonan Informasi PPID'; + + return view('ppid.permohonan.show', compact('page_title', 'page_description', 'permohonan')); + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\PpidPermohonan $permohonan + * @return \Illuminate\View\View + */ + public function edit(PpidPermohonan $permohonan) + { + $page_title = 'Permohonan Informasi PPID'; + $page_description = 'Ubah Permohonan Informasi PPID'; + + return view('ppid.permohonan.edit', compact('page_title', 'page_description', 'permohonan')); + } + + /** + * Update the specified resource in storage. + * + * @param \App\Http\Requests\Ppid\PermohonanRequest $request + * @param \App\Models\PpidPermohonan $permohonan + * @return \Illuminate\Http\Response + */ + public function update(PermohonanRequest $request, PpidPermohonan $permohonan) + { + try { + $permohonan->update($request->validated()); + + return redirect()->route('ppid.permohonan.index')->with('success', 'Permohonan berhasil diupdate!'); + } catch (\Exception $e) { + report($e); + + return back()->withInput()->with('error', 'Permohonan gagal diupdate!'); + } + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\PpidPermohonan $permohonan + * @return \Illuminate\Http\RedirectResponse + */ + public function destroy(PpidPermohonan $permohonan) + { + try { + $permohonan->delete(); + } catch (\Exception $e) { + report($e); + + return back()->with('error', 'Permohonan gagal dihapus!'); + } + + return redirect()->route('ppid.permohonan.index')->with('success', 'Permohonan berhasil dihapus!'); + } + + /** + * Proses permohonan. + * + * @param \App\Models\PpidPermohonan $permohonan + * @return \Illuminate\Http\Response + */ + public function proses(PpidPermohonan $permohonan) + { + try { + $permohonan->update([ + 'status' => 'DIPROSES', + 'tanggal_proses' => now(), + ]); + + return back()->with('success', 'Permohonan berhasil diproses!'); + } catch (\Exception $e) { + report($e); + + return back()->with('error', 'Permohonan gagal diproses!'); + } + } + + /** + * Selesaikan permohonan. + * + * @param \App\Models\PpidPermohonan $permohonan + * @return \Illuminate\Http\Response + */ + public function selesaikan(PpidPermohonan $permohonan) + { + try { + $permohonan->update([ + 'status' => 'SELESAI', + 'tanggal_proses' => now(), + ]); + + return back()->with('success', 'Permohonan berhasil diselesaikan!'); + } catch (\Exception $e) { + report($e); + + return back()->with('error', 'Permohonan gagal diselesaikan!'); + } + } + + /** + * Tolak permohonan. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\PpidPermohonan $permohonan + * @return \Illuminate\Http\Response + */ + public function tolak(Request $request, PpidPermohonan $permohonan) + { + try { + $request->validate([ + 'keterangan' => 'required|string', + ]); + + $permohonan->update([ + 'status' => 'DITOLAK', + 'keterangan' => $request->keterangan, + 'tanggal_proses' => now(), + ]); + + return back()->with('success', 'Permohonan berhasil ditolak!'); + } catch (\Exception $e) { + report($e); + + return back()->with('error', 'Permohonan gagal ditolak!'); + } + } +} diff --git a/app/Models/PpidDokumen.php b/app/Models/PpidDokumen.php new file mode 100644 index 000000000..f15bf32e2 --- /dev/null +++ b/app/Models/PpidDokumen.php @@ -0,0 +1,66 @@ +belongsTo(PpidJenisDokumen::class, 'id_jenis_dokumen'); + } +} diff --git a/app/Models/PpidJenisDokumen.php b/app/Models/PpidJenisDokumen.php new file mode 100644 index 000000000..d5d1eee3c --- /dev/null +++ b/app/Models/PpidJenisDokumen.php @@ -0,0 +1,67 @@ +where('status', true); + } + + /** + * Scope untuk ordering berdasarkan urutan. + */ + public function scopeUrut($query) + { + return $query->orderBy('urutan'); + } + + public function dokumen() + { + return $this->hasMany(PpidDokumen::class, 'id_jenis_dokumen'); + } +} diff --git a/app/Models/PpidPengaturan.php b/app/Models/PpidPengaturan.php new file mode 100644 index 000000000..2a293aee4 --- /dev/null +++ b/app/Models/PpidPengaturan.php @@ -0,0 +1,73 @@ +where('key', $key); + } + + /** + * Helper untuk mendapatkan nilai pengaturan berdasarkan key. + */ + public static function getValue($key, $default = null) + { + $setting = static::key($key)->first(); + return $setting ? $setting->value : $default; + } + + /** + * Helper untuk set nilai pengaturan. + */ + public static function setValue($key, $value, $keterangan = null) + { + return static::updateOrCreate( + ['key' => $key], + ['value' => $value, 'keterangan' => $keterangan] + ); + } +} diff --git a/app/Models/PpidPermohonan.php b/app/Models/PpidPermohonan.php new file mode 100644 index 000000000..641ca35fa --- /dev/null +++ b/app/Models/PpidPermohonan.php @@ -0,0 +1,68 @@ + 'date', + ]; + + /** + * Scope untuk filter berdasarkan status. + */ + public function scopeStatus($query, $status) + { + if ($status) { + return $query->where('status', $status); + } + return $query; + } +} diff --git a/database/migrations/2026_02_08_000001_create_das_ppid_dokumen_table.php b/database/migrations/2026_02_08_000001_create_das_ppid_dokumen_table.php new file mode 100644 index 000000000..a1a60922b --- /dev/null +++ b/database/migrations/2026_02_08_000001_create_das_ppid_dokumen_table.php @@ -0,0 +1,67 @@ +increments('id'); + $table->string('judul', 255); + $table->string('nomor_dokumen', 255)->nullable(); + $table->text('deskripsi')->nullable(); + $table->integer('id_jenis_dokumen')->nullable(); + $table->string('file', 255)->nullable(); + $table->integer('tahun')->nullable(); + $table->boolean('status')->default(true); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('das_ppid_dokumen'); + } +} diff --git a/database/migrations/2026_02_08_000002_create_das_ppid_permohonan_table.php b/database/migrations/2026_02_08_000002_create_das_ppid_permohonan_table.php new file mode 100644 index 000000000..d2798aa39 --- /dev/null +++ b/database/migrations/2026_02_08_000002_create_das_ppid_permohonan_table.php @@ -0,0 +1,71 @@ +increments('id'); + $table->string('nama_pemohon', 255); + $table->string('nik', 255); + $table->text('alamat'); + $table->string('nomor_telepon', 255); + $table->string('email', 255)->nullable(); + $table->longText('rincian_informasi'); + $table->longText('tujuan_penggunaan'); + $table->string('cara_memperoleh', 255)->default('ONLINE'); + $table->string('status', 255)->default('MENUNGGU'); + $table->text('keterangan')->nullable(); + $table->date('tanggal_proses')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('das_ppid_permohonan'); + } +} diff --git a/database/migrations/2026_02_08_000003_create_das_ppid_jenis_dokumen_table.php b/database/migrations/2026_02_08_000003_create_das_ppid_jenis_dokumen_table.php new file mode 100644 index 000000000..95e35b819 --- /dev/null +++ b/database/migrations/2026_02_08_000003_create_das_ppid_jenis_dokumen_table.php @@ -0,0 +1,64 @@ +increments('id'); + $table->string('nama', 255); + $table->text('keterangan')->nullable(); + $table->integer('urutan')->default(0); + $table->boolean('status')->default(true); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('das_ppid_jenis_dokumen'); + } +} diff --git a/database/migrations/2026_02_08_000004_create_das_ppid_pengaturan_table.php b/database/migrations/2026_02_08_000004_create_das_ppid_pengaturan_table.php new file mode 100644 index 000000000..0b6edeb4e --- /dev/null +++ b/database/migrations/2026_02_08_000004_create_das_ppid_pengaturan_table.php @@ -0,0 +1,63 @@ +increments('id'); + $table->string('key', 255); + $table->text('value')->nullable(); + $table->text('keterangan')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('das_ppid_pengaturan'); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 484a6adec..14edfea87 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -68,6 +68,7 @@ public function run() $this->call(RefSubSubCoaTableSeeder::class); $this->call(RefCoaTableSeeder::class); $this->call(DasMenuTableSeeder::class); + $this->call(PpidMenuSeeder::class); $this->call(DasSettingTableSeeder::class); $this->call(DasNavigationTableSeeder::class); // Other diff --git a/database/seeders/PpidMenuSeeder.php b/database/seeders/PpidMenuSeeder.php new file mode 100644 index 000000000..886dbf0d7 --- /dev/null +++ b/database/seeders/PpidMenuSeeder.php @@ -0,0 +1,116 @@ +where('slug', 'ppid')->first(); + + if ($existingMenu) { + $this->command->info('Menu PPID sudah ada. Melewati seeder.'); + return; + } + + // Insert menu parent PPID + $ppidMenuId = DB::table('das_menu')->insertGetId([ + 'parent_id' => 0, + 'name' => 'PPID', + 'slug' => 'ppid', + 'icon' => 'fa-file-text-o', + 'url' => '#', + 'is_active' => 1, + 'created_at' => now(), + 'updated_at' => now(), + ]); + + // Insert submenu Daftar Dokumen + DB::table('das_menu')->insert([ + 'parent_id' => $ppidMenuId, + 'name' => 'Daftar Dokumen', + 'slug' => 'ppid-dokumen', + 'icon' => '', + 'url' => 'ppid/dokumen', + 'is_active' => 1, + 'created_at' => now(), + 'updated_at' => now(), + ]); + + // Insert submenu Permohonan Informasi + DB::table('das_menu')->insert([ + 'parent_id' => $ppidMenuId, + 'name' => 'Permohonan Informasi', + 'slug' => 'ppid-permohonan', + 'icon' => '', + 'url' => 'ppid/permohonan', + 'is_active' => 1, + 'created_at' => now(), + 'updated_at' => now(), + ]); + + // Insert submenu Jenis Dokumen + DB::table('das_menu')->insert([ + 'parent_id' => $ppidMenuId, + 'name' => 'Jenis Dokumen', + 'slug' => 'ppid-jenis-dokumen', + 'icon' => '', + 'url' => 'ppid/jenis-dokumen', + 'is_active' => 1, + 'created_at' => now(), + 'updated_at' => now(), + ]); + + // Insert submenu Pengaturan + DB::table('das_menu')->insert([ + 'parent_id' => $ppidMenuId, + 'name' => 'Pengaturan', + 'slug' => 'ppid-pengaturan', + 'icon' => '', + 'url' => 'ppid/pengaturan', + 'is_active' => 1, + 'created_at' => now(), + 'updated_at' => now(), + ]); + + $this->command->info('Menu PPID berhasil ditambahkan.'); + } +} diff --git a/resources/views/frontend/ppid/cek_permohonan.blade.php b/resources/views/frontend/ppid/cek_permohonan.blade.php new file mode 100644 index 000000000..6d034ffd2 --- /dev/null +++ b/resources/views/frontend/ppid/cek_permohonan.blade.php @@ -0,0 +1,102 @@ +@extends('layouts.app_template') + +@section('title', 'Cek Status Permohonan - PPID') + +@section('content') + + + +
+
+
+
+
+

Cek Status Permohonan

+
+
+ @include('partials.flash_message') + + @if($permohonan) +
+ Permohonan ditemukan! +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + @if($permohonan->tanggal_proses) + + + + + @endif + @if($permohonan->keterangan) + + + + + @endif +
Nomor Permohonan#{{ $permohonan->id }}
Nama Pemohon{{ $permohonan->nama_pemohon }}
NIK{{ $permohonan->nik }}
Rincian Informasi{{ $permohonan->rincian_informasi }}
Tanggal Permohonan{{ $permohonan->created_at->format('d/m/Y H:i') }}
Status + @if($permohonan->status == 'MENUNGGU') + MENUNGGU + @elseif($permohonan->status == 'DIPROSES') + DIPROSES + @elseif($permohonan->status == 'SELESAI') + SELESAI + @elseif($permohonan->status == 'DITOLAK') + DITOLAK + @endif +
Tanggal Proses{{ $permohonan->tanggal_proses->format('d/m/Y H:i') }}
Keterangan{{ $permohonan->keterangan }}
+ @else +
+ @csrf +
+ + + + Masukkan nomor permohonan yang Anda dapatkan saat mengajukan permohonan. + Contoh: 123 + +
+ +
+ @endif +
+
+
+
+
+@endsection diff --git a/resources/views/frontend/ppid/dokumen.blade.php b/resources/views/frontend/ppid/dokumen.blade.php new file mode 100644 index 000000000..5ee7eaa0b --- /dev/null +++ b/resources/views/frontend/ppid/dokumen.blade.php @@ -0,0 +1,98 @@ +@extends('layouts.app_template') + +@section('title', 'Dokumen PPID - ' . ($pengaturan['nama_ppid'] ?? 'PPID')) + +@section('content') + + + + +
+
+

Dokumen PPID

+ @if($jenis) +

Kategori: {{ $jenis->nama }}

+ @endif +
+
+ + +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+ + +
+
+ @if($dokumen && $dokumen->count() > 0) +
+ @foreach($dokumen as $item) +
+
+
+
{{ $item->judul }}
+ @if($item->nomor_dokumen) +

No: {{ $item->nomor_dokumen }}

+ @endif + @if($item->jenisDokumen) + {{ $item->jenisDokumen->nama }} + @endif + @if($item->tahun) + {{ $item->tahun }} + @endif +

{{ Str::limit($item->deskripsi, 100) ?? '-' }}

+
+ +
+
+ @endforeach +
+ + +
+ {{ $dokumen->app(request()->all())->links() }} +
+ @else +
+ Belum ada dokumen tersedia. +
+ @endif +
+
+@endsection diff --git a/resources/views/frontend/ppid/index.blade.php b/resources/views/frontend/ppid/index.blade.php new file mode 100644 index 000000000..dc8fedae5 --- /dev/null +++ b/resources/views/frontend/ppid/index.blade.php @@ -0,0 +1,125 @@ +@extends('layouts.app_template') + +@section('title', 'PPID - ' . ($pengaturan['nama_ppid'] ?? 'PPID')) + +@section('content') + +
+
+
+
+

{{ $pengaturan['nama_ppid'] ?? 'PPID' }}

+

Pejabat Pengelola Informasi dan Dokumentasi

+

{{ $pengaturan['alamat_ppid'] ?? '' }}

+
+
+
+
+ + +
+
+
+
+

Tentang PPID

+

PPID (Pejabat Pengelola Informasi dan Dokumentasi) adalah pejabat yang bertanggung jawab atas penyimpanan, pendokumentasian, penyediaan, dan/atau pelayanan informasi di badan publik.

+

PPID berfungsi mengelola dan menyampaikan dokumen publik, memastikan transparansi, serta mempermudah akses informasi bagi masyarakat sesuai amanat UU No. 14 Tahun 2008 tentang Keterbukaan Informasi Publik (KIP).

+
+
+
+
+
Hubungi Kami
+

{{ $pengaturan['nomor_telepon'] ?? '-' }}

+

{{ $pengaturan['email_ppid'] ?? '-' }}

+

{{ $pengaturan['jam_operasional'] ?? '-' }}

+ @if($pengaturan['nama_pejabat']) +
+

Pejabat PPID:

+

{{ $pengaturan['nama_pejabat'] }}

+

NIP: {{ $pengaturan['nip_pejabat'] ?? '-' }}

+

{{ $pengaturan['jabatan_pejabat'] }}

+ @endif +
+
+
+
+
+
+ + + @if($jenis_dokumen && $jenis_dokumen->count() > 0) +
+
+

Kategori Dokumen

+
+ @foreach($jenis_dokumen as $jenis) + + @endforeach +
+
+
+ @endif + + + @if($dokumen_terbaru && $dokumen_terbaru->count() > 0) +
+
+
+

Dokumen Terbaru

+ Lihat Semua +
+
+ + + + + + + + + + + + @foreach($dokumen_terbaru as $index => $dokumen) + + + + + + + + @endforeach + +
NoJudul DokumenJenisTahunAksi
{{ $index + 1 }}{{ $dokumen->judul }}{{ $dokumen->jenisDokumen->nama ?? '-' }}{{ $dokumen->tahun ?? '-' }} + @if($dokumen->file) + + Unduh + + @else + Tidak ada file + @endif +
+
+
+
+ @endif + + +
+
+

Butuh Informasi Lainnya?

+

Ajukan permohonan informasi publik sesuai dengan UU Keterbukaan Informasi Publik

+ + Ajukan Permohonan + +
+
+@endsection diff --git a/resources/views/frontend/ppid/permohonan.blade.php b/resources/views/frontend/ppid/permohonan.blade.php new file mode 100644 index 000000000..c757424c9 --- /dev/null +++ b/resources/views/frontend/ppid/permohonan.blade.php @@ -0,0 +1,132 @@ +@extends('layouts.app_template') + +@section('title', 'Permohonan Informasi - PPID') + +@section('content') + + + +
+
+
+
+
+

Formulir Permohonan Informasi Publik

+
+
+ @include('partials.flash_message') + +
+ Informasi: Sesuai UU No. 14 Tahun 2008, permohonan informasi akan diproses dalam waktu maksimal 10 hari kerja. +
+ +
+ @csrf + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+
+
+ +
+
+
+
Kontak PPID
+
+
+

{{ $pengaturan['nama_ppid'] ?? 'PPID' }}

+

{{ $pengaturan['alamat_ppid'] ?? '-' }}

+

{{ $pengaturan['nomor_telepon'] ?? '-' }}

+

{{ $pengaturan['email_ppid'] ?? '-' }}

+
+
+ +
+
+
Cek Status Permohonan
+
+
+
+ @csrf +
+ + + Nomor permohonan akan Anda dapatkan setelah mengajukan permohonan. +
+ +
+
+
+
+
+
+@endsection diff --git a/resources/views/frontend/ppid/show_dokumen.blade.php b/resources/views/frontend/ppid/show_dokumen.blade.php new file mode 100644 index 000000000..6692e0e13 --- /dev/null +++ b/resources/views/frontend/ppid/show_dokumen.blade.php @@ -0,0 +1,91 @@ +@extends('layouts.app_template') + +@section('title', $dokumen->judul . ' - Dokumen PPID') + +@section('content') + + + +
+
+
+
+
+

{{ $dokumen->judul }}

+
+ +
+ @if($dokumen->jenisDokumen) + {{ $dokumen->jenisDokumen->nama }} + @endif + @if($dokumen->tahun) + {{ $dokumen->tahun }} + @endif +
+ + @if($dokumen->nomor_dokumen) +

Nomor Dokumen: {{ $dokumen->nomor_dokumen }}

+ @endif + +
+ Deskripsi: +

{{ $dokumen->deskripsi ?: '-' }}

+
+ +
+ File Dokumen: + @if($dokumen->file) +

+ + Unduh Dokumen + +

+ @else +

Tidak ada file tersedia.

+ @endif +
+ + + Kembali ke Daftar Dokumen + +
+
+
+ +
+
+
+
Informasi PPID
+
+
+

Nama: {{ $pengaturan['nama_ppid'] ?? 'PPID' }}

+

Alamat: {{ $pengaturan['alamat_ppid'] ?? '-' }}

+

Telepon: {{ $pengaturan['nomor_telepon'] ?? '-' }}

+

Email: {{ $pengaturan['email_ppid'] ?? '-' }}

+
+
+ +
+
+
Butuh Informasi Lain?
+
+
+

Ajukan permohonan informasi publik

+ + Ajukan Permohonan + +
+
+
+
+
+@endsection diff --git a/resources/views/layouts/fragments/sidebar.blade.php b/resources/views/layouts/fragments/sidebar.blade.php index 7a790cfb0..b3d7db76d 100644 --- a/resources/views/layouts/fragments/sidebar.blade.php +++ b/resources/views/layouts/fragments/sidebar.blade.php @@ -421,6 +421,30 @@ class="fa fa-files-o">Permohonan @endif + @if ($user->hasrole(['super-admin', 'administrator-website', 'admin-kecamatan'])) +
  • + PPID + + + + + +
  • + @endif + @if ($user->hasrole(['super-admin', 'administrator-website']))
  • diff --git a/resources/views/ppid/dokumen/create.blade.php b/resources/views/ppid/dokumen/create.blade.php new file mode 100644 index 000000000..6a1a76a18 --- /dev/null +++ b/resources/views/ppid/dokumen/create.blade.php @@ -0,0 +1,48 @@ +@extends('layouts.dashboard_template') + +@section('content') +
    +

    + {{ $page_title ?? 'Page Title' }} + {{ $page_description ?? '' }} +

    + +
    +
    +
    +
    +
    + +
    + + {!! html()->form('POST', route('ppid.dokumen.store'))->acceptsFiles()->id('form-dokumen')->class('form-horizontal form-label-left')->open() !!} + + @if (count($errors) > 0) +
    + Ups! Ada beberapa masalah dengan masukan Anda.

    +
      + @foreach ($errors->all() as $error) +
    • {{ $error }}
    • + @endforeach +
    +
    + @endif + + @include('flash::message') + @include('ppid.dokumen.form') + +
    + + {!! html()->form()->close() !!} +
    +
    +
    +
    +@endsection diff --git a/resources/views/ppid/dokumen/edit.blade.php b/resources/views/ppid/dokumen/edit.blade.php new file mode 100644 index 000000000..cfe3f3ccb --- /dev/null +++ b/resources/views/ppid/dokumen/edit.blade.php @@ -0,0 +1,50 @@ +@extends('layouts.dashboard_template') + +@section('content') +
    +

    + {{ $page_title ?? 'Page Title' }} + {{ $page_description ?? '' }} +

    + +
    +
    +
    +
    +
    + + @if (count($errors) > 0) +
    + Oops! Ada kesalahan pada kolom inputan.

    +
      + @foreach ($errors->all() as $error) +
    • {{ $error }}
    • + @endforeach +
    + +
    + @endif + + + {!! html()->form('PUT', route('ppid.dokumen.update', $dokumen->id))->id('form-dokumen')->class('form-horizontal form-label-left')->acceptsFiles()->open() !!} + +
    + + @include('ppid.dokumen.form_edit') + +
    + + + {!! html()->form()->close() !!} +
    +
    +
    +
    +@endsection diff --git a/resources/views/ppid/dokumen/form.blade.php b/resources/views/ppid/dokumen/form.blade.php new file mode 100644 index 000000000..7c832aabe --- /dev/null +++ b/resources/views/ppid/dokumen/form.blade.php @@ -0,0 +1,59 @@ +
    + {!! html()->label('judul', 'Judul Dokumen')->class('col-sm-2 control-label')->required() !!} +
    + {!! html()->text('judul')->class('form-control')->placeholder('Masukkan judul dokumen')->required() !!} +
    +
    + +
    + {!! html()->label('nomor_dokumen', 'Nomor Dokumen')->class('col-sm-2 control-label') !!} +
    + {!! html()->text('nomor_dokumen')->class('form-control')->placeholder('Masukkan nomor dokumen') !!} +
    +
    + +
    + {!! html()->label('id_jenis_dokumen', 'Jenis Dokumen')->class('col-sm-2 control-label') !!} +
    + {!! html()->select('id_jenis_dokumen', $jenis_dokumen->pluck('nama', 'id')->toArray()) + ->class('form-control') + ->placeholder('- Pilih Jenis Dokumen -') !!} +
    +
    + +
    + {!! html()->label('deskripsi', 'Deskripsi')->class('col-sm-2 control-label') !!} +
    + {!! html()->textarea('deskripsi')->class('form-control')->rows(4)->placeholder('Masukkan deskripsi dokumen') !!} +
    +
    + +
    + {!! html()->label('tahun', 'Tahun')->class('col-sm-2 control-label') !!} +
    + {!! html()->number('tahun')->class('form-control')->placeholder('Masukkan tahun dokumen')->min(1900)->max(2100) !!} +
    +
    + +
    + {!! html()->label('file', 'File Dokumen')->class('col-sm-2 control-label') !!} +
    + {!! html()->file('file')->class('form-control')->accept('pdf,doc,docx,xls,xlsx,zip,rar') !!} +

    Format yang diperbolehkan: PDF, DOC, DOCX, XLS, XLSX, ZIP, RAR. Maksimal 10MB.

    +
    +
    + +
    + {!! html()->label('status', 'Status')->class('col-sm-2 control-label') !!} +
    +
    + +   + +
    +
    +
    diff --git a/resources/views/ppid/dokumen/form_edit.blade.php b/resources/views/ppid/dokumen/form_edit.blade.php new file mode 100644 index 000000000..140f69170 --- /dev/null +++ b/resources/views/ppid/dokumen/form_edit.blade.php @@ -0,0 +1,62 @@ +
    + {!! html()->label('judul', 'Judul Dokumen')->class('col-sm-2 control-label')->required() !!} +
    + {!! html()->text('judul', $dokumen->judul)->class('form-control')->placeholder('Masukkan judul dokumen')->required() !!} +
    +
    + +
    + {!! html()->label('nomor_dokumen', 'Nomor Dokumen')->class('col-sm-2 control-label') !!} +
    + {!! html()->text('nomor_dokumen', $dokumen->nomor_dokumen)->class('form-control')->placeholder('Masukkan nomor dokumen') !!} +
    +
    + +
    + {!! html()->label('id_jenis_dokumen', 'Jenis Dokumen')->class('col-sm-2 control-label') !!} +
    + {!! html()->select('id_jenis_dokumen', $jenis_dokumen->pluck('nama', 'id')->toArray(), $dokumen->id_jenis_dokumen) + ->class('form-control') + ->placeholder('- Pilih Jenis Dokumen -') !!} +
    +
    + +
    + {!! html()->label('deskripsi', 'Deskripsi')->class('col-sm-2 control-label') !!} +
    + {!! html()->textarea('deskripsi', $dokumen->deskripsi)->class('form-control')->rows(4)->placeholder('Masukkan deskripsi dokumen') !!} +
    +
    + +
    + {!! html()->label('tahun', 'Tahun')->class('col-sm-2 control-label') !!} +
    + {!! html()->number('tahun', $dokumen->tahun)->class('form-control')->placeholder('Masukkan tahun dokumen')->min(1900)->max(2100) !!} +
    +
    + +
    + {!! html()->label('file', 'File Dokumen')->class('col-sm-2 control-label') !!} +
    + @if($dokumen->file) +

    File saat ini: {{ $dokumen->file }}

    + @endif + {!! html()->file('file')->class('form-control')->accept('pdf,doc,docx,xls,xlsx,zip,rar') !!} +

    Format yang diperbolehkan: PDF, DOC, DOCX, XLS, XLSX, ZIP, RAR. Maksimal 10MB. Kosongkan jika tidak ingin mengubah file.

    +
    +
    + +
    + {!! html()->label('status', 'Status')->class('col-sm-2 control-label') !!} +
    +
    + +   + +
    +
    +
    diff --git a/resources/views/ppid/dokumen/index.blade.php b/resources/views/ppid/dokumen/index.blade.php new file mode 100644 index 000000000..3a548ae21 --- /dev/null +++ b/resources/views/ppid/dokumen/index.blade.php @@ -0,0 +1,110 @@ +@extends('layouts.dashboard_template') + +@section('content') +
    +

    + {{ $page_title ?? 'Page Title' }} + {{ $page_description ?? '' }} +

    + +
    +
    + + @include('partials.flash_message') + +
    +
    + @include('forms.btn-social', ['create_url' => route('ppid.dokumen.create')]) +
    + +
    + +
    +
    + {!! html()->select('jenis_dokumen_id') + ->options($jenis_dokumen->pluck('nama', 'id')->toArray()) + ->class('form-control filter-jenis') + ->placeholder('- Semua Jenis Dokumen -') !!} +
    +
    + + + + + + + + + + + + + +
    AksiJudulNomor DokumenJenis DokumenTahunFileStatus
    +
    +
    +
    +@endsection + +@include('partials.asset_datatables') + +@push('scripts') + + @include('forms.datatable-vertical') + @include('forms.delete-modal') +@endpush diff --git a/resources/views/ppid/jenis-dokumen/index.blade.php b/resources/views/ppid/jenis-dokumen/index.blade.php new file mode 100644 index 000000000..8e2148704 --- /dev/null +++ b/resources/views/ppid/jenis-dokumen/index.blade.php @@ -0,0 +1,84 @@ +@extends('layouts.dashboard_template') + +@section('content') +
    +

    + {{ $page_title ?? 'Page Title' }} + {{ $page_description ?? '' }} +

    + +
    +
    + +
    + + @include('partials.flash_message') + +
    +
    + @include('forms.btn-social', ['modal_url' => '#modal-form']) +
    +
    + + + + + + + + + + +
    AksiNamaKeteranganUrutanStatus
    +
    +
    + @include('ppid.jenis-dokumen.modal-form') +
    +@endsection + +@include('partials.asset_datatables') + +@push('scripts') + + @include('forms.datatable-vertical') + @include('forms.delete-modal') +@endpush diff --git a/resources/views/ppid/jenis-dokumen/modal-form.blade.php b/resources/views/ppid/jenis-dokumen/modal-form.blade.php new file mode 100644 index 000000000..5cef04409 --- /dev/null +++ b/resources/views/ppid/jenis-dokumen/modal-form.blade.php @@ -0,0 +1,109 @@ + +@include('partials.asset_sweetalert') +@push('scripts') + +@endpush diff --git a/resources/views/ppid/pengaturan/index.blade.php b/resources/views/ppid/pengaturan/index.blade.php new file mode 100644 index 000000000..f30d0c630 --- /dev/null +++ b/resources/views/ppid/pengaturan/index.blade.php @@ -0,0 +1,105 @@ +@extends('layouts.dashboard_template') + +@section('content') +
    +

    + {{ $page_title ?? 'Page Title' }} + {{ $page_description ?? '' }} +

    + +
    +
    + + @include('partials.flash_message') + +
    +
    +

    Pengaturan Layanan PPID

    +
    + +
    + @csrf + +
    +
    + + +
    + +
    + + +
    + +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    + +
    + + +
    + +
    +

    Data Pejabat PPID

    + +
    + + +
    + +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +@endsection diff --git a/resources/views/ppid/permohonan/create.blade.php b/resources/views/ppid/permohonan/create.blade.php new file mode 100644 index 000000000..d7316d4c8 --- /dev/null +++ b/resources/views/ppid/permohonan/create.blade.php @@ -0,0 +1,48 @@ +@extends('layouts.dashboard_template') + +@section('content') +
    +

    + {{ $page_title ?? 'Page Title' }} + {{ $page_description ?? '' }} +

    + +
    +
    +
    +
    +
    + +
    + + {!! html()->form('POST', route('ppid.permohonan.store'))->id('form-permohonan')->class('form-horizontal form-label-left')->open() !!} + + @if (count($errors) > 0) +
    + Ups! Ada beberapa masalah dengan masukan Anda.

    +
      + @foreach ($errors->all() as $error) +
    • {{ $error }}
    • + @endforeach +
    +
    + @endif + + @include('flash::message') + @include('ppid.permohonan.form') + +
    + + {!! html()->form()->close() !!} +
    +
    +
    +
    +@endsection diff --git a/resources/views/ppid/permohonan/edit.blade.php b/resources/views/ppid/permohonan/edit.blade.php new file mode 100644 index 000000000..fc9b51362 --- /dev/null +++ b/resources/views/ppid/permohonan/edit.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.dashboard_template') + +@section('content') +
    +

    + {{ $page_title ?? 'Page Title' }} + {{ $page_description ?? '' }} +

    + +
    +
    +
    +
    +
    + + @if (count($errors) > 0) +
    + Oops! Ada kesalahan pada kolom inputan.

    +
      + @foreach ($errors->all() as $error) +
    • {{ $error }}
    • + @endforeach +
    +
    + @endif + + + {!! html()->form('PUT', route('ppid.permohonan.update', $permohonan->id))->id('form-permohonan')->class('form-horizontal form-label-left')->open() !!} + +
    + + @include('ppid.permohonan.form_edit') + +
    + + + {!! html()->form()->close() !!} +
    +
    +
    +
    +@endsection diff --git a/resources/views/ppid/permohonan/form.blade.php b/resources/views/ppid/permohonan/form.blade.php new file mode 100644 index 000000000..30b256eb7 --- /dev/null +++ b/resources/views/ppid/permohonan/form.blade.php @@ -0,0 +1,57 @@ +
    + {!! html()->label('nama_pemohon', 'Nama Pemohon')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->text('nama_pemohon')->class('form-control')->placeholder('Masukkan nama lengkap pemohon')->required() !!} +
    +
    + +
    + {!! html()->label('nik', 'NIK')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->text('nik')->class('form-control')->placeholder('Masukkan NIK (Nomor Induk Kependudukan)')->required() !!} +
    +
    + +
    + {!! html()->label('alamat', 'Alamat')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->textarea('alamat')->class('form-control')->rows(3)->placeholder('Masukkan alamat lengkap pemohon')->required() !!} +
    +
    + +
    + {!! html()->label('nomor_telepon', 'Nomor Telepon')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->text('nomor_telepon')->class('form-control')->placeholder('Masukkan nomor telepon/WA')->required() !!} +
    +
    + +
    + {!! html()->label('email', 'Email')->class('col-sm-3 control-label') !!} +
    + {!! html()->email('email')->class('form-control')->placeholder('Masukkan alamat email (jika ada)') !!} +
    +
    + +
    + {!! html()->label('rincian_informasi', 'Rincian Informasi')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->textarea('rincian_informasi')->class('form-control')->rows(4)->placeholder('Jelaskan rincian informasi yang diminta')->required() !!} +
    +
    + +
    + {!! html()->label('tujuan_penggunaan', 'Tujuan Penggunaan')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->textarea('tujuan_penggunaan')->class('form-control')->rows(3)->placeholder('Jelaskan tujuan penggunaan informasi')->required() !!} +
    +
    + +
    + {!! html()->label('cara_memperoleh', 'Cara Memperoleh')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->select('cara_memperoleh', ['ONLINE' => 'Online (Dikirim via Email)', 'OFFLINE' => 'Offline (Diambil Langsung)'])->class('form-control')->required() !!} +
    +
    + + diff --git a/resources/views/ppid/permohonan/form_edit.blade.php b/resources/views/ppid/permohonan/form_edit.blade.php new file mode 100644 index 000000000..cfc5ab839 --- /dev/null +++ b/resources/views/ppid/permohonan/form_edit.blade.php @@ -0,0 +1,85 @@ +
    + {!! html()->label('nama_pemohon', 'Nama Pemohon')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->text('nama_pemohon', $permohonan->nama_pemohon)->class('form-control')->placeholder('Masukkan nama lengkap pemohon')->required() !!} +
    +
    + +
    + {!! html()->label('nik', 'NIK')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->text('nik', $permohonan->nik)->class('form-control')->placeholder('Masukkan NIK (Nomor Induk Kependudukan)')->required() !!} +
    +
    + +
    + {!! html()->label('alamat', 'Alamat')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->textarea('alamat', $permohonan->alamat)->class('form-control')->rows(3)->placeholder('Masukkan alamat lengkap pemohon')->required() !!} +
    +
    + +
    + {!! html()->label('nomor_telepon', 'Nomor Telepon')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->text('nomor_telepon', $permohonan->nomor_telepon)->class('form-control')->placeholder('Masukkan nomor telepon/WA')->required() !!} +
    +
    + +
    + {!! html()->label('email', 'Email')->class('col-sm-3 control-label') !!} +
    + {!! html()->email('email', $permohonan->email)->class('form-control')->placeholder('Masukkan alamat email (jika ada)') !!} +
    +
    + +
    + {!! html()->label('rincian_informasi', 'Rincian Informasi')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->textarea('rincian_informasi', $permohonan->rincian_informasi)->class('form-control')->rows(4)->placeholder('Jelaskan rincian informasi yang diminta')->required() !!} +
    +
    + +
    + {!! html()->label('tujuan_penggunaan', 'Tujuan Penggunaan')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->textarea('tujuan_penggunaan', $permohonan->tujuan_penggunaan)->class('form-control')->rows(3)->placeholder('Jelaskan tujuan penggunaan informasi')->required() !!} +
    +
    + +
    + {!! html()->label('cara_memperoleh', 'Cara Memperoleh')->class('col-sm-3 control-label')->required() !!} +
    + {!! html()->select('cara_memperoleh', ['ONLINE' => 'Online (Dikirim via Email)', 'OFFLINE' => 'Offline (Diambil Langsung)'], $permohonan->cara_memperoleh)->class('form-control')->required() !!} +
    +
    + +
    + {!! html()->label('status', 'Status')->class('col-sm-3 control-label') !!} +
    +
    + +   + +   + +   + +
    +
    +
    + +
    + {!! html()->label('keterangan', 'Keterangan')->class('col-sm-3 control-label') !!} +
    + {!! html()->textarea('keterangan', $permohonan->keterangan)->class('form-control')->rows(3)->placeholder('Tambahkan keterangan jika diperlukan') !!} +
    +
    diff --git a/resources/views/ppid/permohonan/index.blade.php b/resources/views/ppid/permohonan/index.blade.php new file mode 100644 index 000000000..adaabd911 --- /dev/null +++ b/resources/views/ppid/permohonan/index.blade.php @@ -0,0 +1,109 @@ +@extends('layouts.dashboard_template') + +@section('content') +
    +

    + {{ $page_title ?? 'Page Title' }} + {{ $page_description ?? '' }} +

    + +
    +
    + + @include('partials.flash_message') + +
    +
    + @include('forms.btn-social', ['create_url' => route('ppid.permohonan.create')]) + + +
    + +
    +
    + +
    + + + + + + + + + + + +
    AksiNama PemohonNIKTeleponStatusTanggal Permohonan
    +
    +
    +
    +@endsection + +@include('partials.asset_datatables') + +@push('scripts') + + @include('forms.datatable-vertical') + @include('forms.delete-modal') +@endpush diff --git a/resources/views/ppid/permohonan/show.blade.php b/resources/views/ppid/permohonan/show.blade.php new file mode 100644 index 000000000..92dbbd896 --- /dev/null +++ b/resources/views/ppid/permohonan/show.blade.php @@ -0,0 +1,149 @@ +@extends('layouts.dashboard_template') + +@section('content') +
    +

    + {{ $page_title ?? 'Page Title' }} + {{ $page_description ?? '' }} +

    + +
    +
    +
    +
    +
    +
    +

    Detail Permohonan

    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Nama Pemohon{{ $permohonan->nama_pemohon }}
    NIK{{ $permohonan->nik }}
    Alamat{{ $permohonan->alamat }}
    Nomor Telepon{{ $permohonan->nomor_telepon }}
    Email{{ $permohonan->email ?: '-' }}
    Cara Memperoleh{{ $permohonan->cara_memperoleh == 'ONLINE' ? 'Online' : 'Offline' }}
    Rincian Informasi{{ $permohonan->rincian_informasi }}
    Tujuan Penggunaan{{ $permohonan->tujuan_penggunaan }}
    Status + @if($permohonan->status == 'MENUNGGU') + MENUNGGU + @elseif($permohonan->status == 'DIPROSES') + DIPROSES + @elseif($permohonan->status == 'SELESAI') + SELESAI + @elseif($permohonan->status == 'DITOLAK') + DITOLAK + @endif +
    Tanggal Permohonan{{ $permohonan->created_at->format('d/m/Y H:i') }}
    Tanggal Proses{{ $permohonan->tanggal_proses ? $permohonan->tanggal_proses->format('d/m/Y H:i') : '-' }}
    Keterangan{{ $permohonan->keterangan ?: '-' }}
    +
    +
    + + @if($permohonan->status == 'MENUNGGU' || $permohonan->status == 'DIPROSES') + + @endif +
    +
    +
    +
    +@endsection + +@if($permohonan->status == 'MENUNGGU' || $permohonan->status == 'DIPROSES') + +@endif diff --git a/routes/web.php b/routes/web.php index 70fbbe3af..e41287379 100644 --- a/routes/web.php +++ b/routes/web.php @@ -257,6 +257,19 @@ Route::get('faq', 'WebFaqController@index')->name('faq'); + // PPID Routes (Frontend - Public Access) + Route::group(['prefix' => 'ppid'], function () { + Route::get('/', ['as' => 'ppid.index', 'uses' => 'PpidPublicController@index']); + Route::get('dokumen', ['as' => 'ppid.dokumen', 'uses' => 'PpidPublicController@dokumen']); + Route::get('dokumen/jenis/{id}', ['as' => 'ppid.dokumen.jenis', 'uses' => 'PpidPublicController@dokumen']); + Route::get('dokumen/{id}', ['as' => 'ppid.dokumen.show', 'uses' => 'PpidPublicController@showDokumen']); + Route::get('download/{id}', ['as' => 'ppid.dokumen.download', 'uses' => 'PpidPublicController@downloadDokumen']); + Route::get('permohonan', ['as' => 'ppid.permohonan', 'uses' => 'PpidPublicController@permohonan']); + Route::post('permohonan', ['as' => 'ppid.permohonan.store', 'uses' => 'PpidPublicController@storePermohonan']); + Route::get('cek-permohonan', ['as' => 'ppid.cek-permohonan', 'uses' => 'PpidPublicController@cekPermohonan']); + Route::post('cek-permohonan', ['as' => 'ppid.cek-permohonan.post', 'uses' => 'PpidPublicController@cekPermohonan']); + }); + Route::group(['prefix' => 'sistem-komplain'], function () { Route::get('/', ['as' => 'sistem-komplain.index', 'uses' => 'SistemKomplainController@index']); Route::get('kirim', ['as' => 'sistem-komplain.kirim', 'uses' => 'SistemKomplainController@kirim']); @@ -1006,6 +1019,57 @@ }); }); + /** + * Group Routing for PPID + */ + Route::namespace('\App\Http\Controllers\Ppid')->group(function () { + Route::group(['prefix' => 'ppid', 'middleware' => ['role:super-admin|administrator-website|admin-kecamatan']], function () { + // Dokumen + Route::group(['prefix' => 'dokumen'], function () { + Route::get('/', ['as' => 'ppid.dokumen.index', 'uses' => 'DokumenController@index']); + Route::get('getdata', ['as' => 'ppid.dokumen.getdata', 'uses' => 'DokumenController@getDataDokumen']); + Route::get('create', ['as' => 'ppid.dokumen.create', 'uses' => 'DokumenController@create']); + Route::post('store', ['as' => 'ppid.dokumen.store', 'uses' => 'DokumenController@store']); + Route::get('edit/{dokumen}', ['as' => 'ppid.dokumen.edit', 'uses' => 'DokumenController@edit']); + Route::put('update/{dokumen}', ['as' => 'ppid.dokumen.update', 'uses' => 'DokumenController@update']); + Route::delete('destroy/{dokumen}', ['as' => 'ppid.dokumen.destroy', 'uses' => 'DokumenController@destroy']); + Route::get('download/{dokumen}', ['as' => 'ppid.dokumen.download', 'uses' => 'DokumenController@download']); + }); + + // Permohonan + Route::group(['prefix' => 'permohonan'], function () { + Route::get('/', ['as' => 'ppid.permohonan.index', 'uses' => 'PermohonanController@index']); + Route::get('getdata', ['as' => 'ppid.permohonan.getdata', 'uses' => 'PermohonanController@getDataPermohonan']); + Route::get('create', ['as' => 'ppid.permohonan.create', 'uses' => 'PermohonanController@create']); + Route::post('store', ['as' => 'ppid.permohonan.store', 'uses' => 'PermohonanController@store']); + Route::get('show/{permohonan}', ['as' => 'ppid.permohonan.show', 'uses' => 'PermohonanController@show']); + Route::get('edit/{permohonan}', ['as' => 'ppid.permohonan.edit', 'uses' => 'PermohonanController@edit']); + Route::put('update/{permohonan}', ['as' => 'ppid.permohonan.update', 'uses' => 'PermohonanController@update']); + Route::delete('destroy/{permohonan}', ['as' => 'ppid.permohonan.destroy', 'uses' => 'PermohonanController@destroy']); + Route::put('proses/{permohonan}', ['as' => 'ppid.permohonan.proses', 'uses' => 'PermohonanController@proses']); + Route::put('selesaikan/{permohonan}', ['as' => 'ppid.permohonan.selesaikan', 'uses' => 'PermohonanController@selesaikan']); + Route::put('tolak/{permohonan}', ['as' => 'ppid.permohonan.tolak', 'uses' => 'PermohonanController@tolak']); + }); + + // Jenis Dokumen + Route::group(['prefix' => 'jenis-dokumen'], function () { + Route::get('/', ['as' => 'ppid.jenis-dokumen.index', 'uses' => 'JenisDokumenController@index']); + Route::get('getdata', ['as' => 'ppid.jenis-dokumen.getdata', 'uses' => 'JenisDokumenController@getDataJenisDokumen']); + Route::get('create', ['as' => 'ppid.jenis-dokumen.create', 'uses' => 'JenisDokumenController@create']); + Route::post('store', ['as' => 'ppid.jenis-dokumen.store', 'uses' => 'JenisDokumenController@store']); + Route::get('edit/{jenisDokumen}', ['as' => 'ppid.jenis-dokumen.edit', 'uses' => 'JenisDokumenController@edit']); + Route::put('update/{jenisDokumen}', ['as' => 'ppid.jenis-dokumen.update', 'uses' => 'JenisDokumenController@update']); + Route::delete('destroy/{jenisDokumen}', ['as' => 'ppid.jenis-dokumen.destroy', 'uses' => 'JenisDokumenController@destroy']); + }); + + // Pengaturan + Route::group(['prefix' => 'pengaturan', 'middleware' => ['role:super-admin|administrator-website']], function () { + Route::get('/', ['as' => 'ppid.pengaturan.index', 'uses' => 'PengaturanController@index']); + Route::post('update', ['as' => 'ppid.pengaturan.update', 'uses' => 'PengaturanController@update']); + }); + }); + }); + /** * Group Routing for Counter */