join('mahasiswas','mahasiswas_id','=','mahasiswas.id') ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') ->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id') ->get(); return view('layanan-dpudpa.index',['title' => 'Pengajuan DPU/DPA | Admin Dashboard','data' => $data]); } //done public function tambah(){ $dosen = User::role('Dosen')->get(); $bagian = Bagian::select('id', 'nama_bagian')->get(); return view('layanan-dpudpa.tambah',['dosen'=>$dosen, 'bagian'=>$bagian]); } //done public function terima(Request $request){ $id = $request->id; $countcaseid = PengajuanDpuDpa::where('ttd_operator','!=','-')->count(); $caseid = "LS".date_format(date_create(),"ym").$countcaseid+1; $cekData = PengajuanDpuDpa::where('caseid',$caseid)->first(); $data = PengajuanDpuDpa::where('id',$id)->first(); //cek apakah ada caseid yang sama sebelum disave if(!is_null($cekData)){ $data->updated_at = Carbon::now(); $data->save(); return redirect()->route('layanan-dpudpa.index')->with('error','Gagal simpan Data, Cek kembali Detail Data yang akan diterima'); } //save CASEID dan kirim email $data->caseid = $caseid; $data->ttd_operator = Carbon::now(); if($data->save()){ $data_job = [ [ 'jenis' => 'mahasiswa', 'id' => $id, ], [ 'jenis' => 'dpu', 'id' => $id, ], [ 'jenis' => 'dpa', 'id' => $id, ], ]; foreach($data_job as $item){ dispatch(new layananPengajuanDpuDpaJob($item)); } return redirect()->route('layanan-dpudpa.index')->with('success','Data Berhasil Disimpan, Email Akan Dikirimkan ke Mahasiswa, DPU dan DPA'); } } //done public function store(Request $request){ $request->validate([ 'nim'=>'required|numeric', 'nama'=>'required', 'nomor_hp'=>'required|numeric', 'email'=>'required|email', 'judul_seminar_proposal'=>'required', 'bagian'=>'required|numeric', 'dosen_dpu'=>'required|numeric', 'dosen_dpa'=>'required|numeric', 'file_transkrip' => 'required|mimes:pdf|max:4096', ],[ 'nim.required'=>'NIP Wajib Diisi', 'nim.numeric'=>'NIM Wajib Berisi Angka saja', 'nomor_hp.numeric'=>'Nomor HP Wajib Menggunakan Angka, Contoh 089xxxxx', 'email.email'=>'Format email tidak sesuai, cek lagi email anda, Contoh mahasiswa@mail.com/ mahasiswa@mail.unej.ac.id', 'bagian.numeric'=>'Bagian tidak valid, cek kembali Bagian yang dipilih', 'dosen_dpu.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Utama yang dipilih', 'dosen_dpa.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Anggota yang dipilih', 'file_transkrip.mimes'=>'Format File Bukan PDF, Cek Ulang file anda', 'file_transkrip.max'=>'Ukuran File Anda lebih dari 4Mb, Cek Ulang File anda', ]); //Cek Apakah Data Mahasiswa Tersebut sudah ada, jika ada maka diminta untuk menggunakan fitur cari $mahasiswas_id = Mahasiswa::where('nim',$request->nim)->first(); if(!is_null($mahasiswas_id)){ return redirect()->route('layanan-dpudpa.tambah')->with('error','Data Anda Sudah Ada, Gunakan Fitur Cari'); } $data_mhs['nim'] = $request->nim; $data_mhs['nama'] = $request->nama; $data_mhs['nomor_hp'] = $request->nomor_hp; $data_mhs['email'] = $request->email; $data_mhs['judul_seminar_proposal'] = $request->judul_seminar_proposal; $data_mhs['bagian'] = $request->bagian; $data_mhs['dosen_dpu_id'] = $request->dosen_dpu; $data_mhs['dosen_dpa_id'] = $request->dosen_dpa; //set default to 0 $data_mhs['dosen_penguji1_id'] = 1; $data_mhs['dosen_penguji2_id'] = 1; $data_mhs['judul_skripsi_id'] = '-'; $data_mhs['judul_skripsi_en'] = '-'; $data_mhs['judul_jurnal'] = '-'; $data_mhs['judul_artikel'] = '-'; //set penyimpanan file $file_transkrip = $request->file('file_transkrip'); $file_transkrip_name = 'LS_'.str_replace(' ', '_',$file_transkrip->getClientOriginalName()); $path = $request->nim.'/'.$file_transkrip_name; //jika berhasil save file dan save data mhs maka pengajuan akan diisi if(Storage::disk('public')->put($path, file_get_contents($file_transkrip)) && Mahasiswa::create($data_mhs)){ $mahasiswas_id = Mahasiswa::where('nim',$request->nim)->first(); $data_dpudpa['mahasiswas_id'] = $mahasiswas_id->id; $data_dpudpa['bukti_transkrip_nilai'] = $file_transkrip_name; PengajuanDpuDpa::create($data_dpudpa); return redirect()->route('layanan-dpudpa.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator'); } return redirect()->route('layanan-dpudpa.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan'); } //done public function destroy(Request $request){ $id = $request->id; //cari data dan kirim notif sebelum dihapus $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$id) ->join('mahasiswas','mahasiswas_id','=','mahasiswas.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 = $data->nim."/".$data->bukti_transkrip_nilai; //hapus file yang diupload mahasiswa if(Storage::disk('public')->exists($path)){ //hapus data pengajuan mahasiswa Storage::disk('public')->delete($path); } $dataDelete = PengajuanDpuDpa::findOrFail($id); //kirim notifikasi jika data berhasil dihapus if($dataDelete->delete()){ dispatch(new layananPengajuanDpuDpaJob($data_job)); return redirect()->route('layanan-dpudpa.index')->with('success','Permintaan Sudah Diproses, Email akan segera dikirim ke penerima'); } return redirect()->route('layanan-dpudpa.index')->with('error','Gagal Hapus Data, coba cek data yang akan dihapus lalu coba lagi!'); } //done public function ettd($url, $caseid){ $role_untuk_ettd = ['dpu','dpa','kombi']; $data = PengajuanDpuDpa::where('caseid','=',$caseid) ->select('pengajuan_dpu_dpas.id', 'pengajuan_dpu_dpas.caseid', 'mahasiswas.nama', 'mahasiswas.nim', 'mahasiswas.judul_seminar_proposal', 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', 'dosen_dpa.nama_gelar as dosen_dpa_nama_gelar', ) ->join('mahasiswas','pengajuan_dpu_dpas.mahasiswas_id','=','mahasiswas.id') ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') ->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id') ->first(); if(in_array($url, $role_untuk_ettd) && !is_null($data)){ //jika URL DPU maka render ini if($url=='dpu'){ $jenis = 'Dosen Pembimbing Utama'; return view('layanan-dpudpa.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); } //jika URL DPA maka render ini elseif($url=='dpa'){ $jenis = 'Dosen Pembimbing Anggota'; return view('layanan-dpudpa.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); } //jika URL Kombi maka render ini elseif($url=='kombi'){ $jenis = 'Komisi Bimbingan'; $kombiRole = Role::findByName('Ketua Kombi')->users; $dataKombi = [ 'caseid' => $data->caseid, 'nama' => $data->nama, 'nim' => $data->nim, 'judul_seminar_proposal' => $data->judul_seminar_proposal, 'dosen_kombi_nama_gelar' => $kombiRole[0]->nama_gelar, ]; $jenis = 'Komisi Bimbingan'; return view('layanan-dpudpa.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $dataKombi]); } } //jika URL tidak diantara ketika itu maka render ini return redirect()->route('laman-awal')->with(['error'=>'Invalid CASEID, Atau CaseID Tidak Ditemukan']); } //done public function submitettd($url, $caseid, Request $request){ $role_untuk_ettd = ['dpu','dpa','kombi']; $data = PengajuanDpuDpa::where('caseid','=',$caseid)->first(); if(in_array($url, $role_untuk_ettd) && !is_null($data)){ //jika URL DPU maka render ini if($url=='dpu'){ //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error if($data->ttd_dpu!='-'){ return redirect()->route('layanan-dpudpa.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_dpu]); } //ambil data ETTD sesuai url $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id')->first(); //jika Belum Pernah maka TTD akan diproses if($ttd->ettd==$request->ettd){ $data->ttd_dpu = Carbon::now(); $data->save(); $this->cek_dpa_dpu($caseid); return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); } //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error else{ return redirect()->route('layanan-dpudpa.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); } } //jika URL DPa maka render ini if($url=='dpa'){ //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error if($data->ttd_dpa!='-'){ return redirect()->route('layanan-dpudpa.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_dpa]); } //ambil data ETTD sesuai url $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id')->first(); //jika Belum Pernah maka TTD akan diproses if($ttd->ettd==$request->ettd){ $data->ttd_dpa = Carbon::now(); $data->save(); $this->cek_dpa_dpu($caseid); return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); } //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error else{ return redirect()->route('layanan-dpudpa.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); } } //jika URL Kombi maka render ini if($url=='kombi'){ //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error if($data->ttd_kombi!='-'){ return redirect()->route('layanan-dpudpa.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_kombi]); } if($data->ttd_dpu=='-' && $data->ttd_dpa =='-'){ return redirect()->route('layanan-dpudpa.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'DPU atau DPA Belum Tanda Tangan Pada CaseID ini']); } //ambil data ETTD sesuai url $ttd = Role::findByName('Ketua Kombi')->users; //jika Belum Pernah maka TTD akan diproses if($ttd[0]->ettd==$request->ettd){ $data->ttd_kombi = Carbon::now(); $data->save(); $data = [ 'jenis' => 'mahasiswa selesai', 'id' => $data->id, ]; dispatch(new layananPengajuanDpuDpaJob($data)); return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); } //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error else{ return redirect()->route('layanan-dpudpa.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); } } } } //done public function cetak($caseid){ $get_data = PengajuanDpuDpa::where('caseid',$caseid)->first(); //jika data kosong maka render ini if(is_null($get_data)){ return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Dengan CASEID Tersebut Tidak ada'); } //jika kombi belum ttd, maka render ini if($get_data->ttd_kombi=='-'){ return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Belum Di TandaTangani Oleh Dosen Kombi, File Bisa didownload ketika Dosen Kombi sudah tanda tangan!'); } //get Data Mahasiswa, DPU dan DPA $data_dpu_dpa = PengajuanDpuDpa::where('caseid', $caseid) ->select( 'pengajuan_dpu_dpas.*', 'mahasiswas.nim', 'mahasiswas.nama', 'bagians.nama_bagian', 'mahasiswas.judul_seminar_proposal', 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', 'dosen_dpu.nip as dosen_dpu_nip', 'dosen_dpa.nama_gelar as dosen_dpa_nama_gelar', 'dosen_dpa.nip as dosen_dpa_nip', ) ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id') ->join('bagians','mahasiswas.bagian','=','bagians.id') ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') ->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id') ->first(); //get Data Kombi $data_kombi = Role::findByName('Ketua Kombi')->users; $data = [ 'title' => 'Cetak Kesediaan', // 'date' => Carbon::now()->format('d-m-Y'), 'date' => $data_dpu_dpa->updated_at->format('d-m-Y'), 'nama_mahasiswa' => $data_dpu_dpa->nama, 'nim' => $data_dpu_dpa->nim, 'bagian' => $data_dpu_dpa->nama_bagian, 'judul_seminar_proposal' => $data_dpu_dpa->judul_seminar_proposal, 'dosen_dpu_nama_gelar' => $data_dpu_dpa->dosen_dpu_nama_gelar, 'dosen_dpu_nip' => $data_dpu_dpa->dosen_dpu_nip, 'dosen_dpu_qrcode' => base64_encode(QrCode::size(100)->generate($data_dpu_dpa->dosen_dpu_nama_gelar.'_TTD_'.$data_dpu_dpa->ttd_dpu)), 'dosen_dpa_nama_gelar' => $data_dpu_dpa->dosen_dpa_nama_gelar, 'dosen_dpa_nip' => $data_dpu_dpa->dosen_dpa_nip, 'dosen_dpa_qrcode' => base64_encode(QrCode::size(100)->generate($data_dpu_dpa->dosen_dpa_nama_gelar.'_TTD_'.$data_dpu_dpa->ttd_dpa)), 'dosen_kombi_nama_gelar' => $data_kombi[0]->nama_gelar, 'dosen_kombi_nip' => $data_kombi[0]->nip, 'dosen_kombi_qrcode' => base64_encode(QrCode::size(100)->generate($data_kombi[0]->nama_gelar.'_TTD_'.$data_dpu_dpa->ttd_kombi)), ]; $pdf = Pdf::loadView('layanan-dpudpa.cetak', $data); return $pdf->setPaper('a4', 'potrait')->download($caseid.'-Kesediaan Menjadi Dosen Pembimbing Tugas Akhir.pdf'); } public function resend($caseid,Request $request){ try{ $data = PengajuanDpuDpa::where('caseid',$caseid)->first(); $data_job = [ 'id' => $data->id, 'jenis' => $request->jenis, ]; dispatch(new layananPengajuanDpuDpaJob($data_job)); }catch(Exception $e){ $text['error'] = $e->getMessage(); dispatch(new kirimNotifikasiErrorJob($text)); return redirect()->route('layanan-dpudpa.index')->with('error','Error : '.$text['error']); } return redirect()->route('layanan-dpudpa.index')->with('success','Berhasil Kirim Ulang Email Kepada '.$request->jenis.' Dengan CaseID : '.$caseid); } //cek apakah DPU dan DPU sudah Tanda tangan, jika sudah maka akan mengirim notifikasi ke Kombi private function cek_dpa_dpu($caseid){ $status = PengajuanDpuDpa::where('caseid',$caseid) ->select('id','ttd_dpu','ttd_dpa') ->first(); if($status->ttd_dpu!='-' && $status->ttd_dpa!='-'){ $data = [ 'jenis' => 'kombi', 'id' => $status->id, ]; dispatch(new layananPengajuanDpuDpaJob($data)); } } }