MIF_E31222519/app/Http/Controllers/TugasController.php

127 lines
3.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Tugas;
use App\Models\Kelas;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class TugasController extends Controller
{
public function index()
{
// dd(auth()->user()->roleuser->nama_role ?? 'User' );
$user = Auth::user();
if (session('nama_role') === 'Admin' || optional($user)->roleuser->nama_role === 'Admin') {
$kelas = Kelas::all();
} else {
$idGuru = session('id_guru');
$kelas = DB::table('jadwal_pelajaran')
->join('kode_pembelajaran', 'jadwal_pelajaran.id_kodepembelajaran', '=', 'kode_pembelajaran.id_kodepembelajaran')
->join('kelas', 'jadwal_pelajaran.id_kelas', '=', 'kelas.id_kelas')
->where('kode_pembelajaran.id_guru', $idGuru)
->select('kelas.*')
->distinct()
->get();
}
$tugas = Tugas::with('kelas')->get();
return view('tugas', compact('kelas', 'tugas'));
}
public function create()
{
$user = session('id_guru');
if ($user->roleuser->nama_role === 'Admin') {
$kelas = Kelas::all();
} else {
$idGuru = $user->id_guru;
$kodePembelajaranIds = DB::table('kode_pembelajaran')
->where('id_guru', $idGuru)
->pluck('id_kodepembelajaran');
$kelasIds = DB::table('jadwal_pembelajaran')
->whereIn('id_kodepembelajaran', $kodePembelajaranIds)
->pluck('id_kelas');
$kelas = Kelas::whereIn('id_kelas', $kelasIds)->get();
}
return view('tugas.create', compact('kelas'));
}
public function store(Request $request)
{
$request->validate([
'id_kelas' => 'required',
'judul_tugas' => 'required',
'deadline' => 'required|date',
'file_tugas' => 'nullable|file|mimes:pdf,jpg,png,jpeg|max:2048',
'link_tugas' => 'nullable|url',
]);
// dd($request->all());
$filePath = null;
if ($request->hasFile('file_tugas')) {
$filePath = $request->file('file_tugas')->store('uploads/tugas', 'public');
}
Tugas::create([
'id_guru' => Auth::user()->id_guru,
'id_kelas' => $request->id_kelas,
'judul_tugas' => $request->judul_tugas,
'deskripsi' => $request->deskripsi,
'deadline' => $request->deadline,
'file_tugas' => $filePath,
'link_tugas' => $request->link_tugas,
]);
return redirect()->route('tugas')->with('success', 'Tugas berhasil ditambahkan');
}
public function update(Request $request, $id)
{
$tugas = Tugas::findOrFail($id);
$filePath = $tugas->file_tugas;
$request->validate([
'id_kelas' => 'required',
'judul_tugas' => 'required',
'deadline' => 'required|date',
'file_tugas' => 'nullable|file|mimes:pdf,jpg,png,jpeg|max:2048',
'link_tugas' => 'nullable|url',
]);
if ($request->hasFile('file_tugas')) {
$filePath = $request->file('file_tugas')->store('uploads/tugas', 'public');
}
$tugas->update([
'id_kelas' => $request->id_kelas,
'judul_tugas' => $request->judul_tugas,
'deskripsi' => $request->deskripsi,
'deadline' => $request->deadline,
'file_tugas' => $filePath,
'link_tugas' => $request->link_tugas,
]);
return redirect()->route('tugas')->with('success', 'Tugas berhasil diperbarui');
}
public function destroy($id)
{
$tugas = Tugas::findOrFail($id);
$tugas->delete();
return redirect()->back()->with('success', 'Tugas berhasil dihapus.');
}
}