<?php
namespace App\Http\Controllers;
use App\Facades\DataTable;
use App\Helpers\NotifWa;
use App\Models\MateriTugas;
use App\Models\Pelatihan;
use App\Models\PelatihanPeserta;
use App\Models\Peserta;
use App\Models\TugasPeserta;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Inertia\Inertia;
class DashboardCotroller extends Controller
{
public function index()
{
$user = Auth::user()->load(['user_statuses']);
if ($user->role == "admin") {
$jumlahUser = User::where('role', 'peserta')->count();
$jumlahPeserta = Peserta::where('tahun', date("Y"))->count();
$jumlahPelatihan = Pelatihan::where('tahun', date("Y"))->count();
$sort = str_replace(
['created_at'],
['created_at'],
request()->query('col')
);
$result = DataTable::query(PelatihanPeserta::has('user')->where('status', 'pending'))
->with(['user.peserta', 'pelatihan'])
->searchable(['user.nama', 'user.email', 'user.peserta.nik'])
->applySort($sort)
->allowedSorts(['created_at'])
->make()->toArray();
return Inertia::render('AdminDashboard', [
'datatable' => $result,
'stats' => [
'jumlah_user' => $jumlahUser,
'jumlah_peserta' => $jumlahPeserta,
'jumlah_pelatihan' => $jumlahPelatihan,
]
]);
}
if ($user->role == "instruktur") {
return Inertia::render('InstrukturDashboard');
}
$pelatihan_id = @$user->pelatihan_pesertas()->orderBy('id', 'DESC')->first()->pelatihan_id;
$pelatihan = $pelatihan_id != null ? $user->pelatihans()->where('pelatihans.id', $pelatihan_id)->with('pelatihan_jadwals.instructor', 'pelatihan_materis.materi_tugas')->orderBy('id', 'DESC')->first() : null;
$aku = $pelatihan != null ? $user->pelatihan_pesertas()->where('pelatihan_id', $pelatihan->id)->orderBy('id', 'DESC')->first() : null;
if ($aku != null && ($aku->status == "reject" || $aku->status == "finish")) {
$pelatihan = null;
$aku = null;
}
if ($pelatihan) {
$tugas = MateriTugas::with('pelatihan_materi')->with([
'tugas_pesertas' => function ($w) use ($user) {
$w->where('user_id', $user->id)->orderBy('id', 'desc');
}
])->whereHas('pelatihan_materi', function ($w) use ($pelatihan) {
$w->where('pelatihan_id', $pelatihan->id);
})->get();
} else {
$tugas = [];
}
return Inertia::render('Dashboard', [
'pelatihan' => $pelatihan,
'tugas' => $tugas,
'aku' => $aku
]);
}
public function reject($id)
{
$pelatihan_peserta = PelatihanPeserta::with('user.peserta', 'pelatihan')->findOrFail($id);
$pelatihan_peserta->status = 'reject';
$pelatihan_peserta->save();
if ($pelatihan_peserta->user->peserta->no_hp) {
NotifWa::send($pelatihan_peserta->user->peserta->no_hp, 'Pendaftaran untuk pelatihan : *' . $pelatihan_peserta->pelatihan->title . "* DITOLAK");
}
return redirect(route('dashboard'))->with('success', 'Berhasil menolak peserta ' . $pelatihan_peserta->user->nama);
}
public function approve($id)
{
$pelatihan_peserta = PelatihanPeserta::with('user.peserta', 'pelatihan')->findOrFail($id);
$pelatihan_peserta->status = 'approve';
$pelatihan_peserta->save();
if ($pelatihan_peserta->user->peserta->no_hp) {
NotifWa::send($pelatihan_peserta->user->peserta->no_hp, 'Pendaftaran untuk pelatihan : *' . $pelatihan_peserta->pelatihan->title . "* DITERIMA");
}
return redirect(route('dashboard'))->with('success', 'Berhasil menyetujui peserta ' . $pelatihan_peserta->user->nama);
}
public function kirimTugas(Request $request)
{
$materi_tugas = MateriTugas::findOrFail($request->materi_tugas_id);
if ($request->hasFile('file')) {
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp', 'zip','rar','7z', 'pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'];
$request->validate( [
'file' => 'file|mimes:' . implode(",", $allowedExtensions) . '|required|max:10000',
]);
$extension = $request->file->getClientOriginalExtension();
if (strpos(strtolower($extension), 'php') !== false || strpos(strtolower($extension), 'py') !== false) {
return redirect(route('dashboard'))->with(['error' => 'File tugas tidak valid'])->withInput($request->all());
}
$content = file_get_contents($request->file('file')->getRealPath());
if (preg_match('/<\?php/i', $content)) {
return redirect(route('dashboard'))->with(['error' => 'File tugas tidak valid'])->withInput($request->all());
}
}
try {
$tugas = TugasPeserta::create([
'file' => $request->hasFile('file') ? $request->file->store('private/tugas-peserta') : null,
'link' => $request->link,
'materi_tugas_id' => $request->materi_tugas_id,
'user_id' => auth()->user()->id
]);
return redirect(route('dashboard'))->with('success', 'Berhasil mengirim tugas ' . $materi_tugas->name);
} catch (\Throwable $th) {
//throw $th;
Log::error($th);
return redirect(route('dashboard'))->with('error', 'Gagal mengirim tugas ' . $materi_tugas->name . ' silahkan coba lagi');
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]