Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/talent.gosepakat.id/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/public_html/talent.gosepakat.id/app/Http/Controllers/DashboardCotroller.php

<?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]