<?php namespace App\Http\Controllers\Admin\Brosur; use App\Http\Controllers\Controller; use App\Models\Brosur_2_masuk; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; class BrosurAdminController extends Controller { // Menampilkan data brosur dengan filter dan pagination public function index(Request $request) { $routeName = $request->route()->getName(); if ($routeName === 'Admin.Brosur.arsip') { $statusFilter = ['diterima', 'ditolak']; // Arsip hanya menampilkan yang "diterima" } else { $statusFilter = ['proses verifikasi',]; // Usulan menampilkan "proses verifikasi" dan "ditolak" } $search = trim($request->input('search')); $searchYear = trim($request->input('tahun')); // Ambil daftar tahun dari `tanggal_surat` $years = Brosur_2_masuk::whereIn('status', $statusFilter) ->whereNotNull('tanggal_surat') ->selectRaw('YEAR(tanggal_surat) as year') ->distinct() ->orderBy('year', 'desc') ->pluck('year'); // Query untuk data brosur $brosur_2_masuks = Brosur_2_masuk::whereIn('status', $statusFilter) ->when($search, function ($query, $search) { return $query->where('nama_penyelenggara', 'like', "%$search%"); }) ->when($searchYear, function ($query, $searchYear) { return $query->whereYear('tanggal_surat', $searchYear); }) ->orderBy('created_at', 'desc') ->paginate(10) ->appends($request->query()); // Tentukan tampilan yang akan digunakan $viewName = ($routeName === 'Admin.Brosur.arsip') ? 'Admin.Brosur.arsip' : 'Admin.Brosur.usulan'; return view($viewName, compact('brosur_2_masuks', 'search', 'searchYear', 'years')); } // Menampilkan form tambah brosur public function create() { // Definisi status manual $statusList = ['proses verifikasi', 'diterima', 'ditolak']; return view('Admin.Brosur.create', compact('statusList')); } // Menyimpan data brosur baru public function storebrosur(Request $request) { $request->validate([ 'nama_penyelenggara' => 'required', 'alamat' => 'required', 'nama_sales' => 'required', 'no_hp' => 'required', 'no_surat' => 'required', 'tanggal_surat' => 'required|date', 'brosur_excel' => 'nullable|mimes:xlsx,xls|max:2048', 'brosur_pdf' => 'nullable|mimes:pdf|max:2048', 'status' => 'required', ]); $brosur = new Brosur_2_masuk(); $brosur->nama_penyelenggara = $request->nama_penyelenggara; $brosur->alamat = $request->alamat; $brosur->nama_sales = $request->nama_sales; $brosur->no_hp = $request->no_hp; $brosur->no_surat = $request->no_surat; $brosur->tanggal_surat = $request->tanggal_surat; $brosur->status = $request->status; // Simpan file jika ada if ($request->hasFile('brosur_pdf')) { $pdf = $request->file('brosur_pdf'); $pdfName = time() . '_' . $pdf->getClientOriginalName(); $pdf->move(public_path('uploads/pdf'), $pdfName); $brosur->brosur_pdf = 'uploads/pdf/' . $pdfName; } if ($request->hasFile('brosur_excel')) { $excel = $request->file('brosur_excel'); $excelName = time() . '_' . $excel->getClientOriginalName(); $excel->move(public_path('uploads/excel'), $excelName); $brosur->brosur_excel = 'uploads/excel/' . $excelName; } $brosur->save(); return redirect()->route('Admin.Brosur.usulan')->with('success', 'Usulan brosur berhasil ditambahkan.'); } // Menampilkan form edit brosur public function edit($id) { $brosur = Brosur_2_masuk::findOrFail($id); $statusList = Brosur_2_masuk::select('status')->distinct()->pluck('status'); return view('Admin.Brosur.editbrosur', compact('brosur', 'statusList')); } // Menyimpan perubahan pada brosur public function update(Request $request, $id) { try { $request->validate([ 'nama_penyelenggara' => 'required', 'alamat' => 'required', 'nama_sales' => 'required', 'no_hp' => 'required', 'no_surat' => 'required', 'tanggal_surat' => 'required|date', 'brosur_excel' => 'nullable|mimes:xlsx,xls|max:2048', 'brosur_pdf' => 'nullable|mimes:pdf|max:2048', ]); $brosur = Brosur_2_masuk::findOrFail($id); $brosur->nama_penyelenggara = $request->nama_penyelenggara; $brosur->alamat = $request->alamat; $brosur->nama_sales = $request->nama_sales; $brosur->no_hp = $request->no_hp; $brosur->no_surat = $request->no_surat; $brosur->tanggal_surat = $request->tanggal_surat; // Simpan file jika ada if ($request->hasFile('brosur_pdf')) { $pdf = $request->file('brosur_pdf'); $pdfName = time() . '_' . $pdf->getClientOriginalName(); $pdf->move(public_path('uploads/pdf'), $pdfName); $brosur->brosur_pdf = 'uploads/pdf/' . $pdfName; } if ($request->hasFile('brosur_excel')) { $excel = $request->file('brosur_excel'); $excelName = time() . '_' . $excel->getClientOriginalName(); $excel->move(public_path('uploads/excel'), $excelName); $brosur->brosur_excel = 'uploads/excel/' . $excelName; } $brosur->save(); return redirect()->route('Admin.Brosur.usulan')->with('success', 'Data brosur berhasil diperbarui.'); } catch (\Exception $e) { return redirect()->back()->with('error', 'Terjadi kesalahan: ' . $e->getMessage()); } } // Menghapus brosur public function deletes($id) { $brosur = Brosur_2_masuk::where('id', $id)->firstOrFail(); // Hapus file PDF jika ada if ($brosur->brosur_pdf && Storage::exists($brosur->brosur_pdf)) { Storage::delete($brosur->brosur_pdf); } // Hapus file Excel jika ada if ($brosur->brosur_excel && Storage::exists($brosur->brosur_excel)) { Storage::delete($brosur->brosur_excel); } // Hapus data dari database $brosur->delete(); return redirect()->route('Admin.Brosur.usulan')->with('success', 'Brosur berhasil dihapus.'); } // Menyetujui brosur public function approve($id) { $brosur = Brosur_2_masuk::findOrFail($id); $brosur->status = 'diterima'; $brosur->save(); return redirect()->route('Admin.Brosur.usulan')->with('success', 'Brosur berhasil disetujui.'); } }