MIF_E31211891/app/Http/Controllers/DaftarSidangController.php

122 lines
4.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use Carbon\Carbon;
use App\Models\Sidang;
use App\Models\Pengajuan;
use App\Models\SidangJadwal;
use Illuminate\Http\Request;
use App\Models\SettingSidang;
use App\Models\SeminarProposal;
use Illuminate\Support\Facades\Session;
class DaftarSidangController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
// Dapatkan pengguna saat ini
$user = auth()->user();
$user_id = $user->id;
// Dapatkan pengajuan yang disetujui berdasarkan ID mahasiswa
$pengajuan = Pengajuan::where('id_mahasiswa', $user->id)->where('status', 'Disetujui')->get();
$proposals = SeminarProposal::where('id_mahasiswa', $user->id)->get();
// Ambil satu entri pertama dari Sidang yang sesuai dengan kriteria
$sidang = Sidang::where('id_mahasiswa', $user->id)
->with('sidangJadwal')
->first();
$sidangJadwals = SidangJadwal::where('id_mahasiswa', $user_id)->get();
return view('jadwal-sidang', compact('user_id', 'pengajuan', 'proposals', 'sidang', 'sidangJadwals'));
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$setting = SettingSidang::first();
$tglMulai = $setting->tgl_mulai_pendaftaran;
$tglSelesai = $setting->tgl_selesai_pendaftaran;
$currentDate = Carbon::now();
if ($currentDate->lt($tglMulai)) {
return redirect()->back()->with('toast_error', 'Pendaftaran Sidang Belum Dibuka.');
} elseif ($currentDate->gt($tglSelesai)) {
return redirect()->back()->with('toast_error', 'Pendaftaran Sidang Sudah Ditutup.');
}
// Validasi data
$request->validate([
'id_mahasiswa' => 'required|exists:users,id',
'id_pengajuan' => 'required|exists:pengajuan,id',
'id_seminar_proposal' => 'required|exists:seminar_proposal,id',
'berkas' => 'required|file|mimes:pdf,doc,docx|max:2048', // Sesuaikan dengan tipe berkas yang diizinkan dan batas ukuran yang diinginkan
]);
// Cek apakah sudah ada Seminar Proposal dengan ID Pengajuan yang sama
$existingSidang = Sidang::where('id_pengajuan', $request->id_pengajuan)->exists();
if ($existingSidang) {
// Jika sudah ada, beri pesan error ke pengguna
Session::flash('toast_error', 'Sudah Mendaftar Sidang.');
// Redirect pengguna ke halaman sebelumnya
return redirect()->route('daftar-sidang');
}
// Coba untuk menyimpan berkas
try {
// Menyimpan berkas
$berkas = $request->file('berkas');
$nama_berkas = $berkas->getClientOriginalName();
$berkas->storeAs('public/berkas_sidang', $nama_berkas); // Menyimpan berkas di folder penyimpanan yang diinginkan
// Simpan data seminar proposal
Sidang::create([
'id_mahasiswa' => $request->id_mahasiswa,
'id_pengajuan' => $request->id_pengajuan,
'id_seminar_proposal' => $request->id_seminar_proposal,
'berkas' => $nama_berkas,
]);
// Set pesan toast sukses
Session::flash('toast_success', 'Pendaftaran Sidang Berhasil.');
} catch (\Exception $e) {
// Tangani kesalahan jika gagal menyimpan berkas
Session::flash('toast_error', 'Terjadi kesalahan saat menyimpan berkas: ' . $e->getMessage());
}
// Redirect pengguna ke halaman sebelumnya
return redirect()->route('jadwal-sidang');
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
}
}