MIF_E31211891/app/Http/Controllers/DaftarSemproController.php

130 lines
4.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use Carbon\Carbon;
use App\Models\User;
use App\Models\Pengajuan;
use Illuminate\Http\Request;
use App\Models\SeminarJadwal;
use App\Models\SettingSempro;
use App\Models\SeminarProposal;
use Illuminate\Support\Facades\Session;
class DaftarSemproController 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();
// Ambil satu entri pertama dari SeminarProposal yang sesuai dengan kriteria
$seminarProposal = SeminarProposal::where('id_mahasiswa', $user->id)
->with('seminarJadwal')
->first();
$seminarJadwals = SeminarJadwal::where('id_mahasiswa', $user_id)->get();
return view('jadwal-sempro', compact('user_id', 'pengajuan', 'seminarProposal', 'seminarJadwals'));
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$setting = SettingSempro::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 Seminar Proposal Belum Dibuka.');
} elseif ($currentDate->gt($tglSelesai)) {
return redirect()->back()->with('toast_error', 'Pendaftaran Seminar Proposal Sudah Ditutup.');
}
// Validasi data
$request->validate([
'id_mahasiswa' => 'required',
'id_pengajuan' => 'required',
'judul' => 'required',
'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
$existingSempro = SeminarProposal::where('id_pengajuan', $request->id_pengajuan)->exists();
if ($existingSempro) {
// Jika sudah ada, beri pesan error ke pengguna
Session::flash('toast_error', 'Sudah Mendaftar Seminar Proposal.');
// Redirect pengguna ke halaman sebelumnya
return redirect()->back();
}
// Coba untuk menyimpan berkas
try {
// Menyimpan berkas
$berkas = $request->file('berkas');
$nama_berkas = $berkas->getClientOriginalName();
$berkas->storeAs('public/berkas_sempro', $nama_berkas); // Menyimpan berkas di folder penyimpanan yang diinginkan
// Simpan data seminar proposal
SeminarProposal::create([
'id_mahasiswa' => $request->id_mahasiswa,
'id_pengajuan' => $request->id_pengajuan,
'berkas' => $nama_berkas,
]);
$mahasiswa = User::where('id', $request->id_mahasiswa);
$mahasiswa->update([
'judul' => $request->judul,
]);
$pengajuan = Pengajuan::where('id', $request->id_pengajuan)->first();
$pengajuan->update([
'judul' => $request->judul,
]);
// Set pesan toast sukses
Session::flash('toast_success', 'Pendaftaran Seminar Proposal 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-sempro');
}
/**
* 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)
{
//
}
}