pintu2/app/Http/Controllers/LayananPemutihanController.php
Fiky Baharudin 7d3cd66416
All checks were successful
Run Action to Production / run pull to sync on target message (push) Has been skipped
benerin pemutihan
2024-09-26 11:26:31 +07:00

138 lines
5.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\PengajuanPemutihan;
use App\Models\User;
use Barryvdh\DomPDF\Facade\Pdf;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
class LayananPemutihanController extends Controller
{
public function index(){
$data = PengajuanPemutihan::
select(
'pengajuan_pemutihans.*',
'users.nama_gelar as dosen_pengampu',
)
->join('users','dosen_id','=','users.id')
->get();
return view('layanan-pemutihan.index',['title' => 'Pengajuan Pemutihan | Admin Dashboard','data' => $data]);
}
public function tambah(){
$dosen = User::role('Dosen')->get();
return view('layanan-pemutihan.tambah',['title' => 'Pengajuan Pemutihan','dosen' => $dosen]);
}
public function store(Request $request){
$request->validate([
'mata_kuliah'=>'required',
'ruang_kelas'=>'required',
'jurnal_kuliah'=>'required',
'dosen_pengampu'=>'required|numeric',
'program_studi'=>'required',
'tanggal_kelas'=>'required|date',
'jam_kelas'=>'required|date_format:H:i',
'alasan'=>'required',
'bukti_pemutihan'=>'required|mimes:pdf,jpg|max:4096',
],[
'dosen.numeric' => 'Dosen tidak valid, cek kembali Dosen yang dipilih',
'tanggal_kelas.date' => 'Tanggal Tidak Valid, Cek kembali tanggal perkuliahan yang anda masukkan',
'jam_kelas.date_format' => 'Jam tidak valid, cek kembali jam perkuliahan yang anda masukkan',
'bukti_pemutihan.mimes' => 'Format File tidak berupa file JPG / PDF, cek kembali file anda',
'bukti_pemutihan.max' => 'Ukuran File Anda lebih dari 4Mb, Cek Ulang File anda',
]);
//get lastid + 1
$countcaseid = PengajuanPemutihan::latest()->first()->id;
$caseid = "P".date_format(date_create(),"Y").$countcaseid+1;
$data_pemutihan['caseid'] = $caseid;
$data_pemutihan['mata_kuliah'] = $request->mata_kuliah;
$data_pemutihan['dosen_id'] = $request->dosen_pengampu;
$data_pemutihan['program_studi'] = $request->program_studi;
$data_pemutihan['ruang_kelas'] = $request->ruang_kelas;
$data_pemutihan['tanggal_kelas'] = $request->tanggal_kelas;
$data_pemutihan['jam_kelas'] = $request->jam_kelas;
$data_pemutihan['jurnal_kuliah'] = $request->jurnal_kuliah;
$data_pemutihan['alasan'] = $request->alasan;
$data_pemutihan['keterangan'] = $request->keterangan;
$bukti_pemutihan = $request->file('bukti_pemutihan');
$bukti_pemutihan_name = $caseid.'_'.str_replace(' ', '_',$bukti_pemutihan->getClientOriginalName());
$path = 'pemutihan/'.$bukti_pemutihan_name;
//jika berhasil save file dan save data mhs maka pengajuan akan diisi
if(Storage::disk('public')->put($path, file_get_contents($bukti_pemutihan))){
$data_pemutihan['bukti_izin_dosen'] = $bukti_pemutihan_name;
PengajuanPemutihan::create($data_pemutihan);
return redirect()->route('layanan-pemutihan.tambah')->with('success','Sukses Tambah Data, Silahkan Monitoring Pengajuan Anda melalui menu monitoring');
}
return redirect()->route('layanan-pemutihan.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan');
}
public function cetak($caseid){
$data = PengajuanPemutihan::
select(
'pengajuan_pemutihans.*',
'users.nama_gelar as dosen_pengampu',
'users.nip as dosen_pengampu_nip',
)
->join('users','dosen_id','=','users.id')
->where('caseid',$caseid)
->first();
//jika data kosong maka render ini
if(is_null($data)){
return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Dengan CASEID Tersebut Tidak ada');
}
$tanggal_kelas = strtotime($data->tanggal_kelas);
$data_pdf = [
'title' => 'Form Berita Acara Perkuliahan dalam Kondisi Gangguan Sistem',
// 'date' => Carbon::now()->format('d-m-Y'),
'date' => $data->created_at->format('d-m-Y'),
'mata_kuliah' => $data->mata_kuliah,
'program_studi' => $data->program_studi,
'ruang_kelas' => $data->ruang_kelas,
'tanggal_kelas' => date('d-m-Y',$tanggal_kelas),
'jam_kelas' => $data->jam_kelas,
'jurnal_kuliah' => $data->jurnal_kuliah,
'alasan' => $data->alasan,
'keterangan' => $data->keterangan,
'dosen_pengampu' => $data->dosen_pengampu,
'dosen_pengampu_nip' => $data->dosen_pengampu_nip,
'dosen_pengampu_qrcode' => base64_encode(QrCode::size(100)->generate($data->dosen_pengampu.'_TTD_'.$data->created_at)),
];
$pdf = Pdf::loadView('layanan-pemutihan.cetak', $data_pdf);
return $pdf->setPaper('a4', 'potrait')->stream($caseid.'-Form Berita Acara Perkuliahan dalam Kondisi Gangguan Sistem.pdf');
}
public function selesai($caseid, Request $request){
$data = PengajuanPemutihan::where('caseid', $caseid)->first();
if($data==null){
return redirect()->route('layanan-pemutihan.index')->with('error','Gagal Memproses, Data tidak ditemukan');
}
$data->status_operator = Carbon::now();
$data->keterangan_operator = 0;
$data->save();
return redirect()->route('layanan-pemutihan.index')->with('success','Data Berhasil Disimpan, status akan diupdate menjadi selesai');
}
function tolak($caseid, Request $request){
$data = PengajuanPemutihan::where('caseid', $caseid)->first();
if($data==null){
return redirect()->route('layanan-pemutihan.index')->with('error','Gagal Memproses, Data tidak ditemukan');
}
$data->status_operator = Carbon::now();
$data->keterangan_operator = $request->keterangan_operator;
$data->save();
return redirect()->route('layanan-pemutihan.index')->with('success','Data Berhasil Disimpan, status akan diupdate menjadi Ditolak');
}
}