main
Ilham Wara Nugroho 2026-04-28 11:53:05 +07:00
parent 2787e75b81
commit e886afef4f
10 changed files with 621 additions and 62 deletions

View File

@ -0,0 +1,158 @@
<?php
namespace App\Http\Controllers;
use App\Services\DashboardAdaptationService;
use App\Services\DashboardMitigationService;
use Illuminate\Http\Request;
use App\Models\LembarPengesahan;
class LembarPengesahanController extends Controller
{
protected $title = 'Lembar Pengesahan';
protected $template = 'modules.pengesahan';
protected $route = 'modules.pengesahan';
public function __construct(DashboardAdaptationService $adaptationService,DashboardMitigationService $mitigationService)
{
$this->adaptationService = $adaptationService;
$this->mitigationService = $mitigationService;
}
/**
* Display a listing of the resource.
*/
public function index()
{
$data['route'] = $this->route;
$data['title'] = $this->title;
return view($this->template.'.index',$data);
}
public function grid()
{
$data = LembarPengesahaan::where('tahun',date('Y'))->get();
$_data = [];
foreach ($data as $key => $row) {
$btn = '<a href="' . url('master/agency/update/').'/'.encode_id($row->id). '" class="btn btn-sm w-100 mb-1 btn-primary">Edit</a>';
$btn .= ' <form action="' . route($this->route.'.destroy', $row->id) . '" method="POST" style="display: inline;" class="delete-form">';
$btn .= csrf_field();
$btn .= method_field('DELETE');
$btn .= '<button type="button" class="btn btn-sm btn-danger delete-button remove_data">Hapus</button>';
$btn .= '</form>';
if ($row->row_status == 1) {
$status = '<span class="badge bg-success">Aktif</span>';
} else {
$status = '<span class="badge bg-danger">Tidak Aktif</span>';
}
$_data[] = [
'no' => $key+1,
'name' => $row->name,
'scope' => $row->scope,
'status' => $status,
'action' => @$btn,
];
}
return response()->json($_data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$year = (int) request()->input('adaptationYear', date('Y'));
$adaptasi = $this->adaptationService->getDashboardData($year);
$mitigasi = $this->mitigationService->getDashboardData($year);
$data['route'] = $this->route;
$data['title'] = $this->title;
$data['kegiatanAdaptasi'] = $adaptasi['tableData'];
$data['kegiatanMitigasi'] = $mitigasi['tableData'];
return view($this->template.'.form',$data);
}
public function update($id = null)
{
$keyId = decode_id($id);
$data['title'] = $this->title;
$data['route'] = $this->route;
$data['keyId'] = $id;
$data['item'] = LembarPengesahaan::where('id',$keyId)->first();
return view($this->template.'.form',$data);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$request->validate([
'agency_id' => 'required',
'file' => 'required',
'type' => 'required',
]);
try {
if(@$request->secure_id){
$ag = LembarPengesahaan::find(decode_id(@$request->secure_id));
$ag->agency_id = $request->agency_id;
$ag->type = $request->type;
$ag->file = $request->file;
$ag->save();
}else{
$ag = new LembarPengesahan;
$ag->agency_id = $request->agency_id;
$ag->type = $request->type;
$ag->file = $request->file;
$ag->status = 1;
$ag->save();
}
return redirect()->route($this->route.'.index')->with('success', 'Lembar Pengesahan berhasil ditambahkan.');
} catch (\Exception $e) {
return back()->withErrors(['error' => 'Lembar Pengesahan gagal disimpan. Silakan coba lagi. Error: ' . $e->getMessage()]);
}
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
$data['ar'] = LembarPengesahaan::find($id);
$data['route'] = $this->route;
$data['title'] = $this->title;
return view($this->template.'.form', $data);
}
/**
* Update the specified resource in storage.
*/
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}
}

View File

@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class LembarPengesahan extends Model
{
use SoftDeletes;
protected $table = 'lembar_pengesahan';
protected $primaryKey = 'LembarPengesahanId';
protected $guarded = [];
}

View File

@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('lembar_pengesahan', function (Blueprint $table) {
$table->id('LembarPengesahanId');
$table->integer('user_id');
$table->string('agency_id');
$table->year('tahun');
$table->string('type'); //Adaptasi, Mitigasi, Inventory
$table->json('sektor')->nullable();
$table->json('form_id')->nullable();
$table->string('file')->nullable();
$table->text('keterangan')->nullable();
$table->integer('status')->default(0);
$table->timestampsTz();
$table->softdeletesTz();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('lembar_pengesahans');
}
};

View File

@ -72,11 +72,11 @@
<td>{{ $a->sektor }}</td>
<td>{{ $a->sub_sektor }}</td>
<td class="text-center">
<a href="{{ route($route.'.view', $a->id) }}" class="text-secondary me-2">
<i class="ti ti-eye"></i>
<a href="{{ route($route.'.view', $a->id) }}" class="btn btn-warning btn-sm">
<i class="mdi mdi-eye-outline"></i>
</a>
<a href="{{ route($route.'.edit', $a->id) }}" class="text-secondary">
<i class="ti ti-pencil"></i>
<a href="{{ route($route.'.edit', $a->id) }}" class="btn btn-primary btn-sm">
<i class="bx bx-edit"></i>
</a>
</td>
</tr>

View File

@ -83,11 +83,11 @@
</td>
<td class="text-center">{{ $m->revisi ?? '--' }}</td>
<td class="text-center">
<a href="{{ route($route.'.view', $m->id) }}" class="text-secondary me-2">
<i class="ti ti-eye"></i>
<a href="{{ route($route.'.view', $m->id) }}" class="btn btn-warning btn-sm">
<i class="mdi mdi-eye-outline"></i>
</a>
<a href="{{ route($route.'.edit', $m->id) }}" class="text-secondary">
<i class="ti ti-pencil"></i>
<a href="{{ route($route.'.edit', $m->id) }}" class="btn btn-primary btn-sm">
<i class="bx bx-edit"></i>
</a>
</td>
</tr>

View File

@ -14,7 +14,7 @@
</div>
<br/><br/>
<form action="{{ route('adaptasi-form.update', $adaptation->id) }}" method="POST" onsubmit="return false;">
<form action="{{ route('modules.adaptasi-form.update', $adaptation->id) }}" method="POST" onsubmit="return false;">
@csrf
<div class="ml-1 mt-4 d-flex justify-content-between align-items-center">
@ -95,7 +95,7 @@
<input type="text" class="form-control" name="dokumen" placeholder="Masukkan Dokumen/Kebijakan" value="{{ old('dokumen', $adaptation->dokumen) }}">
</div>
<div class="mt-4 mb-4 text-right">
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse2">
<button type="button" class="btn btn-submit btn-primary px-4 py-2" data-target="#collapse2">
Selanjutnya
</button>
</div>
@ -157,7 +157,7 @@
</div>
</div>
<div class="mt-4 mb-4 text-right">
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse3">
<button type="button" class="btn btn-submit btn-primary px-4 py-2" data-target="#collapse3">
Selanjutnya
</button>
</div>
@ -181,7 +181,7 @@
<textarea class="form-control" name="detail_kegiatan" id="detail_kegiatan" rows="3" placeholder="Isi detail kegiatan di sini">{{ old('detail_kegiatan', $adaptation->detail_kegiatan) }}</textarea>
</div>
<div class="mt-4 mb-4 text-right">
<button type="submit" id="final-submit" class="btn btn-submit px-4 py-2">
<button type="submit" id="final-submit" class="btn btn-submit btn-primary px-4 py-2">
Simpan
</button>
</div>
@ -200,6 +200,7 @@
@section('js')
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script>
var base_url = '{{ url("/") }}';
// ------- ALOKASI AND REALISASI --------
function formatCurrency(val) {
if (!val) return '';
@ -296,7 +297,7 @@
return txt.value;
}
function loadSektor(selectedValue = null) {
return $.get('/adaptasi/form-adaptasi-sector-dropdown', {})
return $.get(base_url+'/adaptasi/form-adaptasi-sector-dropdown', {})
.then(data => {
const $dropdown = $('#sektor-dropdown').empty();
$dropdown.append('<option value="">Pilih Sektor</option>')
@ -309,7 +310,7 @@
}
function loadSubSektor(sector, selectedValue = null) {
return $.get('/adaptasi/form-adaptasi-subsector-dropdown', { sector })
return $.get(base_url+'/adaptasi/form-adaptasi-subsector-dropdown', { sector })
.then(data => {
const $dropdown = $('#subsektor-dropdown').empty();
$dropdown.append('<option value="">Pilih Sub-Sektor</option>');
@ -322,7 +323,7 @@
}
function loadKategoriAksi(sector, subSector, selectedValue = null) {
return $.get('/adaptasi/form-adaptasi-kategoriaksi-dropdown', { sub_sector: subSector, sector: sector })
return $.get(base_url+'/adaptasi/form-adaptasi-kategoriaksi-dropdown', { sub_sector: subSector, sector: sector })
.then(data => {
const $dropdown = $('#kategoriaksi-dropdown').empty();
$dropdown.append('<option value="">Pilih Kategori Aksi</option>');
@ -335,7 +336,7 @@
}
function loadJenisAksi(sector, subSector, kategori, selectedValue = null) {
return $.get('/adaptasi/form-adaptasi-jenisaksi-dropdown', { sub_sector: subSector, sector: sector, kategori: kategori })
return $.get(base_url+'/adaptasi/form-adaptasi-jenisaksi-dropdown', { sub_sector: subSector, sector: sector, kategori: kategori })
.then(data => {
const $dropdown = $('#jenisaksi-dropdown').empty();
$dropdown.append('<option value="">Pilih Jenis Aksi</option>');
@ -348,7 +349,7 @@
}
function loadAksi(sector, subSector, kategori, jenis, selectedValue = null) {
return $.get('/adaptasi/form-adaptasi-aksi-dropdown', { sub_sector: subSector, sector: sector, kategori: kategori, jenis: jenis })
return $.get(base_url+'/adaptasi/form-adaptasi-aksi-dropdown', { sub_sector: subSector, sector: sector, kategori: kategori, jenis: jenis })
.then(data => {
const $dropdown = $('#aksi-dropdown').empty();
$dropdown.append('<option value="">Pilih Aksi</option>');
@ -494,7 +495,7 @@
formData += '&adaptation_id=' + encodeURIComponent(adaptationId);
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
$.post("{{ route('adaptasi-form.store-part1') }}", formData)
$.post("{{ route('modules.adaptasi-form.store-part1') }}", formData)
.done(response => {
if(response.success) {
$('#collapse1').one('hidden.bs.collapse', () => {
@ -520,7 +521,7 @@
let formData = $('#collapse2').find('input, select, textarea').serialize();
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
$.post("{{ route('adaptasi-form.store-part2') }}", formData)
$.post("{{ route('modules.adaptasi-form.store-part2') }}", formData)
.done(function(response) {
if(response.success) {
$('#collapse2').one('hidden.bs.collapse', () => {
@ -565,16 +566,4 @@
});
});
</script>
@endsection
rror(xhr);
alert('Terjadi kesalahan saat menyimpan data.');
}
});
});
});
</script>
@endsection
});
});
</script>
@endsection
@endsection

View File

@ -20,7 +20,7 @@
</div>
<br/><br/>
<form action="{{ route('mitigasi-form.update', $mitigation->id) }}" method="POST" onsubmit="return false;">
<form action="{{ route('modules.mitigasi-form.update', $mitigation->id) }}" method="POST" onsubmit="return false;">
@csrf
<div class="ml-1 mt-4 d-flex justify-content-between align-items-center">
@ -110,7 +110,7 @@
</div>
<div class="mt-4 text-right">
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse2">
<button type="button" class="btn btn-submit btn-primary px-4 py-2" data-target="#collapse2">
Selanjutnya
</button>
</div>
@ -394,7 +394,7 @@
</div>
<div class="mt-4 text-right">
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse3">
<button type="button" class="btn btn-submit btn-primary px-4 py-2" data-target="#collapse3">
Selanjutnya
</button>
</div>
@ -484,7 +484,7 @@
</div>
<div class="mt-4 text-right">
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse4">
<button type="button" class="btn btn-submit btn-primary px-4 py-2" data-target="#collapse4">
Selanjutnya
</button>
</div>
@ -523,22 +523,116 @@
@if (!empty($sumberDataList))
@foreach ($sumberDataList as $index => $sumber)
<x-sumber-data-card
<div class="card card-box sumber-data-card mt-4 mb-4">
<div class="card-header" id="heading4-{{ $index + 1 }}">
<h6 class="mb-0">Sumber Data {{ $index + 1 }}</h6>
</div>
<div class="card-body">
<div class="card card-box">
<div class="card-header" id="heading4-{{ $index + 1 }}-1">
<h6 class="mb-0">Sumber Data</h6>
</div>
<div class="card-body">
<div class="form-group mt-4">
<label class="label-title" for="titleSourceReference{{ $index + 1 }}">
JUDUL SUMBER DATA
</label>
<input type="text" class="form-control" name="titleSourceReference[]" id="titleSourceReference{{ $index + 1 }}" value="{{ $sumber['title'] }}">
</div>
<div class="form-group mt-4">
<label class="label-title" for="yearSourceReference{{ $index + 1 }}">
Tahun
</label>
<select class="form-control select-button" name="yearSourceReference[]" id="yearSourceReference{{ $index + 1 }}">
<option value="">-- Pilih Tahun --</option>
@foreach($years as $year)
<option value="{{ $year }}" {{ $year == $sumber['year'] ? 'selected' : '' }}>
{{ $year }}
</option>
@endforeach
</select>
</div>
<div class="form-group mt-4">
<label class="label-title" for="linkSourceReference{{ $index + 1 }}">
TAUTAN URL FILE
</label>
<input type="text" class="form-control" name="linkSourceReference[]" id="linkSourceReference{{ $index + 1 }}" value="{{ $sumber['link'] }}">
<p class="text-muted mt-1" style="font-size: 10px;">
Tautan URL langsung menuju file (jika dapat diunduh)
</p>
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="button" class="btn btn-danger btn-delete px-4 py-2" onclick="removeSumberData(this)">Hapus</button>
</div>
</div>
{{-- <x-sumber-data-card
:number="$index + 1"
:title="$sumber['title'] ?? ''"
:yearSelected="$sumber['year'] ?? ''"
:link="$sumber['link'] ?? ''"
:years="$years"
/>
/> --}}
@endforeach
@else
<x-sumber-data-card :number="1" :years="$years" />
<div class="card card-box sumber-data-card mt-4 mb-4">
<div class="card-header" id="heading4-1">
<h6 class="mb-0">Sumber Data 1</h6>
</div>
<div class="card-body">
<div class="card card-box">
<div class="card-header" id="heading4-1-1">
<h6 class="mb-0">Sumber Data</h6>
</div>
<div class="card-body">
<div class="form-group mt-4">
<label class="label-title" for="titleSourceReference1">
JUDUL SUMBER DATA
</label>
<input type="text" class="form-control" name="titleSourceReference[]" id="titleSourceReference1" value="">
</div>
<div class="form-group mt-4">
<label class="label-title" for="yearSourceReference1">
Tahun
</label>
<select class="form-control select-button" name="yearSourceReference[]" id="yearSourceReference1">
<option value="">-- Pilih Tahun --</option>
@foreach($years as $year)
<option value="{{ $year }}">
{{ $year }}
</option>
@endforeach
</select>
</div>
<div class="form-group mt-4">
<label class="label-title" for="linkSourceReference1">
TAUTAN URL FILE
</label>
<input type="text" class="form-control" name="linkSourceReference[]" id="linkSourceReference1" value="">
<p class="text-muted mt-1" style="font-size: 10px;">
Tautan URL langsung menuju file (jika dapat diunduh)
</p>
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="button" class="btn btn-danger btn-delete px-4 py-2" onclick="removeSumberData(this)">Hapus</button>
</div>
</div>
{{-- <x-sumber-data-card :number="1" :years="$years" /> --}}
@endif
</div>
<template id="sumberDataTemplate">
{!! str_replace('__INDEX__', '${index}',
view('components.sumber-data-card', [
view('modules.components.sumber-data-card', [
'number' => '__INDEX__',
'years' => $years,
'title' => '',
@ -558,7 +652,7 @@
</div>
<div class="col-md-6">
<div class="mt-4 text-right">
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse5">
<button type="button" class="btn btn-submit btn-primary px-4 py-2" data-target="#collapse5">
Selanjutnya
</button>
</div>
@ -652,7 +746,7 @@
</div>
<div class="mt-4 mb-4 text-right">
<button type="button" class="btn btn-submit px-4 py-2" data-target="#collapse6">
<button type="button" class="btn btn-submit btn-primary px-4 py-2" data-target="#collapse6">
Submit
</button>
</div>
@ -701,6 +795,7 @@
<script src="https://unpkg.com/leaflet.markercluster@1.4.1/dist/leaflet.markercluster.js"></script>
<script src="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.js"></script>
<script>
var base_url = '{{ url("/") }}';
// -------- MAP INITIALIZATION --------
let marker = null;
let map = null;
@ -934,7 +1029,7 @@
// -------- DROPDOWN LOADING FUNCTIONS WITH PROMISE --------
function loadSektor(selectedValue = null) {
return $.get('/mitigasi/form-mitigasi-sector-dropdown', {})
return $.get(base_url+'/mitigasi/form-mitigasi-sector-dropdown', {})
.then(data => {
const $dropdown = $('#sektor-dropdown').empty();
$dropdown.append('<option value="">Pilih Sektor</option>')
@ -947,7 +1042,7 @@
}
function loadSubSektor(sector, selectedValue = null) {
return $.get('/mitigasi/form-mitigasi-subsector-dropdown', { sector })
return $.get(base_url+'/mitigasi/form-mitigasi-subsector-dropdown', { sector })
.then(data => {
const $dropdown = $('#subsektor-dropdown').empty();
$dropdown.append('<option value="">Pilih Sub-Sektor</option>');
@ -960,7 +1055,7 @@
}
function loadPerhitungan(sector, subSector, selectedValue = null) {
return $.get('/mitigasi/form-mitigasi-perhitungan-dropdown', { sub_sector: subSector, sector: sector })
return $.get(base_url+'/mitigasi/form-mitigasi-perhitungan-dropdown', { sub_sector: subSector, sector: sector })
.then(data => {
const $dropdown = $('#perhitungan-dropdown').empty();
$dropdown.append('<option value="">Pilih Kategori/ Mode Perhitungan</option>');
@ -973,7 +1068,7 @@
}
function loadSubAktivitas(sector, subSector, perhitungan, selectedValue = null) {
return $.get('/mitigasi/form-mitigasi-subaktivitas-dropdown', { sub_sector: subSector, sector: sector, activity: perhitungan })
return $.get(base_url+'/mitigasi/form-mitigasi-subaktivitas-dropdown', { sub_sector: subSector, sector: sector, activity: perhitungan })
.then(data => {
const $dropdown = $('#subactivity-dropdown').empty();
$dropdown.append('<option value="">Pilih Sub-Aktivitas</option>');
@ -1008,7 +1103,7 @@
}
function loadRAD(subSector, selectedValue = null) {
return $.get('/mitigasi/form-mitigasi-aksi-rad', { sub_sector: subSector })
return $.get(base_url+'/mitigasi/form-mitigasi-aksi-rad', { sub_sector: subSector })
.then(data => {
const $dropdown = $('#rad-dropdown').empty();
$dropdown.append('<option value="">Tambah kegiatan di luar RAD</option>');
@ -1021,7 +1116,7 @@
}
function loadKabupaten(selectedValue = null) {
return $.get('/mitigasi/form-kabupaten', {})
return $.get(base_url+'/mitigasi/form-kabupaten', {})
.then(data => {
const $dropdown = $('#kabupaten').empty();
$dropdown.append('<option value="">Pilih Kabupaten Kota</option>');
@ -1034,7 +1129,7 @@
}
function loadKecamatan(kabkotId, selectedValue = null) {
return $.get('/mitigasi/form-kecamatan', {kabkot_id: kabkotId})
return $.get(base_url+'/mitigasi/form-kecamatan', {kabkot_id: kabkotId})
.then(data => {
const $dropdown = $('#kecamatan').empty();
$dropdown.append('<option value="">Pilih Kecamatan</option>');
@ -1047,7 +1142,7 @@
}
function loadKelurahan(kabkotId, kecId, selectedValue = null) {
return $.get('/mitigasi/form-kelurahan', {kabkot_id: kabkotId, kec_id: kecId})
return $.get(base_url+'/mitigasi/form-kelurahan', {kabkot_id: kabkotId, kec_id: kecId})
.then(data => {
const $dropdown = $('#kelurahan').empty();
$dropdown.append('<option value="">Pilih Kelurahan</option>');
@ -1081,7 +1176,7 @@
// $('#section4').show();
// $('#accordion-4').html('<p class="text-muted ml-1">Loading...</p>');
// $.get('/mitigasi/form-mitigasi-question', { mitigation_id })
// $.get(base_url+'/mitigasi/form-mitigasi-question', { mitigation_id })
// .done(data => {
// if (!data || !data.length) {
// $('#accordion-4').html(
@ -1306,7 +1401,7 @@
// ${allHtml}
// ${multipleLayout}
// <div class="mt-4 text-right">
// <button type="submit" id="final-submit" class="btn btn-submit px-4 py-2">
// <button type="submit" id="final-submit" class="btn btn-submit btn-primary px-4 py-2">
// Submit
// </button>
// </div>
@ -1504,7 +1599,7 @@
$('#section4').show();
$('#accordion-4').html('<p class="text-muted ml-1">Loading...</p>');
$.get('/mitigasi/form-mitigasi-question', { mitigation_id })
$.get(base_url+'/mitigasi/form-mitigasi-question', { mitigation_id })
.done(data => {
if (!data || !data.length) {
$('#accordion-4').html(
@ -1736,7 +1831,7 @@
${allHtml}
${multipleLayout}
<div class="mt-4 text-right">
<button type="submit" id="final-submit" class="btn btn-submit px-4 py-2">
<button type="submit" id="final-submit" class="btn btn-submit btn-primary px-4 py-2">
Submit
</button>
</div>
@ -2129,7 +2224,7 @@
formData += '&mitigation_id=' + encodeURIComponent(mitigationId);
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
$.post("{{ route('mitigasi-form.store-part1') }}", formData)
$.post("{{ route('modules.mitigasi-form.store-part1') }}", formData)
.done(response => {
if(response.success){
$('#collapse1').one('hidden.bs.collapse', () => {
@ -2155,7 +2250,7 @@
let formData = $('#collapse2').find('input, select, textarea').serialize();
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
$.post("{{ route('mitigasi-form.store-part2') }}", formData)
$.post("{{ route('modules.mitigasi-form.store-part2') }}", formData)
.done(function(response) {
if (response.success) {
$('#collapse2').one('hidden.bs.collapse', () => {
@ -2177,7 +2272,7 @@
let formData = $('#collapse3').find('input, select, textarea').serialize();
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
$.post("{{ route('mitigasi-form.store-part3') }}", formData)
$.post("{{ route('modules.mitigasi-form.store-part3') }}", formData)
.done(function(response) {
if (response.success) {
$('#collapse3').one('hidden.bs.collapse', () => {
@ -2205,7 +2300,7 @@
formData.append('_token', document.querySelector('meta[name="csrf-token"]').getAttribute('content'));
fetch("{{ route('mitigasi-form.store-part4') }}", {
fetch("{{ route('modules.mitigasi-form.store-part4') }}", {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: formData.toString()
@ -2232,7 +2327,7 @@
let formData = $('#collapse5').find('input, select, textarea').serialize();
formData += '&_token=' + $('meta[name="csrf-token"]').attr('content');
$.post("{{ route('mitigasi-form.store-part5') }}", formData)
$.post("{{ route('modules.mitigasi-form.store-part5') }}", formData)
.done(function(response) {
if(response.success) {
$('#collapse5').one('hidden.bs.collapse', () => {

View File

@ -0,0 +1,168 @@
@extends('layouts.master')
@section('content')
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-header">
<i class="mdi mdi-note"></i> {{$title}}
</div>
<form action="{{route($route.'.store')}}" method="POST" class="" enctype="multipart/form-data">
{{csrf_field()}}
<div class="card-body">
<div class="row">
<div class="col-md-12">
<input type="hidden" name="secure_id" value="{{@$keyId}}">
</div>
<div class="col-12 mb-3">
<div class="form-group">
<label class="col-xl-12 form-label">Jenis Pengesahan</label>
<div class="col-12 ">
<select name="type" class="form-control select2 type" id="" required>
<option value="">-- PILIH JENIS PENGESAHAN --</option>
<option {{@$item->type == 'adaptasi' ? 'selected' : ''}} value="adaptasi">Adaptasi</option>
<option {{@$item->type == 'mitigasi' ? 'selected' : ''}} value="mitigasi">Mitigasi</option>
<option {{@$item->type == 'inventory' ? 'selected' : ''}} value="inventory">Inventory</option>
</select>
@error('type')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-12 mb-3 d-none inventory">
<div class="form-group">
<label class="col-xl-12 form-label">Sektor</label>
<div class="col-12 ">
<select name="sektor" class="form-control select2" id="" required>
<option value="">-- PILIH SEKTOR --</option>
</select>
@error('type')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-12 mb-3 d-none inventory">
<div class="form-group">
<label class="col-xl-12 form-label">Sub Sektor</label>
<div class="col-12 ">
<select name="subsektor[]" class="form-control select2" id="" required multiple>
</select>
@error('type')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-12 mb-3 d-none adaptasi">
<div class="form-group">
<label class="col-xl-12 form-label">Kegiatan Adaptasi</label>
<div class="col-12 ">
<select name="kegiatan_adaptasi[]" class="form-control select2" multiple id="" required>
@foreach($kegiatanAdaptasi as $a)
<option value="{{ $a->id }}">
{{ $a->nama_kegiatan }} >>
{{ $a->sektor }} >>
{{ $a->sub_sektor }}
</option>
@endforeach
</select>
@error('kegiatan')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-12 mb-3 d-none mitigasi">
<div class="form-group">
<label class="col-xl-12 form-label">Kegiatan Mitigasi</label>
<div class="col-12 ">
<select name="kegiatan_mitigasi[]" class="form-control select2" multiple id="" required>
@foreach($kegiatanMitigasi as $m)
<option value="{{ $m->id }}">
{{ Str::limit($m->nama_kegiatan, 60) }} >>
{{ $m->sektor }} >>
{{ $m->sub_sektor }}
</option>
@endforeach
</select>
@error('kegiatan')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-12 mb-3">
<div class="form-group">
<label class="col-xl-12 form-label">Keterangan (Opsional)</label>
<div class="col-12 ">
<textarea name="keterangan" class="form-control" id="" cols="10" rows="5">{{@$item->keterangan}}</textarea>
@error('keterangan')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-12 mb-3">
<div class="form-group">
<label class="col-xl-12 form-label">File Dokumen</label>
<div class="col-12 ">
<input type="file" name="file" accept=".pdf" class="form-control" id="">
@error('file')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<div class="row">
<div class="col-md-12 text-right">
<a href="{{route($route.'.index')}}" class="btn btn-danger"><i class="mdi mdi-cancel"></i> Batal</a>
<button type="submit" class="btn btn-success"><i class="mdi mdi-content-save-outline"></i> Simpan</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('js')
<script>
$('.type').on('change',function(){
var val = $(this).val();
if(val == 'inventory'){
$('.mitigasi').addClass('d-none');
$('.adaptasi').addClass('d-none');
$('.inventory').removeClass('d-none');
}else if(val == 'adaptasi'){
$('.mitigasi').addClass('d-none');
$('.adaptasi').removeClass('d-none');
$('.inventory').addClass('d-none');
}else if(val == 'mitigasi'){
$('.mitigasi').removeClass('d-none');
$('.adaptasi').addClass('d-none');
$('.inventory').addClass('d-none');
}else{
$('.mitigasi').addClass('d-none');
$('.adaptasi').addClass('d-none');
$('.inventory').addClass('d-none');
}
});
</script>
@endsection

View File

@ -0,0 +1,93 @@
@extends('layouts.master')
@section('css')
@endsection
@section('content')
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<div id="toolbar">
<a href="{{route($route.'.create')}}" id="btn-add" class="btn btn-primary">
<i class="mdi mdi-plus"></i> Tambah Data
</a>
</div>
<table class="table w-100"
data-search="true"
data-toggle="table"
data-pagination="true"
data-toolbar="#toolbar"
data-show-refresh="false"
data-url="{{route($route.'.grid')}}"
data-ajax-options='{"xhrFields": {"withCredentials": true}}'
data-sort-name="ids"
data-sort-order="desc"
data-page-size="10"
data-id-field="id"
id="grid-data">
<thead class="table-secondary text-primary">
<tr>
<th data-width="15%" class="text-center" data-field="action">#</th>
<th data-field="agency">Instansi</th>
<th data-field="type">Jenis Pengesahan</th>
<th data-field="file">File</th>
<th data-field="status">Status</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('js')
<script type="text/javascript">
$("#grid-data").on("click", ".remove_data", function() {
var base_url = $(this).attr('data-href');
var id = $(this).attr('data-id');
Swal.fire({
title: "Hapus Data!",
text: "Apa anda yakin ingin menghapus data ini ?",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Ya Hapus Sekarang",
cancelButtonText: "Tidak"
}).then((result) => {
if (result.isConfirmed) {
request = $.ajax({
url: base_url,
xhrFields: {
withCredentials: true
},
type: "GET",
});
// Callback handler that will be called on success
request.done(function(response, textStatus, jqXHR){
console.log(response);
alertify.success("Berhasil Menhapus Data");
$('#grid-data').bootstrapTable('refresh');
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
alertify.error("Gagal " + textStatus, errorThrown);
});
}
});
return false;
});
</script>
@endsection

View File

@ -4,6 +4,7 @@ use App\Http\Controllers\HomeController;
use App\Http\Controllers\DashboardAdaptasiController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\DashboardMitigasiController;
use App\Http\Controllers\LembarPengesahanController;
use App\Http\Controllers\Management\UserController;
use App\Http\Controllers\Management\UserSekolahController;
use App\Http\Controllers\Management\RoleController;
@ -58,7 +59,11 @@ use App\Http\Controllers\Tool\LockActivityController;
use App\Http\Controllers\Tool\ProdusenCalculateController;
Route::get('dashboard',[HomeController::class,'index'])->name('index');
Route::name('pengesahan.')->prefix('pengesahan')->group(function () {
Route::resource('/',LembarPengesahanController::class);
Route::get('grid',[LembarPengesahanController::class,'grid'])->name('grid');
Route::get('update/{id?}',[LembarPengesahanController::class,'update'])->name('update');
});
Route::name('dashboard.')->prefix('dashboard')->group(function () {
Route::name('inventory.')->prefix('inventory')->group(function () {
Route::resource('/',DashboardController::class);
@ -245,8 +250,8 @@ Route::name('management.')->prefix('management')->group(function () {
Route::get('/form-adaptasi-sector-dropdown', [FormAdaptasiController::class, 'getSectors']);
Route::get('/form-adaptasi-subsector-dropdown', [FormAdaptasiController::class, 'getSubSectors']);
Route::get('/form-adaptasi-kategoriaksi-dropdown', [FormAdaptasiController::class, 'getKategoriAksi']);
// Route::get('/form-adaptasi-jenisaksi-dropdown', [FormAdaptasiController::class, 'getJenisAksi']);
// Route::get('/form-adaptasi-aksi-dropdown', [FormAdaptasiController::class, 'getAksi']);
Route::get('/form-adaptasi-jenisaksi-dropdown', [FormAdaptasiController::class, 'getJenisAksi']);
Route::get('/form-adaptasi-aksi-dropdown', [FormAdaptasiController::class, 'getAksi']);
// This for partial save
Route::post('/store-part1', [FormAdaptasiController::class, 'storePart1'])->name('adaptasi-form.store-part1');