From 9b224935f4d36e4451107f775e8abe5421e02157 Mon Sep 17 00:00:00 2001 From: Fiky Baharudin Date: Fri, 7 Mar 2025 09:57:56 +0700 Subject: [PATCH] production tambah menu lomba --- .../LayananPengajuanLombaController.php | 337 +++++++++++++++++- app/Http/Controllers/MonitoringController.php | 17 + app/Jobs/layananLombaJob.php | 250 +++++++++++++ app/Mail/pengajuanLombaMail.php | 54 +++ app/Models/Lomba.php | 17 + .../2025_02_27_101412_create_lombas_table.php | 15 + .../2025_03_05_140752_alter_table_lombas.php | 32 ++ resources/views/layout/app_guest.blade.php | 4 +- .../views/layout/navbars/sidebar.blade.php | 11 + resources/views/lomba/cetak.blade.php | 150 ++++++++ resources/views/lomba/detail.blade.php | 175 +++++++++ resources/views/lomba/ettd.blade.php | 125 +++++++ resources/views/lomba/index.blade.php | 133 +++++++ resources/views/lomba/tambah.blade.php | 53 ++- resources/views/mail/dpadpu.blade.php | 2 +- resources/views/mail/lomba.blade.php | 308 ++++++++++++++++ resources/views/monitoring/lomba.blade.php | 118 ++++++ routes/web.php | 16 +- 18 files changed, 1799 insertions(+), 18 deletions(-) create mode 100644 app/Jobs/layananLombaJob.php create mode 100644 app/Mail/pengajuanLombaMail.php create mode 100644 database/migrations/2025_03_05_140752_alter_table_lombas.php create mode 100644 resources/views/lomba/cetak.blade.php create mode 100644 resources/views/lomba/detail.blade.php create mode 100644 resources/views/lomba/ettd.blade.php create mode 100644 resources/views/lomba/index.blade.php create mode 100644 resources/views/mail/lomba.blade.php create mode 100644 resources/views/monitoring/lomba.blade.php diff --git a/app/Http/Controllers/LayananPengajuanLombaController.php b/app/Http/Controllers/LayananPengajuanLombaController.php index 2d82e4e..2b7b5e3 100644 --- a/app/Http/Controllers/LayananPengajuanLombaController.php +++ b/app/Http/Controllers/LayananPengajuanLombaController.php @@ -2,18 +2,351 @@ 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'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/MonitoringController.php b/app/Http/Controllers/MonitoringController.php index e92b41b..fa38967 100644 --- a/app/Http/Controllers/MonitoringController.php +++ b/app/Http/Controllers/MonitoringController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Models\Lomba; use App\Models\PengajuanDpuDpa; use App\Models\PengajuanPemutihan; use App\Models\PengajuanRevisiPublikasi; @@ -147,6 +148,22 @@ public function caseid($caseid){ return view('monitoring.wisuda',['title' => 'Monitoring Pengajuan Wisuda - '.$caseid,'data' => $data]); } else{ + $cek_caseid = substr($caseid, 0, 1); + if($cek_caseid=="K"){ + $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($data==null){ + return redirect()->route('monitoring.index')->with('error','CaseID Tidak Ditemukan'); + } + return view('monitoring.lomba',['title' => 'Monitoring Pengajuan Bantuan Delegasi Lomba - '.$caseid,'data' => $data]); + } return redirect()->route('monitoring.index')->with('error','CaseID Tidak Valid'); } } diff --git a/app/Jobs/layananLombaJob.php b/app/Jobs/layananLombaJob.php new file mode 100644 index 0000000..495b8db --- /dev/null +++ b/app/Jobs/layananLombaJob.php @@ -0,0 +1,250 @@ +data = $data; + } + + /** + * Execute the job. + */ + public function handle(): void + { + $jenis = $this->data['jenis']; + $caseid = $this->data['caseid']; + $data = Lomba:: + select('lombas.*', + 'mahasiswas.*', + 'dosen_pembimbing.nama_gelar as dosen_pembimbing', + 'dosen_pembimbing.email as email_dosen_pembimbing', + ) + ->join('mahasiswas','mahasiswa_id','=','mahasiswas.id') + ->join('users as dosen_pembimbing','dosen_pembimbing_lomba','=','dosen_pembimbing.id') + ->where('caseid',$caseid) + ->first(); + if($jenis==="penolakan"){ + //data email + $data_email = [ + 'subject' => $caseid.' - Pengajuan Bantuan Delegasi Lomba', + 'judul' => 'Pengajuan Bantuan Delegasi Lomba', + 'jenis' => 'penolakan', + 'caseid' => $caseid, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, + 'email' => $data->email, + 'nama_kompetisi' => $data->nama_kompetisi, + 'nama_penyelenggara' => $data->nama_penyelenggara, + 'tanggal_mulai' => $data->tanggal_mulai, + 'tanggal_berakhir' => $data->tanggal_berakhir, + 'keterangan_operator' => $data->keterangan_operator, + ]; + + // send email + $konten = new pengajuanLombaMail($data_email); + Mail::to($this->data['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + //send email dummy + // $konten = new pengajuanLombaMail($data_email); + // Mail::to('f@unej.ac.id') + // ->bcc('f@unej.ac.id') + // ->send($konten); + + //telegram + $text = "BETA\n". + "Penolakan Pengajuan Bantuan Delegasi Lomba Mahasiswa - ".$data_email['caseid'].":\n\n". + "Kepada Mahasiswa :".$data_email['nama_mahasiswa']."\n". + "Dengan Email : ".$data_email['email']."\n\n". + "Alasan : ".$data['keterangan_operator']; + + //send telegram + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($jenis==="mahasiswa"){ + //data email + $data_email = [ + 'subject' => $caseid.' - Pengajuan Bantuan Delegasi Lomba', + 'judul' => 'Pengajuan Bantuan Delegasi Lomba', + 'jenis' => 'mahasiswa', + 'caseid' => $caseid, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, + 'email' => $data->email, + 'nama_kompetisi' => $data->nama_kompetisi, + 'nama_penyelenggara' => $data->nama_penyelenggara, + 'tanggal_mulai' => $data->tanggal_mulai, + 'tanggal_berakhir' => $data->tanggal_berakhir, + 'url' => route('monitoring.caseid',['caseid'=>$data->caseid]), + ]; + + // send email + $konten = new pengajuanLombaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //send email dummy + // $konten = new pengajuanLombaMail($data_email); + // Mail::to('f@unej.ac.id') + // ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim monitoring Pengajuan Bantuan Delegasi Lomba Mahasiswa:\n". + "Kepada Mahasiswa :".$data_email['nama_mahasiswa']."\n". + "Dengan Email : ".$data_email['email']."\n\n". + "URL : `".$data_email['url']."`"; + + //send telegram + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($jenis==="mahasiswa_selesai"){ + //data email + $data_email = [ + 'subject' => $caseid.' - Pengajuan Bantuan Delegasi Lomba', + 'judul' => 'Pengajuan Bantuan Delegasi Lomba', + 'jenis' => 'mahasiswa_selesai', + 'caseid' => $caseid, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, + 'email' => $data->email, + 'nama_kompetisi' => $data->nama_kompetisi, + 'nama_penyelenggara' => $data->nama_penyelenggara, + 'tanggal_mulai' => $data->tanggal_mulai, + 'tanggal_berakhir' => $data->tanggal_berakhir, + 'url' => route('monitoring.caseid',['caseid'=>$data->caseid]), + ]; + + // send email + $konten = new pengajuanLombaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //send email dummy + // $konten = new pengajuanLombaMail($data_email); + // Mail::to('f@unej.ac.id') + // ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Notifikasi Selesai Pengajuan Bantuan Delegasi Lomba Mahasiswa:\n". + "Kepada Mahasiswa :".$data_email['nama_mahasiswa']."\n". + "Dengan Email : ".$data_email['email']."\n\n". + "URL : `".$data_email['url']."`"; + + //send telegram + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($jenis==="dpl"){ + //data email + $data_email = [ + 'subject' => $caseid.' - Pengajuan Bantuan Delegasi Lomba', + 'judul' => 'Pengajuan Bantuan Delegasi Lomba', + 'jenis' => 'dpl', + 'caseid' => $caseid, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, + 'nama_kompetisi' => $data->nama_kompetisi, + 'nama_penyelenggara' => $data->nama_penyelenggara, + 'tanggal_mulai' => $data->tanggal_mulai, + 'tanggal_berakhir' => $data->tanggal_berakhir, + 'dosen_pembimbing' => $data->dosen_pembimbing, + 'email_dosen_pembimbing' => $data->email_dosen_pembimbing, + 'url' => route('layanan-lomba.ettd',['url'=>$jenis,'caseid'=>$data->caseid]), + ]; + + // send email + $konten = new pengajuanLombaMail($data_email); + Mail::to($data_email['email_dosen_pembimbing']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //send email dummy + // $konten = new pengajuanLombaMail($data_email); + // Mail::to('f@unej.ac.id') + // ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim ETTD Pengajuan Bantuan Delegasi Lomba Mahasiswa:\n". + "Kepada DPL :".$data_email['dosen_pembimbing']."\n". + "Dengan Email : ".$data_email['email_dosen_pembimbing']."\n\n". + "URL : `".$data_email['url']."`"; + + //send telegram + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($jenis==="wd3"){ + //data WD3 + $dosen = Role::findByName('Wakil Dekan 3')->users->first(); + //data email + $data_email = [ + 'subject' => $caseid.' - Pengajuan Bantuan Delegasi Lomba', + 'judul' => 'Pengajuan Bantuan Delegasi Lomba', + 'jenis' => 'wd3', + 'caseid' => $caseid, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, + 'nama_kompetisi' => $data->nama_kompetisi, + 'nama_penyelenggara' => $data->nama_penyelenggara, + 'tanggal_mulai' => $data->tanggal_mulai, + 'tanggal_berakhir' => $data->tanggal_berakhir, + 'dosen_pembimbing' => $dosen->nama_gelar, + 'email_dosen_pembimbing' => $dosen->email, + 'url' => route('layanan-lomba.ettd',['url'=>$jenis,'caseid'=>$data->caseid]), + ]; + + // send email + $konten = new pengajuanLombaMail($data_email); + Mail::to($data_email['email_dosen_pembimbing']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //send email dummy + // $konten = new pengajuanLombaMail($data_email); + // Mail::to('f@unej.ac.id') + // ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim ETTD Pengajuan Bantuan Delegasi Lomba Mahasiswa:\n". + "Kepada Wakil Dekan 3 :".$data_email['dosen_pembimbing']."\n". + "Dengan Email : ".$data_email['email_dosen_pembimbing']."\n\n". + "URL : `".$data_email['url']."`"; + + //send telegram + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + + } +} diff --git a/app/Mail/pengajuanLombaMail.php b/app/Mail/pengajuanLombaMail.php new file mode 100644 index 0000000..320e89c --- /dev/null +++ b/app/Mail/pengajuanLombaMail.php @@ -0,0 +1,54 @@ +mailData = $mailData; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: $this->mailData['subject'], + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + view: 'mail.lomba', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Models/Lomba.php b/app/Models/Lomba.php index f555e97..206e1a8 100644 --- a/app/Models/Lomba.php +++ b/app/Models/Lomba.php @@ -8,4 +8,21 @@ class Lomba extends Model { use HasFactory; + + protected $fillable = [ + 'caseid', + 'mahasiswa_id', + 'nama_kompetisi', + 'nama_penyelenggara', + 'tingkat_lomba', + 'tanggal_mulai', + 'tanggal_berakhir', + 'dosen_pembimbing_lomba', + 'surat_tugas_delegasi_lomba', + 'sk_dekan_untuk_pembimbing', + 'poster_lomba', + 'bukti_pembayaran', + 'bukti_bimbingan_lomba', + 'status', + ]; } diff --git a/database/migrations/2025_02_27_101412_create_lombas_table.php b/database/migrations/2025_02_27_101412_create_lombas_table.php index e899e87..d3a0a3a 100644 --- a/database/migrations/2025_02_27_101412_create_lombas_table.php +++ b/database/migrations/2025_02_27_101412_create_lombas_table.php @@ -13,6 +13,21 @@ public function up(): void { Schema::create('lombas', function (Blueprint $table) { $table->id(); + $table->string('caseid'); + $table->string('nama_kompetisi'); + $table->string('nama_penyelenggara'); + $table->string('tingkat_lomba'); + $table->date('tanggal_mulai'); + $table->date('tanggal_berakhir'); + $table->unsignedBigInteger('dosen_pembimbing_lomba'); + $table->string('surat_tugas_delegasi_lomba'); + $table->string('sk_dekan_untuk_pembimbing'); + $table->string('poster_lomba'); + $table->string('bukti_pembayaran'); + $table->string('bukti_bimbingan_lomba'); + $table->string('status')->nullable(); + $table->foreign('dosen_pembimbing_lomba')->references('id')->on('users')->onDelete('cascade'); + $table->foreignId('mahasiswa_id')->constrained('mahasiswas'); $table->timestamps(); }); } diff --git a/database/migrations/2025_03_05_140752_alter_table_lombas.php b/database/migrations/2025_03_05_140752_alter_table_lombas.php new file mode 100644 index 0000000..335f102 --- /dev/null +++ b/database/migrations/2025_03_05_140752_alter_table_lombas.php @@ -0,0 +1,32 @@ +text('keterangan_operator')->nullable()->after('status'); + $table->text('ettd_dpl')->nullable()->after('status'); + $table->text('ettd_wd3')->nullable()->after('status'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('lombas', function (Blueprint $table) { + $table->dropColumn('keterangan_operator'); + $table->dropColumn('ettd_dpl'); + $table->dropColumn('ettd_wd3'); + }); + } +}; diff --git a/resources/views/layout/app_guest.blade.php b/resources/views/layout/app_guest.blade.php index c5c0286..1b50e38 100644 --- a/resources/views/layout/app_guest.blade.php +++ b/resources/views/layout/app_guest.blade.php @@ -109,8 +109,8 @@ @endhasanyrole + @hasanyrole('Super Administrator|Operator Kemahasiswaan') + + + @endhasanyrole