106 lines
4.1 KiB
PHP
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!');
|
|
}
|
|
}
|
|
|