<?php
namespace App\Http\Controllers;
use App\Models\Course;
use App\Models\Classes;
use App\Models\Trainer;
use Laracasts\Flash\Flash;
use App\Models\ClassTrainer;
use Illuminate\Http\Request;
use App\Models\CourseTrainer;
use Illuminate\Support\Facades\DB;
use App\Repositories\ClassRepository;
use RealRashid\SweetAlert\Facades\Alert;
use App\Http\Requests\CreateClassRequest;
use App\Http\Requests\UpdateClassRequest;
use App\Http\Controllers\AppBaseController;
class TrainerClassController extends AppBaseController
{
/** @var ClassRepository $classRepository*/
private $classRepository;
public function __construct(ClassRepository $classRepo)
{
$this->middleware('permission:trainerClass.index', ['only' => ['index','show']]);
$this->middleware('permission:trainerClass.create', ['only' => ['create','store']]);
$this->middleware('permission:trainerClass.edit', ['only' => ['edit','update']]);
$this->middleware('permission:trainerClass.destroy', ['only' => ['destroy']]);
$this->classRepository = $classRepo;
}
// public function index(Request $request)
// {
// // Mengambil ID trainer yang sedang login
// $trainerId = auth()->user()->trainer->id;
// // Mengambil courseId dari CourseTrainer berdasarkan trainerId
// $courseId = CourseTrainer::where('trainer_id', $trainerId)->first()->course_id;
// // Mengambil daftar kelas yang dimiliki oleh trainer berdasarkan courseId
// $classes = Classes::where('course_id', $courseId)->get();
// $title = 'Delete Data!';
// $text = "Are you sure you want to delete?";
// confirmDelete($title, $text);
// return view('web.dashboard_trainer.class.index', compact('classes'));
// }
public function index(Request $request)
{
// Mengambil ID trainer yang sedang login
$trainerId = auth()->user()->trainer->id;
// Mengambil courseId dari CourseTrainer berdasarkan trainerId
$courseId = CourseTrainer::where('trainer_id', $trainerId)->first()->course_id;
// Mengambil daftar kelas yang dimiliki oleh trainer berdasarkan courseId dan trainerId
$classes = Classes::where('course_id', $courseId)
->whereHas('classTrainers', function ($query) use ($trainerId) {
$query->where('trainer_id', $trainerId);
})
->get();
$title = 'Delete Data!';
$text = "Are you sure you want to delete?";
confirmDelete($title, $text);
return view('web.dashboard_trainer.class.index', compact('classes'));
}
public function create()
{
// Mengambil ID trainer yang sedang login
$trainerId = auth()->user()->id;
$trainer = Trainer::where('users_id', $trainerId)->first();
// Mengambil daftar kursus yang dimiliki oleh trainer_id tersebut
$courses = CourseTrainer::where('trainer_id', $trainer->id)->pluck('course_id');
// Mengambil daftar kursus berdasarkan id yang dimiliki oleh trainer
$Course = Course::whereIn('id', $courses)->pluck('name', 'id');
return view('web.dashboard_trainer.class.create', compact('Course'));
}
public function store(CreateClassRequest $request)
{
$input = $request->all();
$class = $this->classRepository->create($input);
Alert::success('Yipee!', 'Class Created Successfully');
// Flash::success('Class saved successfully.');
$trainerId = auth()->user()->trainer->id;
// dd($trainerId);
// Simpan relasi antara kelas yang baru dibuat dengan ID trainer yang sedang login
$classTrainer = new ClassTrainer();
$classTrainer->class_id = $class->id;
$classTrainer->trainer_id = $trainerId;
$classTrainer->save();
return redirect(route('trainerClass.index'));
}
public function show($id)
{
$class = $this->classRepository->find($id);
$Course=Course::find($id);
if (empty($class)) {
Flash::error('Class not found');
return redirect(route('trainerClass.index'));
}
return view('web.dashboard_trainer.class.show', compact('Course'))->with('class', $class);
}
public function edit($id)
{
$class = $this->classRepository->find($id);
$trainerId = auth()->user()->id;
$trainer = Trainer::where('users_id', $trainerId)->first();
// Mengambil daftar kursus yang dimiliki oleh trainer_id tersebut
$courses = CourseTrainer::where('trainer_id', $trainer->id)->pluck('course_id');
// Mengambil daftar kursus berdasarkan id yang dimiliki oleh trainer
$Course = Course::whereIn('id', $courses)->pluck('name', 'id');
if (empty($class)) {
Flash::error('Class not found');
return redirect(route('trainerClass.index'));
}
return view('web.dashboard_trainer.class.edit', compact('Course'))->with('class', $class);
}
/**
* Update the specified Class in storage.
*/
public function update($id, UpdateClassRequest $request)
{
$class = $this->classRepository->find($id);
if (empty($class)) {
Flash::error('Class not found');
return redirect(route('trainerClass.index'));
}
$class = $this->classRepository->update($request->all(), $id);
Flash::success('Class updated successfully.');
return redirect(route('trainerClass.index'));
}
/**
* Remove the specified Class from storage.
*
* @throws \Exception
*/
public function destroy($id)
{
$class = $this->classRepository->find($id);
if (empty($class)) {
Flash::error('Class not found');
return redirect(route('trainerClass.index'));
}
// Menghapus relasi ClassTrainer terlebih dahulu
DB::table('class_trainer')->where('class_id', $id)->delete();
// Menghapus data kelas
$this->classRepository->delete($id);
alert()->success('Hore!','Class Deleted Successfully');
return redirect(route('trainerClass.index'));
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]