main
Ilham Wara Nugroho 2026-01-21 12:39:54 +07:00
parent c27d9845d3
commit 59d394edf3
14 changed files with 906 additions and 94 deletions

View File

@ -229,7 +229,7 @@ if (!function_exists('kuesionerLogStatus')) {
if(@$log->status == 11){
$progress = '<span class="badge bg-success-light text-success">Terbit SK</span>';
}else{
$progress = '<span class="badge bg-warning-light text-warning">'.str_replace('_',' ',\Str::title($log->step)).'</span>';
$progress = '<span class="badge bg-warning text-white">'.str_replace('_',' ',\Str::title($log->step)).'</span>';
}
}
return $progress;

View File

@ -19,6 +19,7 @@ class FrontController extends Controller
'kota' => Kuesioner::where('level',0)->count(),
'provinsi' => Kuesioner::where('level',1)->count(),
'nasional' => Kuesioner::where('level',2)->count(),
'mandiri' => Kuesioner::where('level',3)->count(),
];
$data['title'] = 'Beranda';
return view('index',$data);

View File

@ -194,103 +194,78 @@ class HomeController extends Controller
$action = '';
// if((access('is_create', $this->route.'.*')) || (access('is_update', $this->route.'.*'))){
// $action .= '<a href="#" data-secureid="'.encode_id($row->KuesionerId).'" data-toggle="modal" data-target="#modal" title="View Data" data-jenisusulan="'.$jenis_usulan.'" class="btn btn-xs btn-block btn-primary btnModal"><i class="fal fa-pencil text-white"></i></a>';
// }
if(($row->level+1) == 1){
$jenis_usulan = '<span class="badge bg-success-light text-success">Adiwiyata Kab/Kota</span>';
}elseif(($row->level+1) == 2){
$jenis_usulan = '<span class="badge bg-primary-light text-primary">Adiwiyata Provinsi</span>';
}elseif(($row->level+1) == 3){
$jenis_usulan = '<span class="badge bg-info-light text-info">Adiwiyata Nasional</span>';
}elseif(($row->level+1) == 4){
$jenis_usulan = '<span class="badge bg-warning-light text-warning">Adiwiyata Mandiri</span>';
if((permission('is_create','modules.kuesioner.*','module',false)) || (permission('is_update','modules.kuesioner.*','module',false))){
$action .= '<a href="'.url('kuesioner/update/'.encode_id($row->ms_sekolah_id)).'" data-toggle="tooltip" title="View Data" class="btn btn-xs btn-block btn-primary"><i class="fal fa-eye text-white"></i></a>';
if($row->tahun == date('Y')){
if(session('group_alias') == 'dinas'){
if($row->status == 0){
$action .= '<a href="#" data-href="'.url('kuesioner/verifikasi/'.encode_id($row->KuesionerId)).'" data-toggle="tooltip" title="Verifikasi Data" class="btn btn-xs btn-block btn-success verifikasi"><i class="fal fa-check text-white"></i></a>';
$action .= '<a href="#" data-href="'.url('kuesioner/tolak/'.encode_id($row->KuesionerId)).'" data-toggle="tooltip" title="Verifikasi Data" class="btn btn-xs btn-block btn-danger tolak"><i class="fal fa-times text-white"></i></a>';
}
}
}
}
$usulan = Usulan::where('sekolah','like','%'.$row->ms_sekolah_id.'%')->first();
if($row->level == 0){
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;Belum Pernah';
}elseif($row->level == 1){
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;Adiwiyata Kab/Kota';
}elseif($row->level == 2){
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;Adiwiyata Provinsi';
}elseif($row->level == 3){
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;Adiwiyata Nasional';
}elseif($row->level == 4){
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;Adiwiyata Mandiri';
}
$dok = DokumenAdministrasi::where('ms_sekolah_id',$row->ms_sekolah_id)->where('tahun',date('Y'))->first();
if(session('group_alias') == 'sekolah'){
if((@$dok->status == 0) || (@$dok->status == 2)){
if(@$dok->status != 0){
if($row->tahun == date('Y')){
$action .= '<a href="#" data-filetim="'.@$dok->file_sk_tim.'" data-fileusulan="'.@$dok->file_usulan.'" data-link="'.@$dok->link.'" data-level="'.$row->level.'" data-secureid="'.encode_id($row->KuesionerId).'" data-toggle="modal" data-target="#modal" title="View Data" data-jenisusulan="'.$jenis_usulan.'" class="btn btn-xs btn-block btn-primary btnModal"><i class="fal fa-pencil text-white"></i></a>';
}
}
}
}
// $action .= '<a href="#" data-link="'.@$dok->link.'" data-jenisusulan="'.$jenis_usulan.'" class="btn btn-xs btn-block btn-secondary toggle-row" data-toggle="tooltip" data-placement="top" title="JUDUL"><i class="fal fa-list text-white"></i></a>';
if((session('group_alias') == 'dinas') || (session('group_alias') == 'suku_dinas')){
if(@$dok){
if(@$dok->status == 0){
if($row->tahun == date('Y')){
$action .= '<a href="#" data-href="'.url('usulan/adiwiyata/administrasi/verifikasi/'.encode_id($dok->DokumenAdministrasiId)).'" data-toggle="tooltip" title="Verifikasi Data" class="btn btn-xs btn-block btn-success verifikasi"><i class="fal fa-check text-white"></i></a>';
$action .= '<a href="#" data-href="'.url('usulan/adiwiyata/administrasi/tolak/'.encode_id($dok->DokumenAdministrasiId)).'" data-toggle="tooltip" title="Verifikasi Data" class="btn btn-xs btn-block btn-danger tolak"><i class="fal fa-times text-white"></i></a>';
}
}
}else{
if($row->tahun == date('Y')){
$action .= '<a href="#" data-href="'.url('usulan/adiwiyata/administrasi/tolak_kosong/'.encode_id($row->KuesionerId)).'" data-toggle="tooltip" title="Verifikasi Data" class="btn btn-xs btn-block btn-danger tolak"><i class="fal fa-times text-white"></i></a>';
}
}
}
$fileUsulan = '';
$fileUsulan .= '<div class="btn-group">
<button type="button" class="btn btn-success btn-sm dropdown-toggle" data-toggle="dropdown">Lihat File</button>
<div class="dropdown-menu">';
if(@$dok->link){
$fileUsulan .= '<a download href="'.asset('uploads/'.@$dok->link).'" class="dropdown-item">Download SK Adiwiyata</a>';
}
if(@$dok->file_usulan){
$fileUsulan .= '<a download href="'.asset('uploads/'.@$dok->file_usulan).'" class="dropdown-item">Download Surat Usulan</a>';
}
if(@$dok->file_sk_tim){
$fileUsulan .= '<a download href="'.asset('uploads/'.@$dok->file_sk_tim).'" class="dropdown-item">Download SK Tim Adiwiyata</a>';
}
$fileUsulan .= '</div>
</div>';
if(@$dok){
if(@$dok->status == 1){
$labelDok = '<span class="badge bg-success-light">Dokumen Di Verifikasi</span>';
}elseif(@$dok->status == 2){
$labelDok = '<span class="badge bg-danger-light">Dokumen Di Tolak</span>';
$labelDok = '<span class="badge bg-danger-light text-white">Dokumen Di Tolak</span>';
}else{
$labelDok = '<span class="badge bg-warning-light">Menuggu Verifikasi Dokumen</span>';
$labelDok = '<span class="badge bg-danger-light text-white">Menuggu Verifikasi Dokumen</span>';
}
}else{
$labelDok = '<span class="badge bg-danger-light">Belum Upload Dokumen</span>';
$labelDok = '<span class="badge bg-danger-light text-white">Belum Upload Dokumen</span>';
}
// if($row->status == 0){
// $labelDok .= '<br><span class="badge bg-danger-light">Menunggu Usulan Dari Dinas/Sudin</span>';
// }
$status = '';
if($row->status == 0){
$status = '<span class="badge bg-info-light text-info">Belum Diverifikasi</span>';
}elseif($row->status == 1){
$status = '<span class="badge bg-success-light text-success">Sudah Diverifikasi</span>';
}elseif($row->status == 2){
$status = '<span class="badge bg-danger-light text-danger">Ditolak</span>';
}elseif($row->status == 11){
$status = '<span class="badge bg-primary-light text-primary">Terbit SK</span>';
}else{
$log = KuesionerLog::where('kuesioner_id',$row->KuesionerId)->orderBy('created_at','DESC')->first();
$status = '<span class="badge bg-warning-light text-warning">'.str_replace('_',' ',\Str::title($log->step)).'</span>';
}
$sekolah = '';
$sekolah .= @$row->sekolah->nama_sekolah.'&nbsp;';
$sekolah .= '<span class="badge bg-info-light text-info">'.@$row->profile->tingkat->name.'</span>&nbsp;';
$sekolah .= '<span class="badge bg-primary-light text-primary">'.@$row->profile->status_sekolah.'</span>&nbsp;';
$dataSekolah = '';
$dataSekolah .= @$sekolah.'<br>';
$dataSekolah .= 'Usulan '.@$row->tahun.' : '.@$jenis_usulan.'<br>';
$sekolah .= @$row->sekolah->nama_sekolah.'<br>';
$sekolah .= '<span class="badge bg-success-light text-success">'.@$row->profile->tingkat->name.'</span>&nbsp;';
$sekolah .= '<span class="badge bg-primary-light text-primary mt-1">'.@$row->profile->status_sekolah.'</span>&nbsp;';
$sekolah .= '<span class="badge bg-secondary text-secondary text-left mt-1">'.@$row->profile->alamat_sekolah.'</span>&nbsp;';
$sekolah .= '<span class="badge text-left mt-1">'.@$row->sekolah->npsn.'</span>&nbsp;';
$_data[] = [
'no' => $key+1,
'id' => encode_id($row->id),
'npsn' => $row->sekolah->npsn,
'dataSekolah' => @$dataSekolah,
'nama' => $sekolah,
'tahun' => $row->tahun,
'status' => $labelDok,
'status_level' => '<span style="width:100%" class="badge bg-secondary">Level '.levelAdiwiyata($row->npsn).'</span>',
'status_level' => '<span style="width:100%" class="badge bg-success-light text-success">Level '.levelAdiwiyata($row->npsn).'</span>',
'wilayah' => $row->sekolah->kabupaten->name,
'kecamatan' => $row->sekolah->kecamatan->name,
'jenis_usulan' => '<span class="badge bg-success-light">'.$jenis_usulan.'</span>',
'fileUsulan' => $fileUsulan,
'alamat_sekolah' => $row->sekolah->alamat_sekolah,
'tingkat_sekolah' => $row->sekolah->tingkat->name,
'status_sekolah' => $row->sekolah->status,
'tahun' => $row->tahun,
'alamat_sekolah' => $row->profile->alamat_sekolah,
'status' => kuesionerLogStatus($row->KuesionerId).'<br>'.$labelDok,
'action' => $action,
];

View File

@ -84,6 +84,19 @@ class KuesionerController extends Controller
$penghargaan = '<i class="fal fa-trophy"></i>&nbsp;Adiwiyata Mandiri';
}
$dok = DokumenAdministrasi::where('ms_sekolah_id',$row->ms_sekolah_id)->where('tahun',date('Y'))->first();
if(@$dok){
if(@$dok->status == 1){
$labelDok = '<span class="badge bg-success text-white">Dokumen Di Verifikasi</span>';
}elseif(@$dok->status == 2){
$labelDok = '<span class="badge bg-danger-light">Dokumen Di Tolak</span>';
}else{
$labelDok = '<span class="badge bg-danger-light text-white">Menuggu Verifikasi Dokumen</span>';
}
}else{
$labelDok = '<span class="badge bg-danger-light">Belum Upload Dokumen</span>';
}
$status = '';
if($row->status == 0){
$status = '<span class="badge bg-info-light text-info">Belum Diverifikasi</span>';
@ -118,7 +131,7 @@ class KuesionerController extends Controller
'tahun' => $row->tahun,
'alamat_sekolah' => $row->profile->alamat_sekolah,
'penghargaan' => $penghargaan,
'status' => kuesionerLogStatus($row->KuesionerId),
'status' => kuesionerLogStatus($row->KuesionerId).'<br>'.$labelDok,
'action' => $action,
];

View File

@ -235,6 +235,7 @@ class AdministrasiController extends Controller
// $data = $request['data'];
$keyId = decode_id($request->secure_id);
// dd($keyId);
if(!@$keyId){
return response()->json(['status' => false,'message' => 'Maaf Terjadi Kesalahan','type' => 'error']);
@ -346,6 +347,15 @@ class AdministrasiController extends Controller
'status' => 0,
]);
$kuesioner = Kuesioner::find($keyId);
if(@$filePathTim){
$kuesioner->tim_adiwiyata_link = @$filePathTim;
}
if(@$filePath){
$kuesioner->link_sk_adiwiyata = @$filePath;
}
$kuesioner->save();
return response()->json(['status' => true,'message' => 'Berhasil Update Data','type' => 'success']);
}

View File

@ -0,0 +1,70 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SampahController extends Controller
{
protected $template = 'modules.sampah';
protected $route = 'modules.sampah';
protected $title = 'Sampah Terkelola';
/**
* Display a listing of the resource.
*/
public function index()
{
$data['title'] = $this->title;
$data['route'] = $this->route;
return view($this->template.'.index', $data);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}
}

View File

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class SampahTerkelola extends Model
{
use HasFactory;
}

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('sampah_terkelola', function (Blueprint $table) {
$table->id('SampahTerkelolaId');
$table->integer('ms_sekolah_id');
$table->year('tahun');
$table->integer('bulan');
$table->string('organik');
$table->string('sampah_anorganik');
$table->string('b3');
$table->string('minyak_jelantah');
$table->timestampsTz();
$table->softdeletesTz();
$table->foreign('ms_sekolah_id')->references('MsSekolahId')->on('ms_sekolah')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('sampah_terkelola');
}
};

View File

@ -41,7 +41,7 @@
</div>
</section>
<section id="section2" class="container mx-auto p-12 md:py-12">
<div class="grid grid-rows-1 md:grid-cols-3 gap-5">
<div class="grid grid-rows-1 md:grid-cols-4 gap-5">
<div class="bg-danger flex flex-col justify-around text-white rounded-xl gap-3 py-10 shadow-[10px_10px_10px_0px_rgba(0,0,0,0.25)]">
<div class="text-6xl lg:text-7xl font-extrabold text-center">{{ $usulan['kota'] }}</div>
<div class="flex justify-around items-center">
@ -78,6 +78,18 @@
</div> --}}
</div>
</div>
<div class="bg-success flex flex-col justify-around text-white rounded-xl gap-3 py-10 shadow-[10px_10px_10px_0px_rgba(0,0,0,0.25)]">
<div class="text-6xl lg:text-7xl font-extrabold text-center">{{ $usulan['mandiri'] }}</div>
<div class="flex justify-around items-center">
<div class="flex flex-col items-center">
<span class="font-extrabold">Mandiri</span>
<span class="opacity-[70%]">Sekolah Adiwiyata</span>
</div>
{{-- <div>
<span class="font-extrabold">2025</span>
</div> --}}
</div>
</div>
</div>
</section>
<section id="section3" class="container mx-auto p-12 md:py-12">

View File

@ -169,8 +169,8 @@
<div class="col-lg-6">
<div id="panel-4" class="card">
<div class="card-header d-flex justify-content-between">
<h5 class="fw-500 text-primary">Usulan Administrasi</h5>
<a href="{{ url('usulan/adiwiyata/administrasi') }}"><u>Lihat Semua&nbsp;<i class="fal fa-arrow-right"></i></u></a>
<h5 class="fw-500 text-primary">Verifikasi Kuesioner Leveling</h5>
<a href="{{ url('kuesioner') }}"><u>Lihat Semua&nbsp;<i class="fal fa-arrow-right"></i></u></a>
</div>
<div class="card-body">
<div class="table-responsive">
@ -189,16 +189,15 @@
id="grid-data">
<thead class="table-secondary">
<tr>
<th data-field="action">No</th>
<th data-field="dataSekolah">Data Sekolah</th>
<th data-field="fileUsulan">File</th>
<th data-field="action">#</th>
<th data-field="no">No</th>
{{-- <th data-field="status_level">Status Level</th> --}}
{{-- <th data-field="npsn">NPSN</th> --}}
<th data-field="nama">Nama Sekolah</th>
<th data-field="wilayah">Wilayah</th>
<th data-field="kecamatan">Kecamatan</th>
<!-- <th data-field="penghargaan">Penghargaan Terakhir</th> -->
<th data-field="status">Status</th>
{{-- <th data-field="nama_sekolah">Nama Sekolah</th> --}}
{{-- <th data-field="kab">Kab/Kota</th> --}}
{{-- <th data-field="kecamatan">Kecamatan</th> --}}
{{-- <th data-field="tahun">Tahun</th> --}}
{{-- <th data-field="usulan_sebelumnya">Usulan Sebelumnya</th> --}}
{{-- <th data-field="pengajuan_usulan">Pengajuan Usulan</th> --}}
</tr>
</thead>
<tbody></tbody>

View File

@ -46,6 +46,57 @@
</ul>
</div>
@endif
@if((session('group_alias') == 'dinas') || (session('group_alias') == 'suku_dinas'))
<div class="card mb-2 bg-primary-light text-primary">
<div class="card-body">
<h4 class="fw-500"><i class="fal fa-info-circle"></i>&nbsp;Verifikasi Kuesioner Leveling</h4>
<p>Sebelum melakukan verifikasi kuesioner leveling, silakan lakukan pengecekan validitas data terlebih dahulu untuk memastikan seluruh isian telah sesuai dan lengkap.</p>
<div class="d-flex gap-2">
@if(@$dok)
@if(@$dok->status == 0)
@if($kuesioner->tahun == date('Y'))
<a href="#" data-href="{{url('usulan/adiwiyata/administrasi/verifikasi/'.encode_id($dok->DokumenAdministrasiId))}}" data-toggle="tooltip" title="Verifikasi Data" class="btn bg-success verifikasi text-white"><i class="fal fa-check"></i> Verifikasi</a>
<a href="#" data-href="{{url('usulan/adiwiyata/administrasi/tolak/'.encode_id($dok->DokumenAdministrasiId))}}" data-toggle="tooltip" title="Tolak Verifikasi Data" class="btn bg-danger tolak text-white"><i class="fal fa-times"></i> Tolak Verifikasi</a>
@endif
@endif
@else
@if($kuesioner->tahun == date('Y'))
<a href="#" data-href="{{url('usulan/adiwiyata/administrasi/tolak_kosong/'.encode_id($kuesioner->KuesionerId))}}" data-toggle="tooltip" title="Tolak Verifikasi Data" class="btn bg-danger text-white tolak"><i class="fal fa-times text-white"></i> Tolak Verifikasi</a>
@endif
@endif
</div>
</div>
</div>
@elseif (session('group_alias') == 'sekolah')
@if(@$dok->status == 1)
<div class="card mb-2 bg-success-light text-success">
<div class="card-body">
<h4 class="fw-500"><i class="fal fa-info-circle"></i>&nbsp;Verifikasi Kuesioner Leveling</h4>
<p>Kuesioner Anda telah di-approve dan dinyatakan valid. Silakan melanjutkan ke tahapan berikutnya.</p>
<a href="{{ url('usulan/adiwiyata/kriteria') }}" class="btn btn-info">Pemenuhan Kriteria &nbsp; <i class="fal fa-arrow-right"></i></a>
</div>
</div>
@elseif(@$dok->status == 2)
<?php
if(($kuesioner->level+1) == 1){
$jenis_usulan = 'Keputusan Gubernur tentang penetapan Sekolah Adiwiyata Kab/Kota';
}elseif(($kuesioner->level+1) == 2){
$jenis_usulan = 'Keputusan Gubernur tentang penetapan Sekolah Adiwiyata Provinsi';
}elseif(($kuesioner->level+1) == 3){
$jenis_usulan = 'Keputusan Gubernur tentang penetapan Sekolah Adiwiyata Nasional';
}elseif(($kuesioner->level+1) == 4){
$jenis_usulan = 'Keputusan Gubernur tentang penetapan Sekolah Adiwiyata Mandiri';
}
?>
<div class="card mb-2 bg-danger-light text-white">
<div class="card-body">
<h4 class="fw-500"><i class="fal fa-info-circle"></i>&nbsp;Verifikasi Kuesioner Leveling</h4>
<p>Kuesioner Anda belum lolos verifikasi dan dinyatakan ditolak. Silakan periksa kembali isian kuesioner dan lakukan perbaikan.</p>
<a href="#" data-filetim="{{@$dok->file_sk_tim}}" data-fileusulan="{{@$dok->file_usulan}}" data-link="{{@$dok->link}}" data-level="{{$kuesioner->level}}" data-secureid="{{encode_id($kuesioner->KuesionerId)}}" data-toggle="modal" data-target="#modal" title="View Data" data-jenisusulan="{{$jenis_usulan}}" class="btn btn-primary btnModal">Perbaikan Data &nbsp; <i class="fal fa-pencil text-white"></i></a>
</div>
</div>
@endif
@endif
<form method="POST" action="{{route($route.'.store')}}" id="form" enctype="multipart/form-data">
{{csrf_field()}}
<div class="card">
@ -407,7 +458,7 @@
<div class="form-group sudahPernah {{@$kuesioner->level != 0 ? '' : 'd-none'}}">
<label class="fw-500 mb-3">Jika sudah pernah mendapatkan penghargaan adiwiyata, tahun berapa sekolah anda mendapatkan penghargaan adiwiyata?</label>
<div class="form-group">
<label>Tahun perolehan penghargaaan (kosongkan jika belum adiwiyata)</label>
<label class="fw-500 mb-3">Tahun perolehan penghargaaan (kosongkan jika belum adiwiyata)</label>
<select class="form-control form-control-sm tahun_penghargaan" name="tahun_penghargaan">
<option value="">Pilih Tahun</option>
@for($i = (date('Y')-5); $i <= (date('Y')); $i++)
@ -416,19 +467,39 @@
</select>
</div>
<div class="form-group">
<label>Upload File SK adiwiyata / perpanjangan (kosongkan jika belum mendapat adiwiyata)</label>
<input type="file" value="{{@$kuesioner->link_sk_adiwiyata}}" class="form-control form-control-sm link_sk_adiwiyata" name="link_sk_adiwiyata" placeholder="Link SK adiwiyata / perpanjangan (kosongkan jika belum mendapat adiwiyata)">
@if(@$kuesioner->link_sk_adiwiyata)
<div class="form-group">
<label class="fw-500 mb-3">Upload File SK adiwiyata / perpanjangan (kosongkan jika belum mendapat adiwiyata)</label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text bg-primary border-none">
<a class="text-white" href="{{asset('uploads/'.@$kuesioner->link_sk_adiwiyata)}}">Download File</a>
</div>
</div>
<input type="file" accept=".pdf value="{{@$kuesioner->link_sk_adiwiyata}}" class="form-control form-control-sm link_sk_adiwiyata" name="link_sk_adiwiyata" placeholder="Link SK adiwiyata / perpanjangan (kosongkan jika belum mendapat adiwiyata)">
</div>
</div>
@else
<div class="form-group">
<label class="fw-500 mb-3">Upload File SK adiwiyata / perpanjangan (kosongkan jika belum mendapat adiwiyata)</label>
<input type="file" value="{{@$kuesioner->link_sk_adiwiyata}}" class="form-control form-control-sm link_sk_adiwiyata" name="link_sk_adiwiyata" placeholder="Link SK adiwiyata / perpanjangan (kosongkan jika belum mendapat adiwiyata)">
</div>
@endif
</div>
</div>
<div class="form-group belumPernah {{@$kuesioner->level == 0 ? '' : 'd-none'}}">
@if(@$dok->file_usulan)
<div class="form-group">
<label class="fw-500 mb-3">Upload File Usulan Sekolah Adiwiyata</label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">
<a href="{{asset('uploads/'.@$dok->file_usulan)}}">Download File</a>
</div>
<div class="input-group-text">
<a href="{{asset('uploads/'.@$dok->file_usulan)}}">Download File</a>
</div>
</div>
<input type="file" accept=".pdf" class="form-control" name="file_usulan">
</div>
@ -452,6 +523,37 @@
</form>
</div>
</div>
<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered" role="document">
<form action="#" method="POST" enctype="multipart/form-data" id="formAdmin" style="width: 100%;">
{{csrf_field()}}
<input type="hidden" name="secure_id" class="secure_id" value="">
<div class="modal-content">
<div class="modal-header">
<h5><b>Perbaikan Data {{$title}}</b></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="fal fa-times"></i></span>
</button>
</div>
<div class="modal-body">
<div class="alert bg-primary-light text-primary mb-2">
<p class="mb-0"><i>Silahkan Upload Kembali File, Untuk Update Data</i></p>
</div>
<div class="bodyModal"></div>
</div>
@if(session('group_alias') == 'sekolah')
<div class="modal-footer">
<button type="submit" class="btn btn-primary" id="btnSave">Simpan</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
</div>
@endif
</div>
</form>
</div>
</div>
@endsection
@section('page-js')
<script type="text/javascript">
@ -555,5 +657,210 @@
});
});
$(".tolak").on("click", function() {
var base_url = $(this).attr('data-href');
var id = $(this).attr('data-id');
swal({
title: "Tolak Dokumen!",
text: "Apa anda yakin ingin tolak Dokumen ini ?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#BF3131",
confirmButtonText: "Tolak Sekarang",
cancelButtonText: "Batal",
closeOnConfirm: true,
closeOnCancel: true
},
function(isConfirm) {
if(isConfirm){
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);
toastr.success("Berhasil Update Data", 'Berhasil!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
window.location.href = '{{url("/kuesioner")}}';
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
};
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
toastr.error(
"Gagal "+textStatus, errorThrown
);
});
}
});
return false;
});
$(".verifikasi").on("click", function() {
var base_url = $(this).attr('data-href');
var id = $(this).attr('data-id');
swal({
title: "Verifikasi Dokumen!",
text: "Apa anda yakin ingin verifikasi Dokumen ini ?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#3F7D58",
confirmButtonText: "Approve Sekarang",
cancelButtonText: "Batal",
closeOnConfirm: true,
closeOnCancel: true
},
function(isConfirm) {
if(isConfirm){
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);
toastr.success("Berhasil Update Data", 'Berhasil!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
window.location.href = '{{url("/kuesioner")}}';
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
};
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
toastr.error(
"Gagal "+textStatus, errorThrown
);
});
}
});
return false;
});
$('.btnModal').on('click', function(e) {
$('.jenisusulan').html($(this).attr('data-jenisusulan'));
$('.secure_id').val($(this).attr('data-secureid'));
var assetURL = '{{asset("uploads")}}';
var link = $(this).attr('data-link');
var level = $(this).attr('data-level');
var filetim = $(this).attr('data-filetim');
var fileusulan = $(this).attr('data-fileusulan');
var div = '';
div += '<table class="table deleted table-nobordered wrap">';
if(level == 0){
div += '<tr>';
div += '<td width="20%">';
div += '<div>SK Tim Adiwiyata</div>';
div += '</td>';
div += '<td>';
div += '<input type="file" accept=".pdf" class="form-control is-required" name="sk_tim_adiwiyata">';
if(filetim != ''){
div += '<br><a href="'+assetURL+'/'+filetim+'" class="btn btn-sm btn-warning"><i class="fal fa-download "></i> File SK Tim Adiwiyata</a> <br>';
}
div += '<small class="text-danger">Format : .pdf, Maksimal File : 2MB</small>';
div += '</td>';
div += '</tr>';
div += '<tr>';
div += '<td width="20%">';
div += '<div>Surat Usulan</div>';
div += '</td>';
div += '<td>';
div += '<input type="file" accept=".pdf" class="form-control is-required" name="surat_usulan">';
if(fileusulan != ''){
div += '<br><a href="'+assetURL+'/'+fileusulan+'" class="btn btn-sm btn-warning"><i class="fal fa-download "></i> File Usulan</a> <br>';
}
div += '<small class="text-danger">Format : .pdf, Maksimal File : 2MB</small>';
div += '</td>';
div += '</tr>';
}else{
div += '<tr>';
div += '<td width="50%">';
div += '<div>'+$(this).attr('data-jenisusulan')+'</div>';
div += '</td>';
div += '<td>';
div += '<input type="file" accept=".pdf" class="form-control is-required" name="file">';
div += '<small class="text-danger">Format : .pdf, Maksimal File : 2MB</small>';
div += '</td>';
div += '</tr>';
}
div += '</table>';
$('.bodyModal').html(div);
if(link != ''){
$('.link').show();
$('.link').attr('href',link);
}else{
$('.link').hide();
$('.link').attr('href','');
}
});
$('#btnSave').on('click',function(e){
e.preventDefault();
let form = $('#formAdmin')[0];
let formData = new FormData(form);
let isValid = true; // Flag validasi
// Validasi manual field required
$('.is-required').each(function () {
let value = $(this).val()?.trim();
if (!value) {
isValid = false;
$(this).addClass("is-invalid");
} else {
$(this).removeClass("is-invalid");
}
});
if (!isValid) {
toastr.error("Harap isi semua field yang wajib diisi", 'Error!', { positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right' });
return;
}
$.ajax({
url: "{{route('modules.usulan_adiwiyata.administrasi.store')}}", // Ganti dengan URL API-mu
type: 'POST', // Bisa juga 'POST' kalau perlu
xhrFields: {
withCredentials: true
},
data: formData,
processData: false, // Penting untuk FormData
contentType: false, // Penting untuk FormData
dataType: 'json', // Format respons JSON
beforeSend: function () {
$('#loading-spinner').show(); // Menampilkan spinner
},
success: function (response) {
if(response.status == true){
toastr.success("Berhasil menyimpan data", 'Success!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
}else{
toastr.warning(response.message, {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
}
location.reload();
},
error: function (xhr, status, error) {
toastr.error("Maaf Terjadi Kesalahan Menyimpan Data", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
},
complete: function () {
$('#loading-spinner').hide(); // Sembunyikan spinner setelah request selesai
}
});
});
</script>
@endsection

View File

@ -0,0 +1,17 @@
@extends('layouts.master')
@section('page-css')
<link rel="stylesheet" media="screen, print" href="{{asset('assets/css/datagrid/datatables/datatables.bundle.css')}}">
@endsection
@section('content')
<div class="row">
<div class="col-lg-12">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est natus recusandae maiores distinctio modi illum placeat eveniet molestiae. Ab excepturi suscipit quisquam quas consectetur adipisci cumque quam reprehenderit quibusdam distinctio.</p>
</div>
</div>
@endsection
@section('page-js')
<script type="text/javascript">
</script>
@endsection

View File

@ -0,0 +1,353 @@
@extends('layouts.master')
@section('page-css')
<link rel="stylesheet" media="screen, print" href="{{asset('assets/css/datagrid/datatables/datatables.bundle.css')}}">
<link rel="stylesheet" href="{{asset('assets/css/bootstrap-table.min.css')}}">
@endsection
@section('content')
<div class="subheader">
<h1 class="subheader-title">
{{$title}}
</h1>
</div>
<div class="row">
<div class="col-lg-12">
<div id="panel-4" class="panel">
<div class="panel-container show">
<div class="panel-content">
<div id="toolbar">
<a class="btn btn-secondary btn-filter btn-sm text-white"><i class="fal fa-filter text-white"></i>&nbsp;Filter</a>
<a data-toggle="modal" data-target="#modal" class="btn btn-success btn-sm text-white"><i class="fal fa-plus text-white"></i>&nbsp;Tambah Data</a>
</div>
<table class="table w-100 wrap"
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="bg-primary-light text-primary">
<tr>
<th data-field="action">#</th>
<th data-field="no">No</th>
<th data-field="sekolah">Sekolah</th>
<th data-field="bulan">Tahun</th>
<th data-field="bulan">Bulan</th>
<th data-field="organik">Organik</th>
<th data-field="anorganik">An Organik</th>
<th data-field="b3">B3</th>
<th data-field="minyak_jelantah">Minyak Jelantah</th>
</tr>
</thead>
<tbody></tbody>
</table>
<!-- datatable end -->
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header bg-secondary">
<h5><b>Tambah Data Sampah Terkelola</b></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><i class="fal fa-times"></i></span>
</button>
</div>
<div class="modal-body">
<form action="{{ route($route.'.store') }}" method="POST">
{{ csrf_field() }}
<div class="row">
<div class="col-md-6 mb-2">
<div class="form-group">
<label class="col-xl-12 form-label">Sampah Organik</label>
<div class="col-12 pr-1">
<div class="input-group">
<input type="text" name="organik" class="form-control @error('organik') is-invalid @enderror" placeholder="Masukan Jumlah Sampah Organik">
<div class="input-group-append">
<button class="btn btn-default waves-effect waves-themed" type="button">Kg</button>
</div>
</div>
@error('organik')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-md-6 mb-2">
<div class="form-group">
<label class="col-xl-12 form-label">Sampah An Organik</label>
<div class="col-12 pr-1">
<div class="input-group">
<input type="text" name="anorganik" class="form-control @error('anorganik') is-invalid @enderror" placeholder="Masukan Jumlah Sampah An Organik">
<div class="input-group-append">
<button class="btn btn-default waves-effect waves-themed" type="button">Kg</button>
</div>
</div>
@error('anorganik')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-md-6 mb-2">
<div class="form-group">
<label class="col-xl-12 form-label">Sampah B3</label>
<div class="col-12 pr-1">
<div class="input-group">
<input type="text" name="b3" class="form-control @error('b3') is-invalid @enderror" placeholder="Masukan Jumlah Sampah B3">
<div class="input-group-append">
<button class="btn btn-default waves-effect waves-themed" type="button">Kg</button>
</div>
</div>
@error('b3')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-md-6 mb-2">
<div class="form-group">
<label class="col-xl-12 form-label">Minyak Jelantah</label>
<div class="col-12 pr-1">
<div class="input-group">
<input type="text" name="minyak_jelantah" class="form-control @error('minyak_jelantah') is-invalid @enderror" placeholder="Masukan Jumlah Minyak Jelantah">
<div class="input-group-append">
<button class="btn btn-default waves-effect waves-themed" type="button">Kg</button>
</div>
</div>
@error('minyak_jelantah')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Simpan</button>
</div>
</div>
</div>
</div>
@endsection
@section('page-js')
<script src="{{asset('assets/js/datagrid/datatables/datatables.bundle.js')}}"></script>
<script src="{{asset('assets/js/bootstrap-table.min.js')}}"></script>
<script type="text/javascript">
$('.btn-filter').on('click',function(){
$('#filter').toggleClass('d-none');
});
$("#grid-data").on("click", ".tolak", function() {
var base_url = $(this).attr('data-href');
var id = $(this).attr('data-id');
swal({
title: "Tolak Kuesioner!",
text: "Apa anda yakin ingin tolak kuesioner ini ?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#BF3131",
confirmButtonText: "Tolak Sekarang",
cancelButtonText: "Batal",
closeOnConfirm: true,
closeOnCancel: true
},
function(isConfirm) {
if(isConfirm){
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);
toastr.success("Berhasil Login", 'Berhasil!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
window.location.href = '{{url("/kuesioner")}}';
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
};
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
toastr.error(
"Gagal "+textStatus, errorThrown
);
});
}
});
return false;
});
$("#grid-data").on("click", ".verifikasi", function() {
var base_url = $(this).attr('data-href');
var id = $(this).attr('data-id');
swal({
title: "Verifikasi Kuesioner!",
text: "Apa anda yakin ingin verifikasi kuesioner ini ?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#3F7D58",
confirmButtonText: "Approve Sekarang",
cancelButtonText: "Batal",
closeOnConfirm: true,
closeOnCancel: true
},
function(isConfirm) {
if(isConfirm){
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);
toastr.success("Berhasil Login", 'Berhasil!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
window.location.href = '{{url("/kuesioner")}}';
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
};
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
toastr.error(
"Gagal "+textStatus, errorThrown
);
});
}
});
return false;
});
$('select').on("select2:selecting", function(e) {
var selectorOrigin = this.id;
var id = e.params.args.data.id;
if(selectorOrigin=='provinsi'){
$('#loading-spinner').show();
clear('kabupaten');
selector = 'kabupaten';
url_to = 'kabupaten';
getSelect(id, selector, url_to);
}
if(selectorOrigin=='kabupaten'){
$('#loading-spinner').show();
clear('kecamatan');
selector = 'kecamatan';
url_to = 'kecamatan';
getSelect(id, selector, url_to);
}
if(selectorOrigin=='kecamatan'){
$('#loading-spinner').show();
clear('sekolah');
selector = 'sekolah';
url_to = 'sekolah';
getSelect(id, selector, url_to);
}
});
function clear(elementId) {
$('#' + elementId).empty();
$('#' + elementId).select2();
}
function getSelect(id, selectTo, urlTo, selected = "") {
id = id;
var base_url = "{{url('/')}}";
//alert(id);
destino = "#" + selectTo;
valor = $('#' + id).find(":selected").val();
$.ajax({
method: "POST",
url: base_url + "/get/" + urlTo,
xhrFields: {
withCredentials: true
},
data: {
_token: '{{csrf_token()}}',
id: id
}
}).done(function(msg) {
obj = msg.data;
if (obj.length > 0) {
//Clear the current options
$(destino).empty();
if(selectTo=='kabupaten'){
$(destino).append('<option value="">-PILIH KABUPATEN/KOTA-</option>').select2("val", "0");
$.each(obj, function(index) {
value = obj[index].id;
text = obj[index].name;
$(destino).append('<option value=' + value + '>' + text + '</option>');
});
console.log(selected)
if (selected) {
$(destino).val(selected).trigger('change');
selected = "";
}
}
if(selectTo=='kecamatan'){
$(destino).append('<option value="">-PILIH KECAMATAN-</option>').select2("val", "0");
$.each(obj, function(index) {
value = obj[index].id;
text = obj[index].name;
$(destino).append('<option value=' + value + '>' + text + '</option>');
});
console.log(selected)
if (selected) {
$(destino).val(selected).trigger('change');
selected = "";
}
}
} else {
if(selectTo=='provinsi'){
$(destino).empty().append('<option value="0">-PILIH PROVINSI-</option>').select2("val", "0");
}
if(selectTo=='kabupaten'){
$(destino).empty().append('<option value="0">-PILIH KABUPATEN/KOTA-</option>').select2("val", "0");
}
if(selectTo=='kecamatan'){
$(destino).empty().append('<option value="0">-PILIH KECAMATAN-</option>').select2("val", "0");
}
}
$('#loading-spinner').hide();
});
return false;
}
</script>
@endsection

View File

@ -6,6 +6,7 @@ use App\Http\Controllers\HomeController;
use App\Http\Controllers\AjaxController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\KuesionerController;
use App\Http\Controllers\SampahController;
use App\Http\Controllers\Master\IndikatorController;
use App\Http\Controllers\Master\KomponenController;
use App\Http\Controllers\Master\FormKriteriaController;
@ -80,6 +81,12 @@ Route::name('kuesioner.')->prefix('kuesioner')->group(function () {
Route::get('/tolak/{id?}',[KuesionerController::class,'tolak'])->name('tolak');
});
Route::name('sampah.')->prefix('sampah')->group(function () {
Route::resource('/',SampahController::class);
Route::get('/update/{id}',[SampahController::class,'update'])->name('update');
Route::get('/grid',[SampahController::class,'grid'])->name('grid');
});
Route::name('usulan.')->prefix('usulan')->group(function () {
Route::name('csak.')->prefix('csak')->group(function () {