122 lines
4.0 KiB
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)
|
|
{
|
|
//
|
|
}
|
|
}
|