Some checks failed
Run Action to Production / run pull to sync on target message (push) Failing after 1m7s
352 lines
15 KiB
PHP
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');
|
|
}
|
|
} |