pintu2/app/Http/Controllers/LayananPengajuanLombaController.php
Fiky Baharudin 9b224935f4
Some checks failed
Run Action to Production / run pull to sync on target message (push) Failing after 1m7s
production tambah menu lomba
2025-03-07 09:57:56 +07:00

352 lines
15 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Jobs\layananLombaJob;
use Illuminate\Http\Request;
use App\Models\Lomba;
use App\Models\Mahasiswa;
use App\Models\User;
use Barryvdh\DomPDF\Facade\Pdf;
use Carbon\Carbon;
use Illuminate\Support\Facades\Storage;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
use Spatie\Permission\Models\Role;
class LayananPengajuanLombaController extends Controller
{
public function index(){
$data = Lomba::
select('lombas.*',
'mahasiswas.nim as nim',
'mahasiswas.nama as nama',
'dosen_pembimbing.nama_gelar as dosen_pembimbing',
)
->join('mahasiswas','mahasiswa_id','=','mahasiswas.id')
->join('users as dosen_pembimbing','dosen_pembimbing_lomba','=','dosen_pembimbing.id')
->get();
return view('lomba.index',['title'=>'Layanan Pengajuan Delegasi Lomba','data'=>$data]);
}
public function detail($caseid){
$data = Lomba::
select('lombas.*',
'mahasiswas.*',
'dosen_pembimbing.nama_gelar as dosen_pembimbing',
)
->join('mahasiswas','mahasiswa_id','=','mahasiswas.id')
->join('users as dosen_pembimbing','dosen_pembimbing_lomba','=','dosen_pembimbing.id')
->where('caseid',$caseid)
->first();
return view('lomba.detail',['title'=>'Detail Pengajuan Delegasi Lomba','data'=>$data]);
}
public function tambah(){
$dosen = User::role('Dosen')->get();
return view('lomba.tambah',['dosen'=>$dosen,]);
}
//belum ada job untuk email
public function terima($caseid, Request $request){
$data = Lomba::where('caseid',$caseid)->first();
$data->status = '1';
if($data->save()){
$data_job = [
[
'jenis' => 'mahasiswa',
'caseid' => $caseid,
],
[
'jenis' => 'dpl',
'caseid' => $caseid,
],
];
foreach($data_job as $item){
dispatch(new layananLombaJob($item));
}
return redirect()->route('layanan-lomba.index')->with('success','Sukses Menerima Pengajuan');
}
return redirect()->route('layanan-lomba.index')->with('error','Gagal Menerima Pengajuan');
}
//done
public function tolak($caseid, Request $request){
$request->validate([
'keterangan_operator' => 'required',
]);
$data_job = [
'jenis' => 'penolakan',
'caseid' => $caseid,
];
$data = Lomba::where('caseid',$caseid)->first();
$data->status = '0';
$data->keterangan_operator = $request->keterangan_operator;
if($data->save()){
dispatch(new layananLombaJob($data_job));
return redirect()->route('layanan-lomba.index')->with('success','Permintaan Sudah Diproses, Email akan segera dikirim ke penerima');
}
return redirect()->route('layanan-lomba.index')->with('error','Gagal Menolak Pengajuan');}
public function ettd($url,$caseid){
$role_untuk_ettd = ['dpl','wd3'];
$data = Lomba::
select('lombas.*',
'mahasiswas.*',
'dosen_pembimbing.nama_gelar as dosen_pembimbing',
)
->join('mahasiswas','mahasiswa_id','=','mahasiswas.id')
->join('users as dosen_pembimbing','dosen_pembimbing_lomba','=','dosen_pembimbing.id')
->where('caseid',$caseid)
->first();
if(in_array($url, $role_untuk_ettd) && !is_null($data)){
//jika URL DPL maka render ini
if($url=='dpl'){
$jenis = 'Dosen Pembimbing Lomba';
$data_dosen = [
'caseid' => $data->caseid,
'nama' => $data->nama,
'nim' => $data->nim,
'nama_kompetisi' => $data->nama_kompetisi,
'nama_penyelenggara' => $data->nama_penyelenggara,
'tanggal_mulai' => $data->tanggal_mulai,
'tanggal_berakhir' => $data->tanggal_berakhir,
'tingkat_lomba' => $data->tingkat_lomba,
'sk_dekan_untuk_pembimbing' => $data->sk_dekan_untuk_pembimbing,
'surat_tugas_delegasi_lomba' => $data->surat_tugas_delegasi_lomba,
'bukti_bimbingan_lomba' => $data->bukti_bimbingan_lomba,
'nama_dosen' => $data->dosen_pembimbing,
];
return view('lomba.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data_dosen]);
}
//jika URL WD3 maka render ini
elseif($url=='wd3'){
$jenis = 'Wakil Dekan 3';
$dosen = Role::findByName('Wakil Dekan 3')->users->first();
$data_dosen = [
'caseid' => $data->caseid,
'nama' => $data->nama,
'nim' => $data->nim,
'nama_kompetisi' => $data->nama_kompetisi,
'nama_penyelenggara' => $data->nama_penyelenggara,
'tanggal_mulai' => $data->tanggal_mulai,
'tanggal_berakhir' => $data->tanggal_berakhir,
'tingkat_lomba' => $data->tingkat_lomba,
'sk_dekan_untuk_pembimbing' => $data->sk_dekan_untuk_pembimbing,
'surat_tugas_delegasi_lomba' => $data->surat_tugas_delegasi_lomba,
'bukti_bimbingan_lomba' => $data->bukti_bimbingan_lomba,
'nama_dosen' => $dosen->nama_gelar,
];
$jenis = 'Wakil Dekan 3';
return view('lomba.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data_dosen]);
}
}
//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 = ['dpl','wd3'];
$request->validate([
'caseid' => 'required',
'ettd' => 'required',
]);
if(in_array($url, $role_untuk_ettd)){
//jika URL DPL maka render ini
if($url=='dpl'){
$data = Lomba::
select('lombas.*',
'mahasiswas.*',
'dosen_pembimbing.ettd',
'dosen_pembimbing.nama_gelar as nama_dosen_pembimbing',
)
->join('mahasiswas','mahasiswa_id','=','mahasiswas.id')
->join('users as dosen_pembimbing','dosen_pembimbing_lomba','=','dosen_pembimbing.id')
->where('caseid',$request->caseid)
->first();
if($request->ettd==$data->ettd){
$data = Lomba::where('caseid',$request->caseid)
->first();
$data->ettd_dpl = Carbon::now();
$data->save();
$data_job = [
'jenis' => 'wd3',
'caseid' => $request->caseid,
];
dispatch(new layananLombaJob($data_job));
return redirect()->route('layanan-lomba.ettd',['url'=>$url,'caseid'=>$request->caseid])->with('success','Sukses Menyetujui Pengajuan');
}
return redirect()->route('layanan-lomba.ettd',['url'=>$url,'caseid'=>$request->caseid])->with('error','Gagal Menyetujui Pengajuan, E-TTD Tidak Sesuai');
}
//jika URL WD3 maka render ini
elseif($url=='wd3'){
$dosen = Role::findByName('Wakil Dekan 3')->users->first();
$data = Lomba::where('caseid',$request->caseid)
->first();
if($request->ettd==$dosen->ettd){
$data->ettd_wd3 = $dosen->nama_gelar."-".Carbon::now();
$data->save();
$data_job = [
'jenis' => 'mahasiswa_selesai',
'caseid' => $request->caseid,
];
dispatch(new layananLombaJob($data_job));
return redirect()->route('layanan-lomba.ettd',['url'=>$url,'caseid'=>$request->caseid])->with('success','Sukses Menyetujui Pengajuan');
}
return redirect()->route('layanan-lomba.ettd',['url'=>$url,'caseid'=>$request->caseid])->with('error','Gagal Menyetujui Pengajuan, E-TTD Tidak Sesuai');
}
}
//jika URL tidak diantara ketika itu maka render ini
return redirect()->route('laman-awal')->with(['error'=>'Invalid CASEID, Atau CaseID Tidak Ditemukan']);
}
public function store(Request $request){
// dd($request->all());
$request->validate([
'nim' => 'numeric|required',
'nama' => 'required',
'nomor_hp' => 'numeric|required',
'email' => 'email|required',
'nama_kompetisi' => 'required',
'nama_penyelenggara' => 'required',
'tingkat_lomba' => 'required',
'tanggal_mulai' => 'date|required',
'tanggal_berakhir' => 'date|required',
'dosen_pembimbing_lomba' => 'numeric|required',
'surat_tugas_delegasi_lomba'=>'required|mimes:pdf|max:2048',
'sk_dekan_untuk_pembimbing'=>'required|mimes:pdf|max:2048',
'poster_lomba'=>'required|mimes:pdf,jpg,png|max:2048',
'bukti_pembayaran'=>'required|mimes:pdf,jpg,png|max:2048',
'bukti_bimbingan_lomba'=>'required|mimes:pdf|max:4096',
]);
//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-lomba.tambah')->with('error','Data Dengan NIM '.$mahasiswas_id->nim.' Sudah Ada, Gunakan Fitur Cari');
}
//add data mahasiswa
$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'] = 1;
$data_mhs['dosen_dpu_id'] = 1;
$data_mhs['dosen_dpa_id'] = 1;
//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'] = '-';
Mahasiswa::create($data_mhs);
//add data lomba
$mahasiswas_id = Mahasiswa::where('nim',$request->nim)->first();
$countcaseid = Lomba::count();
$caseid = "K".date_format(date_create(),"ym").$countcaseid+1;
$lomba = new Lomba;
$lomba->caseid = $caseid;
$lomba->nama_kompetisi = $request->nama_kompetisi;
$lomba->nama_penyelenggara = $request->nama_penyelenggara;
$lomba->tingkat_lomba = $request->tingkat_lomba;
$lomba->tanggal_mulai = $request->tanggal_mulai;
$lomba->tanggal_berakhir = $request->tanggal_berakhir;
$lomba->dosen_pembimbing_lomba = $request->dosen_pembimbing_lomba;
$lomba->mahasiswa_id = $mahasiswas_id->id;
//set penyimpanan file
$file_surat_tugas_delegasi_lomba = $request->file('surat_tugas_delegasi_lomba');
$file_sk_dekan_untuk_pembimbing = $request->file('sk_dekan_untuk_pembimbing');
$file_poster_lomba = $request->file('poster_lomba');
$file_bukti_pembayaran = $request->file('bukti_pembayaran');
$file_bukti_bimbingan_lomba = $request->file('bukti_bimbingan_lomba');
$nama_surat_tugas_delegasi_lomba = 'surat_tugas_delegasi_lomba.'.$file_surat_tugas_delegasi_lomba->getClientOriginalExtension();
$nama_sk_dekan_untuk_pembimbing = 'sk_dekan_untuk_pembimbing.'.$file_sk_dekan_untuk_pembimbing->getClientOriginalExtension();
$nama_poster_lomba ='poster_lomba.'.$file_poster_lomba->getClientOriginalExtension();
$nama_bukti_pembayaran = 'bukti_pembayaran.'.$file_bukti_pembayaran->getClientOriginalExtension();
$nama_bukti_bimbingan_lomba = 'bukti_bimbingan_lomba.'.$file_bukti_bimbingan_lomba->getClientOriginalExtension();
$path = 'lomba/'.$caseid.'/'.$nama_surat_tugas_delegasi_lomba;
$path2 = 'lomba/'.$caseid.'/'.$nama_sk_dekan_untuk_pembimbing;
$path3 = 'lomba/'.$caseid.'/'.$nama_poster_lomba;
$path4 = 'lomba/'.$caseid.'/'.$nama_bukti_pembayaran;
$path5 = 'lomba/'.$caseid.'/'.$nama_bukti_bimbingan_lomba;
//jika berhasil save file dan save data mhs maka pengajuan akan diisi
if(Storage::disk('public')->put($path, file_get_contents($file_surat_tugas_delegasi_lomba))
&& Storage::disk('public')->put($path2, file_get_contents($file_sk_dekan_untuk_pembimbing))
&& Storage::disk('public')->put($path3, file_get_contents($file_poster_lomba))
&& Storage::disk('public')->put($path4, file_get_contents($file_bukti_pembayaran))
&& Storage::disk('public')->put($path5, file_get_contents($file_bukti_bimbingan_lomba))){
$lomba->surat_tugas_delegasi_lomba = $nama_surat_tugas_delegasi_lomba;
$lomba->sk_dekan_untuk_pembimbing = $nama_sk_dekan_untuk_pembimbing;
$lomba->poster_lomba = $nama_poster_lomba;
$lomba->bukti_pembayaran = $nama_bukti_pembayaran;
$lomba->bukti_bimbingan_lomba = $nama_bukti_bimbingan_lomba;
$lomba->save();
return redirect()->route('layanan-lomba.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator');
}
return redirect()->route('layanan-lomba.tambah')->with('error','Gagal Tambah Data, Periksa Kembali data yang anda masukkan');
}
//done
public function cetak($caseid){
$data = Lomba::
select('lombas.*',
'mahasiswas.*',
'dosen_pembimbing.nama_gelar as nama_dosen_pembimbing',
'dosen_pembimbing.nip as nip_dosen_pembimbing',
)
->join('mahasiswas','mahasiswa_id','=','mahasiswas.id')
->join('users as dosen_pembimbing','dosen_pembimbing_lomba','=','dosen_pembimbing.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');
}
//jika kombi belum ttd, maka render ini
if($data->ettd_wd3==NULL){
return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Belum Di TandaTangani Oleh Wakil Dekan III, File Bisa didownload ketika Wakil Dekan III sudah tanda tangan!');
}
//get Data WD3
$dosen = Role::findByName('Wakil Dekan 3')->users->first();
$data = [
'title' => 'Cetak Kesediaan',
// 'date' => Carbon::now()->format('d-m-Y'),
'date' => $data->updated_at->format('d-m-Y'),
'nama_mahasiswa' => $data->nama,
'nim_mahasiswa' => $data->nim,
'nama_kompetisi' => $data->nama_kompetisi,
'nama_penyelenggara' => $data->nama_penyelenggara,
'tanggal_mulai' => $data->tanggal_mulai,
'tanggal_selesai' => $data->tanggal_selesai,
'nama_dosen_pembimbing_lomba' => $data->nama_dosen_pembimbing,
'nip_dosen_pembimbing_lomba' => $data->nip_dosen_pembimbing,
'qrcode_dosen_pembimbing_lomba' => base64_encode(QrCode::size(100)->generate('TTD_'.$data->nama_dosen_pembimbing_lomba.'-'.$data->ettd_dpl)),
'nama_wd3' => $dosen->nama_gelar,
'nip_wd3' => $dosen->nip,
'qrcode_wd3' => base64_encode(QrCode::size(100)->generate('TTD_'.$data->ettd_wd3)),
];
$pdf = Pdf::loadView('lomba.cetak', $data);
return $pdf->setPaper('a4', 'potrait')->stream($caseid.'-Kesediaan Menjadi Dosen Pembimbing Tugas Akhir.pdf');
}
}