diff --git a/app/Helpers/custom.php b/app/Helpers/custom.php index 6fb0588..2b9cd75 100644 --- a/app/Helpers/custom.php +++ b/app/Helpers/custom.php @@ -142,6 +142,7 @@ if (!function_exists('status_kuesioner')) { //3 = selesai kelengkapan data //4 = Validasi Diteruskan //5 = Validasi Dikembalikan + //6 = Terbit SK } } diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php index 8864171..f62d712 100644 --- a/app/Http/Controllers/AjaxController.php +++ b/app/Http/Controllers/AjaxController.php @@ -9,6 +9,7 @@ use App\Models\Master\Kabupaten; use App\Models\Master\Kecamatan; use App\Models\Master\Sekolah; use App\Models\Penilaian; +use App\Models\Kuesioner; class AjaxController extends Controller { @@ -27,6 +28,17 @@ class AjaxController extends Controller return response()->json($data); } } + public function getSekolahSK(Request $request) + { + $kuesioner = Kuesioner::where('level',($request->data-1))->where('tahun',date('Y'))->where('status',4)->get(); + $data = []; + foreach ($kuesioner as $key => $value) { + $data[$key]['id'] = encode_id($value->ms_sekolah_id); + $data[$key]['name'] = $value->sekolah->nama_sekolah; + } + + return response()->json($data); + } public function getForm(Request $request) { if(@$request->sekolah){ diff --git a/app/Http/Controllers/Modules/Usulan/SKController.php b/app/Http/Controllers/Modules/Usulan/SKController.php index 9de3248..f88c90a 100644 --- a/app/Http/Controllers/Modules/Usulan/SKController.php +++ b/app/Http/Controllers/Modules/Usulan/SKController.php @@ -4,9 +4,13 @@ namespace App\Http\Controllers\Modules\Usulan; use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Facades\File; +use Carbon\Carbon; use App\Models\Master\Provinsi; use App\Models\Kuesioner; use App\Models\KuesionerLog; +use App\Models\SK; use App\Models\Master\Sekolah; use App\Models\Master\FormKriteria; use App\Models\DokumenAdministrasi; @@ -103,7 +107,128 @@ class SKController extends Controller */ public function store(Request $request) { - // + // dd($request->all()); + try { + Validator::make($request->all(), [ + 'judul' => 'max:200', + 'tanggal_penetapan' => 'date', + 'jenis_usulan' => 'required', + 'sekolah' => 'required', + 'file' => 'required', + ])->validate(); + + if($request->jenis_usulan == '1'){ + $usulan = 'Adiwiyata Kab/Kota'; + }elseif($request->jenis_usulan == '2'){ + $usulan = 'Adiwiyata Provinsi'; + }elseif($request->jenis_usulan == '3'){ + $usulan = 'Adiwiyata Nasional'; + }else{ + return redirect()->back()->with([ + 'message' => 'Maaf Kesalahan Input Data!', + 'type' => "error" + ]); + } + + if(SK::where('tahun',date('Y'))->where('jenis_usulan',$request->jenis_usulan)->count() > 0){ + return redirect()->back()->with([ + 'message' => 'Maaf Penetapan SK Tahun '.date('Y').' Untuk Usulan '.$usulan.' Sudah Ada', + 'type' => "error" + ]); + } + + if ($request->hasFile('file')) { + $file = $request->file('file'); + $destinationPath = public_path('uploads/sk'); + $current = Carbon::now()->format('Y/m/d'); + $path = $destinationPath . '/' . $current; + $fileName = $file->getClientOriginalName(); + $fileMime = $file->getClientMimeType(); + $fileExtension = $file->getClientOriginalExtension(); + $fileSize = $file->getSize(); + if($fileExtension != 'pdf'){ + return redirect()->back()->with([ + 'message' => 'Maaf File Harus Berupa PDF!', + 'type' => "error" + ]); + } + $newFilename = session('uid').'_'.uniqid('sk_') . '.' . $fileExtension; + + if (!File::exists($path)) { + File::isDirectory($path) or File::makeDirectory($path, 0777, true, true); + } + + $filePath = 'sk/' . $current . '/' . $newFilename; + $uploaded = $file->move($path, $newFilename); + } + + $decoded = collect($request->sekolah)->map(function($id) { + return decode_id($id); + })->toArray(); + + // dd($decoded); + + if(@$request->file){ + $sk = SK::updateOrCreate([ + 'tahun' => date('Y'), + 'jenis_usulan' => $request->jenis_usulan, + ],[ + 'tahun' => date('Y'), + 'nama' => @$request->nama, + 'tanggal_penetapan' => $request->tanggal_penetapan, + 'jenis_usulan' => $request->jenis_usulan, + 'file' => $filePath, + 'deskripsi' => @$request->deskripsi, + 'created_by' => auth()->user()->id, + 'sekolah' => json_encode($decoded), + ]); + }else{ + $sk = SK::updateOrCreate([ + 'tahun' => date('Y'), + 'jenis_usulan' => $request->jenis_usulan, + ],[ + 'tahun' => date('Y'), + 'nama' => @$request->nama, + 'tanggal_penetapan' => $request->tanggal_penetapan, + 'jenis_usulan' => $request->jenis_usulan, + 'deskripsi' => @$request->deskripsi, + 'created_by' => auth()->user()->id, + 'sekolah' => json_encode($decoded), + ]); + } + + foreach($request->sekolah as $sekolah){ + + $kuesioner = Kuesioner::where('ms_sekolah_id',decode_id($sekolah))->where('status',4)->where('tahun',date('Y'))->first(); + $kuesioner->status = 6; + $kuesioner->save(); + + //kuesioner log + $log = new KuesionerLog; + $log->kuesioner_id = $kuesioner->KuesionerId; + $log->ms_sekolah_id = $kuesioner->ms_sekolah_id; + $log->npsn = $kuesioner->npsn; + $log->ms_group_id = session('group_id'); + $log->step = 'penetapan_sk'; + $log->status = 6; + $log->created_by = auth()->user()->id; + $log->save(); + } + + logActivity($request, __('Create',['val' => strtolower(__('Title',['val' => 'Penetapan SK Usulan '.$usulan.' tahun '.date('Y').' oleh '.auth()->user()->id]))])); + + return redirect()->back()->with([ + 'message' => 'Berhasil update data', + 'type' => 'success', + ]); + + + } catch (Exception $e) { + return redirect()->back()->with([ + 'message' => $e->getMessage(), + 'type' => "error" + ]); + } } /** diff --git a/app/Models/SK.php b/app/Models/SK.php new file mode 100644 index 0000000..286973c --- /dev/null +++ b/app/Models/SK.php @@ -0,0 +1,15 @@ +id('SkId'); + $table->string('nama')->nullable(); + $table->json('sekolah'); + $table->year('tahun'); + $table->integer('jenis_usulan'); + $table->date('tanggal_penetapan'); + $table->string('file'); + $table->text('deskripsi')->nullable(); + $table->integer('status')->default(0); + $table->integer('created_by'); + $table->timestampsTz(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('s_k_s'); + } +}; diff --git a/public/uploads/sk/2025/04/17/_sk_68007857dd51f.pdf b/public/uploads/sk/2025/04/17/_sk_68007857dd51f.pdf new file mode 100644 index 0000000..2df724a Binary files /dev/null and b/public/uploads/sk/2025/04/17/_sk_68007857dd51f.pdf differ diff --git a/public/uploads/sk/2025/04/17/_sk_680078718c554.pdf b/public/uploads/sk/2025/04/17/_sk_680078718c554.pdf new file mode 100644 index 0000000..2df724a Binary files /dev/null and b/public/uploads/sk/2025/04/17/_sk_680078718c554.pdf differ diff --git a/public/uploads/sk/2025/04/17/_sk_680078984b352.pdf b/public/uploads/sk/2025/04/17/_sk_680078984b352.pdf new file mode 100644 index 0000000..2df724a Binary files /dev/null and b/public/uploads/sk/2025/04/17/_sk_680078984b352.pdf differ diff --git a/public/uploads/sk/2025/04/17/_sk_680078b6cdb82.pdf b/public/uploads/sk/2025/04/17/_sk_680078b6cdb82.pdf new file mode 100644 index 0000000..2df724a Binary files /dev/null and b/public/uploads/sk/2025/04/17/_sk_680078b6cdb82.pdf differ diff --git a/resources/views/modules/usulan/sk/form.blade.php b/resources/views/modules/usulan/sk/form.blade.php index 8f4a98d..a907892 100644 --- a/resources/views/modules/usulan/sk/form.blade.php +++ b/resources/views/modules/usulan/sk/form.blade.php @@ -12,32 +12,46 @@
-
+ {{csrf_field()}} +
+ + + (Opsional) +
+
+ + +
- - - - + + +
-
- +
- + + + (Opsional) +
+
+
@@ -47,4 +61,38 @@
@endsection @section('page-js') + @endsection \ No newline at end of file diff --git a/routes/modules/modules.php b/routes/modules/modules.php index 9ce9c54..e910488 100644 --- a/routes/modules/modules.php +++ b/routes/modules/modules.php @@ -30,6 +30,7 @@ Route::get('profile-sekolah',[ProfileController::class,'index'])->name('profile. Route::get('profile-sekolah/grid',[ProfileController::class,'grid'])->name('profile.grid'); Route::post('profile-sekolah',[ProfileController::class,'store'])->name('profile.store'); Route::post('getForm',[AjaxController::class,'getForm'])->name('getForm'); +Route::post('getSekolahSK',[AjaxController::class,'getSekolahSK'])->name('getSekolahSK'); Route::name('master.')->prefix('master')->group(function () { Route::resource('indikator',IndikatorController::class);