pintu2/app/Http/Controllers/LayananPengajuanDpuDpaController.php

304 lines
13 KiB
PHP
Raw Normal View History

2024-02-27 22:53:57 +07:00
<?php
namespace App\Http\Controllers;
2024-03-07 18:13:09 +07:00
use App\Jobs\layananPengajuanDpuDpaJob;
2024-03-02 18:06:48 +07:00
use App\Models\Mahasiswa;
use App\Models\PengajuanDpuDpa;
use App\Models\User;
2024-03-07 18:13:09 +07:00
use Carbon\Carbon;
2024-02-27 22:53:57 +07:00
use Illuminate\Http\Request;
2024-03-02 18:06:48 +07:00
use Illuminate\Support\Facades\Storage;
2024-03-07 18:13:09 +07:00
use PhpParser\Node\Expr\Cast\Object_;
use Spatie\Permission\Models\Role;
2024-02-27 22:53:57 +07:00
class LayananPengajuanDpuDpaController extends Controller
{
2024-03-07 18:13:09 +07:00
//done
2024-02-27 22:53:57 +07:00
public function index(){
2024-03-02 18:06:48 +07:00
$data = PengajuanDpuDpa::
select('pengajuan_dpu_dpas.*',
'mahasiswas.nim as nim',
'mahasiswas.nama as nama',
'dosen_dpu.nama_gelar as dpu_nama_gelar',
'dosen_dpa.nama_gelar as dpa_nama_gelar'
)
->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]);
2024-02-27 22:53:57 +07:00
}
2024-03-07 18:13:09 +07:00
//done
2024-02-27 22:53:57 +07:00
public function tambah(){
2024-03-02 18:06:48 +07:00
$dosen = User::role('Dosen')->get();
return view('layanan-dpudpa.tambah',['dosen'=>$dosen]);
2024-02-27 22:53:57 +07:00
}
2024-03-07 18:13:09 +07:00
//done
public function terima(Request $request){
$id = $request->id;
$countcaseid = PengajuanDpuDpa::where('updated_at','<=',Carbon::today())->count();
$caseid = "LS".date_format(date_create(),"ymd").$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
2024-03-02 18:06:48 +07:00
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',
]);
2024-03-07 18:13:09 +07:00
//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');
}
2024-03-02 18:06:48 +07:00
2024-03-07 18:13:09 +07:00
$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
2024-03-02 18:06:48 +07:00
$file_transkrip = $request->file('file_transkrip');
$file_transkrip_name = 'LS_'.str_replace(' ', '_',$file_transkrip->getClientOriginalName());
$path = $request->nim.'/'.$file_transkrip_name;
2024-03-07 18:13:09 +07:00
//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');
}
2024-03-02 18:06:48 +07:00
2024-03-07 18:13:09 +07:00
//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',
'nama' => $data->nama,
'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)){
Storage::disk('public')->delete($path);
//hapus data pengajuan mahasiswa
return redirect()->route('layanan-dpudpa.index')->with('error','Gagal Hapus Data, File Mahasiswa Yang akan dihapus tidak ditemukan');
}
$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!');
}
2024-03-02 18:06:48 +07:00
2024-03-07 18:13:09 +07:00
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,
2024-03-02 18:06:48 +07:00
2024-03-07 18:13:09 +07:00
];
$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']);
2024-03-02 18:06:48 +07:00
2024-03-07 18:13:09 +07:00
}
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('laman-awal')->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan']);
}
//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('laman-awal')->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan']);
}
//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']);
}
2024-03-02 18:06:48 +07:00
}
2024-03-07 18:13:09 +07:00
//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]);
}
//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('laman-awal')->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan']);
}
//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']);
}
}
}
}
//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));
2024-03-02 18:06:48 +07:00
}
2024-02-27 22:53:57 +07:00
}
}