pintu2/app/Http/Controllers/LayananRevisiPublikasiController.php

416 lines
19 KiB
PHP
Raw Normal View History

2024-03-30 19:43:46 +07:00
<?php
namespace App\Http\Controllers;
use App\Jobs\kirimNotifikasiErrorJob;
use App\Jobs\layananRevisiPublikasiJob;
use App\Models\Bagian;
use App\Models\Mahasiswa;
use App\Models\PengajuanRevisiPublikasi;
use App\Models\User;
use Barryvdh\DomPDF\Facade\Pdf;
use Carbon\Carbon;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
class LayananRevisiPublikasiController extends Controller
{
public function index(){
$data = PengajuanRevisiPublikasi::
select('pengajuan_revisi_publikasis.*',
'mahasiswas.nim as nim',
'mahasiswas.nama as nama',
'mahasiswas.judul_skripsi_id',
'mahasiswas.judul_jurnal',
'mahasiswas.judul_artikel',
'dosen_dpu.nama_gelar as dpu_nama_gelar',
'dosen_penguji1.nama_gelar as penguji1_nama_gelar',
'dosen_penguji2.nama_gelar as penguji2_nama_gelar'
)
->join('mahasiswas','mahasiswas_id','=','mahasiswas.id')
->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id')
->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id')
->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id')
->get();
return view('layanan-revisipublikasi.index',['title' => 'Pengajuan Publikasi / Revisi | Admin Dashboard','data' => $data]);
}
public function tambah(){
//ambil data dosen, dan laboratorium
$dosen = User::role('Dosen')->get();
$bagian = Bagian::select('id','nama_bagian')->get();
//cek apakah ada data mahasiswa dari hasil cari
$nim = session('mahasiswas_id');
if($nim!=null){
$data_mahasiswa = Mahasiswa::find($nim);
return view('layanan-revisipublikasi.tambah',['dosen'=>$dosen, 'bagian'=>$bagian,'data_mahasiswa'=>$data_mahasiswa]);
}
return view('layanan-revisipublikasi.tambah',['dosen'=>$dosen, 'bagian'=>$bagian]);
}
public function cari(){
return view('layanan-revisipublikasi.cari',['title'=>'Cari Data Mahasiswa Untuk Keperluan Pengajuan Publikasi / Revisi']);
}
public function search(Request $request){
$data = Mahasiswa::where('nim',$request->nim)->first();
if($data==null){
return redirect()->route('layanan-revisipublikasi.tambah')->with('error','NIM Tidak Ditemukan, Gunakan Fitur Tambah');
}
return redirect()->route('layanan-revisipublikasi.tambah')->with('mahasiswas_id',$data->id);
}
public function store(Request $request){
$request->validate([
'nim'=>'required|numeric',
'nama'=>'required',
'nomor_hp'=>'required|numeric',
'email'=>'required|email',
'judul_skripsi_id'=>'required',
'judul_jurnal'=>'required',
'judul_artikel'=>'required',
'bagian'=>'required|numeric',
'dosen_dpu'=>'required|numeric',
'dosen_dpa'=>'required|numeric',
'dosen_penguji1'=>'required|numeric',
'dosen_penguji2'=>'required|numeric',
],[
'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@gmail.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',
'dosen_penguji1.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji Utama yang dipilih',
'dosen_penguji2.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji Anggota yang dipilih',
]);
//cek apakah data mahasiswa ada, jika ada maka dikembalikan dan dianjurkan menggunakan fitur cari
$mahasiswa = Mahasiswa::where('nim',$request->nim)->first();
if(!is_null($mahasiswa) && $request->status!="ada"){
return redirect()->route('layanan-revisipublikasi.tambah')->with('error','Data Anda Sudah Ada, Gunakan Fitur Cari Menggunakan NIM :'.$request->nim);
}
//kalo menggunakan fitur cari, akan menggunakan fungsi ini
elseif(!is_null($mahasiswa) && $request->status=="ada"){
$mahasiswas_id = $mahasiswa->id;
$data_revisipublikasi['mahasiswas_id'] = $mahasiswas_id;
//save data pengajuan
PengajuanRevisiPublikasi::create($data_revisipublikasi);
//update data mahasiswa
$mahasiswa->dosen_penguji1_id = $request->dosen_penguji1;
$mahasiswa->dosen_penguji2_id = $request->dosen_penguji2;
$mahasiswa->judul_skripsi_id = $request->judul_skripsi_id;
$mahasiswa->judul_artikel = $request->judul_artikel;
$mahasiswa->judul_jurnal = $request->judul_jurnal;
$mahasiswa->save();
return redirect()->route('layanan-revisipublikasi.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator');
}
//jika data belum ada, maka create data baru
$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'] = '-';
$data_mhs['bagian'] = $request->bagian;
$data_mhs['dosen_dpu_id'] = $request->dosen_dpu;
$data_mhs['dosen_dpa_id'] = $request->dosen_dpa;
$data_mhs['dosen_penguji1_id'] = $request->dosen_penguji1;
$data_mhs['dosen_penguji2_id'] = $request->dosen_penguji2;
//set default values to -
$data_mhs['judul_skripsi_id'] = $request->judul_skripsi_id;
$data_mhs['judul_skripsi_en'] = '-';
$data_mhs['judul_jurnal'] = $request->judul_jurnal;
$data_mhs['judul_artikel'] = $request->judul_artikel;
//save data mahasiswa dan pengajuan
if(Mahasiswa::create($data_mhs)){
$mahasiswas_id = Mahasiswa::where('nim',$request->nim)->first();
$data_revisipublikasi['mahasiswas_id'] = $mahasiswas_id->id;
//save data pengajuan
PengajuanRevisiPublikasi::create($data_revisipublikasi);
return redirect()->route('layanan-revisipublikasi.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator');
}
return redirect()->route('layanan-revisipublikasi.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan');
}
public function terima(Request $request){
$id = $request->id;
$countcaseid = PengajuanRevisiPublikasi::where('ttd_operator','!=','-')->count();
$caseid = "LR".date_format(date_create(),"ym").$countcaseid+1;
$cekData = PengajuanRevisiPublikasi::where('caseid',$caseid)->first();
$data = PengajuanRevisiPublikasi::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-revisipublikasi.index')->with('error','Gagal simpan Data, Cek kembali Detail Data yang akan diterima');
}
$data->caseid = $caseid;
$data->ttd_operator = Carbon::now();
if($data->save()){
$data_job = [
[
'jenis' => 'mahasiswa',
'id' => $id,
],
[
'jenis' => 'dpu',
'id' => $id,
],
[
'jenis' => 'penguji1',
'id' => $id,
],
[
'jenis' => 'penguji2',
'id' => $id,
],
];
foreach($data_job as $item){
dispatch(new layananRevisiPublikasiJob($item));
}
return redirect()->route('layanan-revisipublikasi.index')->with('success','Data Berhasil Disimpan, Email Akan Dikirimkan ke Mahasiswa, DPU, Penguji Utama dan Penguji Anggota ');
}
}
public function destroy(Request $request){
$id = $request->id;
//cari data dan kirim notif sebelum dihapus
$data = PengajuanRevisiPublikasi::where('pengajuan_revisi_publikasis.id',$id)
->join('mahasiswas','mahasiswas_id','=','mahasiswas.id')
->first();
//data yang akan dikirim untuk dihapus
$data_job = [
'jenis' => 'penolakan',
'caseid' => $data->caseid,
'nama_mahasiswa' => $data->nama,
'nim_mahasiswa' => $data->nim,
'judul_skripsi_id' => $data->judul_skripsi_id,
'judul_jurnal' => $data->judul_jurnal,
'judul_artikel' => $data->judul_artikel,
'email' => $data->email,
'created_at' => $data->created_at,
'alasan' => $request->alasan,
];
//delete data mahasiswa
try {
$dataDelete = PengajuanRevisiPublikasi::findOrFail($id);
$dataDelete->delete();
//kirim notif ke mahasiswa bahwa ditolak
dispatch(new layananRevisiPublikasiJob($data_job));
}catch(Exception $e){
//kirim notif error jika terjadi error
$text['error'] = $e->getMessage();
dispatch(new kirimNotifikasiErrorJob($text));
return redirect()->route('layanan-revisipublikasi.index')->with('error','Error : '.$text['error']);
}
return redirect()->route('layanan-revisipublikasi.index')->with('success','Permintaan Sudah Diproses, Email akan segera dikirim ke penerima');
}
public function resend($caseid, Request $request){
try{
$data = PengajuanRevisiPublikasi::where('caseid',$caseid)->first();
$data_job = [
'id' => $data->id,
'jenis' => $request->jenis,
];
dispatch(new layananRevisiPublikasiJob($data_job));
}catch(Exception $e){
$text['error'] = $e->getMessage();
dispatch(new kirimNotifikasiErrorJob($text));
return redirect()->route('layanan-revisipublikasi.index')->with('error','Error : '.$text['error']);
}
return redirect()->route('layanan-revisipublikasi.index')->with('success','Berhasil Kirim Ulang Email Kepada '.$request->jenis.' Dengan CaseID : '.$caseid);
}
public function ettd($url, $caseid){
$role_untuk_ettd = ['dpu', 'penguji1', 'penguji2'];
$data = PengajuanRevisiPublikasi::where('caseid','=',$caseid)
->select('pengajuan_revisi_publikasis.id',
'pengajuan_revisi_publikasis.caseid',
'mahasiswas.nama',
'mahasiswas.nim',
'mahasiswas.judul_skripsi_id',
'mahasiswas.judul_jurnal',
'mahasiswas.judul_artikel',
'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar',
'dosen_penguji1.nama_gelar as dosen_penguji1_nama_gelar',
'dosen_penguji2.nama_gelar as dosen_penguji2_nama_gelar',
)
->join('mahasiswas','pengajuan_revisi_publikasis.mahasiswas_id','=','mahasiswas.id')
->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id')
->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id')
->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.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-revisipublikasi.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]);
}
//jika URL Penguji Utama maka render ini
elseif($url=='penguji1'){
$jenis = 'Dosen Penguji Utama';
return view('layanan-revisipublikasi.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]);
}
//jika URL Penguji Anggota maka render ini
elseif($url=='penguji2'){
$jenis = 'Dosen Penguji Anggota';
return view('layanan-revisipublikasi.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]);
}
}
//jika URL tidak diantara ketika itu maka render ini
return redirect()->route('laman-awal')->with(['error'=>'Invalid CASEID, Atau CaseID Tidak Ditemukan']);
}
public function submitettd($url, $caseid, Request $request){
$role_untuk_ettd = ['dpu','penguji1', 'penguji2'];
$data = PengajuanRevisiPublikasi::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-revisipublikasi.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_ettd($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-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']);
}
}
//jika URL Penguji Utama maka render ini
elseif($url=='penguji1'){
//jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error
if($data->ttd_penguji1!='-'){
return redirect()->route('layanan-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_penguji1]);
}
//ambil data ETTD sesuai url
$ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id')->first();
//jika Belum Pernah maka TTD akan diproses
if($ttd->ettd==$request->ettd){
$data->ttd_penguji1 = Carbon::now();
$data->save();
$this->cek_ettd($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-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']);
}
}
//jika URL Penguji Anggota maka render ini
elseif($url=='penguji2'){
//jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error
if($data->ttd_penguji2!='-'){
return redirect()->route('layanan-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_penguji2]);
}
//ambil data ETTD sesuai url
$ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id')->first();
//jika Belum Pernah maka TTD akan diproses
if($ttd->ettd==$request->ettd){
$data->ttd_penguji2 = Carbon::now();
$data->save();
$this->cek_ettd($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-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']);
}
}
}
}
public function cetak($caseid){
$data = PengajuanRevisiPublikasi::where('caseid', $caseid)
->select(
'pengajuan_revisi_publikasis.*',
'mahasiswas.nama',
'bagians.nama_bagian',
'mahasiswas.nim',
'mahasiswas.judul_skripsi_id',
'mahasiswas.judul_jurnal',
'mahasiswas.judul_artikel',
'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar',
'dosen_dpu.nip as dosen_dpu_nip',
'dosen_penguji1.nama_gelar as dosen_penguji1_nama_gelar',
'dosen_penguji1.nip as dosen_penguji1_nip',
'dosen_penguji2.nama_gelar as dosen_penguji2_nama_gelar',
'dosen_penguji2.nip as dosen_penguji2_nip',
)
->join('mahasiswas','pengajuan_revisi_publikasis.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_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id')
->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id')
->first();
if(is_null($data)){
return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Dengan CASEID Tersebut Tidak ada');
}
//jika data tidak null, maka render ini
if($data->ttd_dpu=='-'){
return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Belum Di TandaTangani Oleh DPU / Dosen Penguji Utama / Dosen Penguji Anggota, File Bisa didownload ketika sudah tanda tangan!');
}
$data = [
'title' => 'Cetak Kesediaan',
// 'date' => Carbon::now()->format('d-m-Y'),
'date' => $data->updated_at->format('d-m-Y'),
'nama_mahasiswa' => $data->nama,
'nim' => $data->nim,
'bagian' => $data->nama_bagian,
'judul_skripsi_id' => $data->judul_skripsi_id,
'judul_jurnal' => $data->judul_jurnal,
'judul_artikel' => $data->judul_artikel,
'dosen_dpu_nama_gelar' => $data->dosen_dpu_nama_gelar,
'dosen_dpu_nip' => $data->dosen_dpu_nip,
'dosen_dpu_qrcode' => base64_encode(QrCode::size(100)->generate($data->dosen_dpu_nama_gelar.'_TTD_'.$data->ttd_dpu)),
'dosen_penguji2_nama_gelar' => $data->dosen_penguji2_nama_gelar,
'dosen_penguji2_nip' => $data->dosen_penguji2_nip,
'dosen_penguji2_qrcode' => base64_encode(QrCode::size(100)->generate($data->dosen_penguji2_nama_gelar.'_TTD_'.$data->ttd_penguji2)),
'dosen_penguji1_nama_gelar' => $data->dosen_penguji1_nama_gelar,
'dosen_penguji1_nip' => $data->dosen_penguji1_nip,
'dosen_penguji1_qrcode' => base64_encode(QrCode::size(100)->generate($data->dosen_penguji1_nama_gelar.'_TTD_'.$data->ttd_penguji1)),
];
$pdf = Pdf::loadView('layanan-revisipublikasi.cetak', $data);
return $pdf->setPaper('a4', 'potrait')->download($caseid.'- Surat Pernyataan Publikasi.pdf');
}
private function cek_ettd($caseid){
$data = PengajuanRevisiPublikasi::where('caseid',$caseid)->first();
if($data->ttd_dpu!='-' && $data->ttd_penguji1!='-' && $data->ttd_penguji2!='-' ){
$data_job =[
'jenis' => 'mahasiswa selesai',
'id' => $data->id,
];
dispatch(new layananRevisiPublikasiJob($data_job));
}
}
}