pintu2/app/Http/Controllers/LayananPengajuanAduanController.php
2024-12-11 12:04:13 +07:00

106 lines
4.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\PengajuanAduan;
use App\Models\User;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;
class LayananPengajuanAduanController extends Controller
{
public function index(){
$data = PengajuanAduan::get();
return view('layanan-aduan.index',['title' => 'Pengajuan Aduan | Admin Dashboard','data' => $data]);
}
public function tambah(){
return view('layanan-aduan.tambah',['title' => 'Pengajuan Aduan']);
}
public function store(Request $request){
$request->validate([
'nama'=>'required',
'nomor_telepon'=>'required|numeric',
'subjek'=>'required',
'lokasi'=>'required',
'kategori'=>'required',
'deskripsi_laporan'=>'required',
'bukti_laporan'=>'required|mimes:pdf,png,jpg|max:4096',
],[
'nomor_telepon.numeric' => 'nomor telepon tidak valid, harap menggunakan format 089xxxxx',
'bukti_laporan.max' => 'Ukuran File Anda lebih dari 4Mb, Cek Ulang File anda',
'bukti_laporan.mimes' => 'Format file tidak valid, pastikan file berupa gambar(JPG/PNG) atau pdf',
]);
//get lastid + 1
$countcaseid = PengajuanAduan::max('id')+1;
$caseid = "A".date_format(date_create(),"Y").$countcaseid;
$data_aduan['caseid'] = $caseid;
$data_aduan['nama'] = $request->nama;
$data_aduan['nomor_telepon'] = $request->nomor_telepon;
$data_aduan['subjek'] = $request->subjek;
$data_aduan['lokasi'] = $request->lokasi;
$data_aduan['kategori'] = $request->kategori;
$data_aduan['deskripsi_laporan'] = $request->deskripsi_laporan;
$bukti_laporan = $request->file('bukti_laporan');
$bukti_laporan_name = $caseid.'_'.str_replace(' ', '_',$bukti_laporan->getClientOriginalName());
$path = 'aduan/'.$bukti_laporan_name;
if(Storage::disk('public')->put($path, file_get_contents($bukti_laporan))){
$data_aduan['bukti_laporan'] = $bukti_laporan_name;
PengajuanAduan::create($data_aduan);
return redirect()->route('layanan-aduan.tambah')->with('success','Sukses Tambah Data, Silahkan Monitoring Pengajuan Anda melalui menu monitoring');
}
return redirect()->route('layanan-aduan.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan');
}
public function selesai(Request $request){
$request->validate([
'keterangan_selesai'=>'required',
],[
'keterangan_selesai.required' => 'Alasan Tidak boleh kosong, harap masukkan keterangan penyelesaian',
]);
$data_aduan = PengajuanAduan::where('id',$request->id)->first();
$data_aduan['keterangan_selesai'] = $request->keterangan_selesai;
if($data_aduan->save()){
return redirect()->route('layanan-aduan.index')->with('success','Sukses Menyelesaikan Laporan Aduan');
}
return redirect()->route('layanan-aduan.tambah')->with('error','Gagal Menyelesaikan Laporan aduan, silahkan coba klik selesaikan kembali');
}
public function destroy(Request $request){
$id = $request->id;
//cari data dan kirim notif sebelum dihapus
$data = PengajuanAduan::where('id',$id)
->first();
// $data_job = [
// 'jenis' => 'penolakan',
// 'judul_seminar_proposal' => $data->judul_seminar_proposal,
// 'nama_mahasiswa' => $data->nama,
// 'nim_mahasiswa' => $data->nim,
// 'email' => $data->email,
// 'created_at' => $data->created_at,
// 'alasan' => $request->alasan,
// ];
$path = 'aduan/'.$data->bukti_laporan;
//hapus file yang diupload mahasiswa
if(Storage::disk('public')->exists($path)){
//hapus data pengajuan mahasiswa
Storage::disk('public')->delete($path);
}
$dataDelete = PengajuanAduan::findOrFail($id);
//kirim notifikasi jika data berhasil dihapus
if($dataDelete->delete()){
// dispatch(new layananPengajuanDpuDpaJob($data_job));
return redirect()->route('layanan-aduan.index')->with('success','Permintaan Sudah Diproses, Email akan segera dikirim ke penerima');
}
return redirect()->route('layanan-aduan.index')->with('error','Gagal Hapus Data, coba cek data yang akan dihapus lalu coba lagi!');
}
}