From 056cb9da050bea8025a9c8f6d31eb77aa9f0a52d Mon Sep 17 00:00:00 2001 From: Ilham Wara Nugroho Date: Thu, 18 Dec 2025 10:22:04 +0700 Subject: [PATCH] update --- .../Pengaturan/PengumumanController.php | 152 +++++++++++++++++- app/Models/FilePengumuman.php | 2 +- .../2025/12/18/_file_69437314dcabb.xlsx | Bin 0 -> 11193 bytes .../pengaturan/pengumuman/form.blade.php | 129 ++++++++++++--- .../pengaturan/pengumuman/index.blade.php | 68 +++++--- 5 files changed, 304 insertions(+), 47 deletions(-) create mode 100644 public/uploads/pengumuman/2025/12/18/_file_69437314dcabb.xlsx diff --git a/app/Http/Controllers/Pengaturan/PengumumanController.php b/app/Http/Controllers/Pengaturan/PengumumanController.php index 8cf38c6..30c4c24 100644 --- a/app/Http/Controllers/Pengaturan/PengumumanController.php +++ b/app/Http/Controllers/Pengaturan/PengumumanController.php @@ -4,15 +4,77 @@ namespace App\Http\Controllers\Pengaturan; use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use Illuminate\Support\Facades\File; +use Carbon\Carbon; +use App\Models\FilePengumuman; class PengumumanController extends Controller { + protected $title = 'Pengumuman/Peraturan'; + protected $template = 'modules.pengaturan.pengumuman'; + protected $route = 'modules.pengaturan.pengumuman'; + /** * Display a listing of the resource. */ public function index() { - // + permission('is_read', $this->route, 'module',true); + + $data['breadcrumbs'] = [ + ['name' => 'Dashboard'], + ['name' => 'Pengaturan'], + ['name' => 'Pengumuman/Peraturan','active' => true], + ]; + $data['title'] = $this->title; + $data['route'] = $this->route; + + return view($this->template.'.index',$data); + } + + public function grid(Request $request) + { + + $data = FilePengumuman::all(); + $_data = []; + + + foreach ($data as $key => $row) { + + + $action = ''; + $status = ''; + if($row->status == 0){ + $status = ' Tidak Aktif '; + }else{ + $status = ' Aktif '; + } + $file = ''; + $action .= '
'; + if((permission('is_create', $this->route.'.*','module',false)) || (permission('is_update', $this->route.'.*','module',false))){ + $action .= ''; + if(session('group_id') == 1){ + $action .= ''; + } + } + $action .= '
'; + + $_data[] = [ + 'no' => $key+1, + 'id' => encode_id($row->FilePengumumanId), + 'tahun' => @$row->tahun, + 'nama' => @$row->nama, + 'file' => @$file, + 'created_at' => date('d-m-Y H:i:s',strtotime(@$row->created_at)), + 'status' => @$status, + 'action' => @$action, + ]; + + } + + // return response()->json($_data); // Return the data as a JSON response + return response()->json($_data); + } /** @@ -28,7 +90,69 @@ class PengumumanController extends Controller */ public function store(Request $request) { - // + // dd(request()->all()); + $request->validate([ + 'tahun' => 'required', + 'nama' => 'required', + 'file' => 'required|file|mimes:xls,xlsx,pdf,png,jpg,jpeg,docx|max:2000', + ]); + + try { + + if (@$request->file) { + $file = $request->file; + $destinationPath = public_path('uploads/pengumuman'); + $current = Carbon::now()->format('Y/m/d'); + $path = $destinationPath . '/' . $current; + $fileName = $file->getClientOriginalName(); + $fileMime = $file->getClientMimeType(); + $fileExtension = $file->getClientOriginalExtension(); + $fileSize = $file->getSize(); + if(($fileExtension != 'xls') && ($fileExtension != 'xlsx') && ($fileExtension != 'pdf') && ($fileExtension != 'docx') && ($fileExtension != 'png') && ($fileExtension != 'jpg') && ($fileExtension != 'jpeg') ){ + return redirect()->back()->with([ + 'message' => 'Maaf File Harus Berupa xls,xlsx,pdf,png,jpg,jpeg,docx!', + 'type' => "error" + ]); + } + $newFilename = session('id').'_'.uniqid('file_') . '.' . $fileExtension; + + if (!File::exists($path)) { + File::isDirectory($path) or File::makeDirectory($path, 0777, true, true); + } + + $filePath = 'pengumuman/' . $current . '/' . $newFilename; + $uploaded = $file->move($path, $newFilename); + } + + + if(@request()->secure_id){ + $keyId = decode_id(@request()->secure_id); + $data = FilePengumuman::find($keyId); + $data->tahun = $request->tahun; + $data->nama = $request->nama; + $data->file = $filePath; + $data->deskripsi = $request->deskripsi; + $data->save(); + }else{ + $data = new FilePengumuman; + $data->tahun = $request->tahun; + $data->nama = $request->nama; + $data->file = $filePath; + $data->deskripsi = $request->deskripsi; + $data->save(); + } + + + return redirect()->back()->with([ + 'message' => 'Berhasil update data', + 'type' => 'success', + ]); + } catch (\Exception $e) { + return redirect()->back()->with([ + 'message' => 'Gagal disimpan. Silakan coba lagi. Error: ' . $e->getMessage(), + 'type' => 'error', + ]); + } } /** @@ -50,9 +174,29 @@ class PengumumanController extends Controller /** * Update the specified resource in storage. */ - public function update(Request $request, string $id) + public function update($id = null) { - // + $data['breadcrumbs'] = [ + ['name' => 'Dashboard'], + ['name' => 'Pengaturan'], + ['name' => 'Data Aktivitas','active' => true], + ]; + $keyId = decode_id($id); + $data['title'] = $this->title; + $data['route'] = $this->route; + $data['keyId'] = $id; + $data['item'] = FilePengumuman::where('FilePengumumanId',$keyId)->first(); + + return view($this->template.'.form',$data); + } + + public function delete($id) + { + $keyId = decode_id($id); + + $data = FilePengumuman::where('FilePengumumanId',$keyId)->delete(); + + return response()->json(['success' => true,'message' => 'Berhasil update data','type' => 'success']); } /** diff --git a/app/Models/FilePengumuman.php b/app/Models/FilePengumuman.php index 8dfb8a6..f4f2e72 100644 --- a/app/Models/FilePengumuman.php +++ b/app/Models/FilePengumuman.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; class FilePengumuman extends Model { - use SoftDeletes; + // use SoftDeletes; protected $table = 'file_pengumuman'; protected $primaryKey = 'FilePengumumanId'; diff --git a/public/uploads/pengumuman/2025/12/18/_file_69437314dcabb.xlsx b/public/uploads/pengumuman/2025/12/18/_file_69437314dcabb.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..45d22a75925674e46c3b6c6ba04ebfaee66cd621 GIT binary patch literal 11193 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 {{$title}} -
+ {{csrf_field()}}
-
- +
- - @error('kode') + + @error('tahun') {{$message}} @enderror
@@ -44,7 +49,7 @@
- + @error('deskripsi') {{$message}} @enderror @@ -54,25 +59,17 @@
- -
- - @error('nomor_baris') - {{$message}} - @enderror -
-
-
+