130 lines
4.2 KiB
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)
|
|
{
|
|
//
|
|
}
|
|
}
|