Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/demo-profile.aplikasipos.info/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/www/demo-profile.aplikasipos.info/app/Http/Controllers/AtlitController.php

<?php

namespace App\Http\Controllers;

use App\Exports\atlitExport;
use App\Models\atlit;
use App\Models\cabor;
use App\Models\pelatih;
use App\Models\sertifikatAtlit;
use App\Models\users;
use Carbon\Carbon;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Facades\Excel;

class AtlitController extends Controller
{
    public function index()
    {
        $data['cabor'] = cabor::get();
        $data['pelatih'] = pelatih::get();
        $data['request'] = '';
        $data['atlit'] = atlit::with('sertifikatAtlit', 'user')->where('status_akademi', 0)->latest()->paginate('15');
        return view('admin.atlit.index')->with($data);
    }
    public function show(String $id)
    {
        $data['cabor'] = cabor::get();
        $decryptedId = Crypt::decryptString($id);
        $data['atlit'] = atlit::with('user')->where('user_id', $decryptedId)->first();
        $latihan = $data['atlit']->program_latihan;
        $data['program_latihan'] = explode(',', $latihan);


        $CaborPilihan = $data['atlit']->cabor;
        $data['pelatih'] = pelatih::where('cabor', $CaborPilihan)->get();
        if (Auth()->user()->role == 3) {


            return view('users.atlit.edit')->with($data);
        } else {


            return view('admin.atlit.edit')->with($data);
        }
    }
    public function create()
    {
        $data['cabor'] = cabor::get();
        $data['pelatih'] = pelatih::get();
        return view('admin.atlit.add')->with($data);
    }
    public function store(Request $request)
    {
        DB::beginTransaction();
        try {


            $request->validate([
                'username' => 'required',
                'email' => 'required|email|unique:users',
                'password' => 'required|min:6',
                'photo' => 'required|mimes:jpg,jpeg,png|max:2000',
            ], ['email.unique' => 'Email telah diGunakan', 'sertifikat.mimetypes' => 'Sertifikat haruslah berformat PDF.', 'sertifikat.max' =>  'File Sertifikat tidak boleh lebih dari 2mb!']);
            // tambahkan user
            $dataakun = [
                'username' => $request->username,
                'email' => $request->email,
                'password' => Hash::make($request->password),
                'role' => 3,
                'email_verified_at' => now(),



            ];

            if ($request->hasFile('photo')) {
                $foto_file = $request->file('photo');
                $foto_ekstensi = $foto_file->extension();
                $foto_baru = "Atlit-" . date('ymdhis') . ".$foto_ekstensi";
                $foto_file->move(public_path('images/atlit'), $foto_baru);
                $dataakun['photo'] = $foto_baru;
            }

            users::create($dataakun);
            // tambahkan table bantu
            $request->validate([
                // data pribadi
                'cabor' => 'required',
                'nama_lengkap' => 'required',
                'NIK' => 'required',
                'jenis_kelamin' => 'required',
                'tempat_lahir' => 'required',
                'tanggal_lahir' => 'required|date|date_format:Y-m-d',
                'golongan_darah' => 'required',
                'jenjang_pendidikan' => 'required',
                'nama_sekolah' => 'required',
                'alamat_sekolah' => 'required',
                'nama_ortu' => 'required',
                'tinggi_ayah' => 'required',
                'nama_ortu_ibu' => 'required',
                'tinggi_ibu' => 'required',
                'no_telp' => 'required',
                'no_paspor' => 'nullable',
                'masa_berlaku' => 'nullable|date|date_format:Y-m-d',
                'tempat_terbit' => 'nullable',
                'alamat_domisili' => 'nullable',
                'asal_kota' => 'required',
                // data pribadi
                // Data Cabang olahraga
                'status_atlet' => 'required',
                'asal_atlet' => 'required',
                'atlet_lapis' => 'required',
                'pelatih_id' => 'required',
                'nama_club' => 'required',
                'program_kegiatan' => 'required',
                'alamat_club' => 'required',

                // Data Cabang olahraga


                // data fisik
                'berat_badan' => 'required',
                'tinggi_badan' => 'required',
                'size_sepatu' => 'required',
                'size_baju' => 'required',
                'size_celana' => 'required',
                'size_topi' => 'required',
                'size_training' => 'required',
                'status_akademi' => 0,

                // data fisik
                'ppa' => 'nullable|file|mimes:pdf|max:2048'
            ], [
                'photo.max' => 'Foto yang tidak boleh diatas 2mb!.',
                'ppa.mimes' => 'file yang dimasukan harus memiliki format pdf.',
                'ppa.max' => 'Foto yang tidak boleh diatas 2mb!.'
            ]);
            //program latihan
            $user_id = users::latest()->first()->id;
            $program_latihan = $request->input('program_latihan', []);
            $program_all = implode(',', $program_latihan);
            //program latihan

            //Umur otomatis
            $tanggal_lahir = Carbon::parse($request->tanggal_lahir);
            $tanggal_sekarang = Carbon::now();
            $umur = $tanggal_lahir->diffInYears($tanggal_sekarang);
            //Umur otomatis
            $data = [
                'user_id' => $user_id,
                // data pribadi
                'cabor' => $request->cabor,
                'nama_lengkap' => $request->nama_lengkap,
                'NIK' => $request->NIK,
                'jenis_kelamin' => $request->jenis_kelamin,
                'umur' => $umur,
                'tempat_lahir' => $request->tempat_lahir,
                'tanggal_lahir' => $request->tanggal_lahir,
                'golongan_darah' => $request->golongan_darah,
                'jenjang_pendidikan' => $request->jenjang_pendidikan,
                'nama_sekolah' => $request->nama_sekolah,
                'alamat_sekolah' => $request->alamat_sekolah,
                'nama_ortu' => $request->nama_ortu,
                'tinggi_ayah' => $request->tinggi_ayah,
                'nama_ortu_ibu' => $request->nama_ortu_ibu,
                'tinggi_ibu' => $request->tinggi_ibu,
                'no_telp' => $request->no_telp,
                'no_paspor' => $request->no_paspor,
                'masa_berlaku' => $request->masa_berlaku,
                'tempat_terbit' => $request->tempat_terbit,
                'alamat_domisili' => $request->alamat_domisili,
                'asal_kota' => $request->asal_kota,
                // data pribadi
                // Data Cabang olahraga
                'status_atlet' => $request->status_atlet,
                'asal_atlet' => $request->asal_atlet,
                'atlet_lapis' => $request->atlet_lapis,
                'pelatih_id' => $request->pelatih_id,
                'nama_club' => $request->nama_club,
                'program_kegiatan' => $request->program_kegiatan,
                'program_latihan' => $program_all,
                'alamat_club' => $request->alamat_club,

                // Data Cabang olahraga


                // data fisik
                'berat_badan' => $request->berat_badan,
                'tinggi_badan' => $request->tinggi_badan,
                'size_sepatu' => $request->size_sepatu,
                'size_baju' => $request->size_baju,
                'size_celana' => $request->size_celana,
                'size_topi' => $request->size_topi,
                'size_training' => $request->size_training,
                // data fisik

            ];
            if ($request->hasFile('ppa')) {
                $file = $request->file('ppa');
                $file_ekstensi = $file->extension();
                $file_baru = "PPA-" . date('ymdhis') . ".$file_ekstensi";
                $file->move(public_path('documents/atlit'), $file_baru);
                $data['ppa'] = $file_baru;
            }



            $create = atlit::create($data);
            DB::commit();
            if ($create) {
                if (auth()->check()) {
                    if (auth()->user()->role == 0 || auth()->user()->role == 1) {

                        return redirect()->route('atlits.index')->with('success', 'Data baru telah ditambahkan');
                    } else {
                        return redirect()->route('login')->with('success', 'Akun Anda berhasil dibuat.');
                    }
                } else {
                    return redirect()->route('login')->with('success', 'Akun Anda berhasil dibuat.');
                }
            } else {
                return redirect()->route('atlits.index')->with('error', 'Data gagal ditambahkan');
            }
        } catch (DecryptException $e) {
            DB::rollback();
            return redirect()->back()->with('error', 'Akun Gagal dibuat!');
        }
    }
    public function update(Request $request, String $id)
    {
        $decryptedId = Crypt::decryptString($id);

        try {

            $request->validate([
                'username' => 'required',
                'email' => 'required',
                'password' => 'nullable',
                'password_confirm' => 'nullable|same:password',
                'photo' => 'nullable|mimes:jpg,jpeg,png|max:2000',
            ], ['email.unique' => 'Email telah diGunakan', 'sertifikat.mimetypes' => 'Sertifikat haruslah berformat PDF.', 'sertifikat.max' =>  'File Sertifikat tidak boleh lebih dari 2mb!']);
            $dataakun = [
                'username' => $request->username,
                'email' => $request->email,




            ];
            if ($request->password != '') {
                $dataakun['password'] = Hash::make($request->password);
            }
            if ($request->hasFile('photo')) {
                $foto_file = $request->file('photo');
                $foto_ekstensi = $foto_file->extension();
                $foto_baru = "Atlit-" . date('ymdhis') . ".$foto_ekstensi";
                $foto_file->move(public_path('images/atlit'), $foto_baru);
                $dataakun['photo'] = $foto_baru;
                $getfoto = atlit::where('user_id', $decryptedId)->first();
                $foto_lama = $getfoto->photo;
                File::delete(public_path('images/atlit') . "/" . $foto_lama);
            }


            users::where('id', $decryptedId)->update($dataakun);
            $request->validate([
                // data pribadi
                'nama_lengkap' => 'required',
                'cabor' => 'required',
                'NIK' => 'required',
                'jenis_kelamin' => 'required',
                'tempat_lahir' => 'required',
                'tanggal_lahir' => 'required|date|date_format:Y-m-d',
                'golongan_darah' => 'required',
                'nama_sekolah' => 'required',
                'jenjang_pendidikan' => 'required',
                'alamat_sekolah' => 'required',
                'nama_ortu' => 'required',
                'tinggi_ayah' => 'required',
                'nama_ortu_ibu' => 'required',
                'tinggi_ibu' => 'required',
                'no_telp' => 'required',
                'no_paspor' => 'nullable',
                'masa_berlaku' => 'nullable|date|date_format:Y-m-d',
                'tempat_terbit' => 'nullable',
                'alamat_domisili' => 'required',
                'asal_kota' => 'required',
                // data pribadi
                // Data Cabang olahraga
                'status_atlet' => 'required',
                'asal_atlet' => 'required',
                'atlet_lapis' => 'required',
                'pelatih_id' => 'required',
                'nama_club' => 'required',
                'program_kegiatan' => 'required',
                'alamat_club' => 'required',

                // Data Cabang olahraga


                // data fisik
                'berat_badan' => 'required',
                'tinggi_badan' => 'required',
                'size_sepatu' => 'required',
                'size_baju' => 'required',
                'size_celana' => 'required',
                'size_topi' => 'required',
                'size_training' => 'required',
                'ppa' => 'nullable|file|mimes:pdf|max:2048'
                // data fisik
            ], [
                'photo.max' => 'Foto yang tidak boleh diatas 2mb!.',
                'ppa.mimes' => 'file yang dimasukan harus memiliki format pdf.',
                'ppa.max' => 'Foto yang tidak boleh diatas 2mb!.',

            ]);

            //Umur otomatis
            $tanggal_lahir = Carbon::parse($request->tanggal_lahir);
            $tanggal_sekarang = Carbon::now();
            $umur = $tanggal_lahir->diffInYears($tanggal_sekarang);
            //Umur otomatis



            $data = [

                // data pribadi
                'cabor' => $request->cabor,
                'nama_lengkap' => $request->nama_lengkap,
                'NIK' => $request->NIK,
                'jenis_kelamin' => $request->jenis_kelamin,
                'umur' => $umur,
                'tempat_lahir' => $request->tempat_lahir,
                'tanggal_lahir' => $request->tanggal_lahir,
                'golongan_darah' => $request->golongan_darah,
                'jenjang_pendidikan' => $request->jenjang_pendidikan,
                'nama_sekolah' => $request->nama_sekolah,
                'alamat_sekolah' => $request->alamat_sekolah,
                'nama_ortu' => $request->nama_ortu,
                'tinggi_ayah' => $request->tinggi_ayah,
                'nama_ortu_ibu' => $request->nama_ortu_ibu,
                'tinggi_ibu' => $request->tinggi_ibu,
                'no_telp' => $request->no_telp,
                'no_paspor' => $request->no_paspor,
                'masa_berlaku' => $request->masa_berlaku,
                'tempat_terbit' => $request->tempat_terbit,
                'alamat_domisili' => $request->alamat_domisili,
                'asal_kota' => $request->asal_kota,
                // data pribadi
                // Data Cabang olahraga
                'status_atlet' => $request->status_atlet,
                'asal_atlet' => $request->asal_atlet,
                'atlet_lapis' => $request->atlet_lapis,
                'pelatih_id' => $request->pelatih_id,
                'nama_club' => $request->nama_club,
                'program_kegiatan' => $request->program_kegiatan,
                'alamat_club' => $request->alamat_club,

                // Data Cabang olahraga


                // data fisik
                'berat_badan' => $request->berat_badan,
                'tinggi_badan' => $request->tinggi_badan,
                'size_sepatu' => $request->size_sepatu,
                'size_baju' => $request->size_baju,
                'size_celana' => $request->size_celana,
                'size_topi' => $request->size_topi,
                'size_training' => $request->size_training,
                // data fisik

            ];
            if ($request->input('program_latihan', [])) {
                $program_latihan = $request->input('program_latihan', []);
                $program_all = implode(',', $program_latihan);
                $data['program_latihan'] = $program_all;
            }
            if ($request->hasFile('ppa')) {
                $file = $request->file('ppa');
                $file_ekstensi = $file->extension();
                $file_baru = "PPA-" . date('ymdhis') . ".$file_ekstensi";
                $file->move(public_path('documents/atlit'), $file_baru);
                $data['ppa'] = $file_baru;
                $getfile = atlit::where('user_id', $decryptedId)->first();
                $file_lama = $getfile->ppa;
                File::delete(public_path('documents/atlit') . "/" . $file_lama);
            }


            $update = atlit::where('user_id', $decryptedId)->update($data);
            if ($update) {
                if (Auth()->user()->role == 0 || Auth()->user()->role == 1) {


                    return redirect()->back()->with('success', 'Data baru telah ditambahkan');
                } else {

                    return redirect()->back()->with('success', 'Data baru telah ditambahkan');
                }
            } else {
                return redirect()->route('atlits.index')->with('error', 'Data gagal diedit');
            }
        } catch (DecryptException $e) {
            return redirect()->route('atlits.index')->with('error', 'Data gagal diedit');
        }
    }
    public function destroy(String $id)
    {
        try {

            $decryptedId = Crypt::decryptString($id);
            $user = users::with('atlit')->where('id', $decryptedId);
            $atlit = $user->first();

            File::delete(public_path('images/atlit') . "/" . $atlit->photo);
            $sertifikatAtlit = sertifikatAtlit::where('atlit_id', $atlit->atlit->id)->get();

            // File::delete(public_path('documents/pelatih') . "/" . $foto->sertifikat);
            foreach ($sertifikatAtlit as $item) {
                $sertifikatPath = public_path('documents/atlit') . "/" . $item->sertifikat;

                if (file_exists($sertifikatPath)) {
                    File::delete($sertifikatPath);
                }
            }
            $user->delete();
            return redirect()->route('atlits.index')->with('delete', 'Data berhasil dihapus!');
        } catch (DecryptException $e) {
            return redirect()->back()->with('error', 'Invalid ID');
        }
    }
    public function export(Request $request)
    {

        $status_akademi = '';
        if ($request->status == 'umum') {
            $status_akademi = 0;
        }
        if ($request->status == 'akademi') {
            $status_akademi = 1;
        }



        $data = atlit::where('atlits.status_akademi', $status_akademi)->select(
            'atlits.nama_lengkap',
            'atlits.cabor',
            'users.email',
            DB::raw('CONCAT(";", atlits.NIK) as NIK'),
            'atlits.jenis_kelamin',
            'atlits.umur',
            'atlits.tempat_lahir',
            'atlits.tanggal_lahir',
            'atlits.golongan_darah',
            'atlits.jenjang_pendidikan',
            'atlits.nama_sekolah',
            'atlits.alamat_sekolah',
            'atlits.nama_ortu',
            'atlits.tinggi_ayah',
            'atlits.nama_ortu_ibu',
            'atlits.tinggi_ibu',
            'atlits.no_paspor',
            'atlits.masa_berlaku',
            'atlits.tempat_terbit',
            'atlits.alamat_domisili',
            'atlits.asal_kota',
            'atlits.no_telp',
            'atlits.status_atlet',
            'atlits.asal_atlet',
            'atlits.atlet_lapis',
            'pelatihs.nama_lengkap as pelatih_nama_lengkap',
            'atlits.nama_club',
            'atlits.program_kegiatan',
            'atlits.program_latihan',
            'atlits.alamat_club',
            'atlits.berat_badan',
            'atlits.size_sepatu',
            'atlits.size_baju',
            'atlits.size_celana',
            'atlits.size_topi',
            'atlits.size_training',


        )->leftJoin('users', 'user_id', '=', 'users.id')
            ->leftJoin('pelatihs', 'pelatih_id', '=', 'pelatihs.id')
            ->get();
        // Proses data, ubah "jenis_kelamin" menjadi "laki-laki" jika kondisi terpenuhi.

        $data->each(function ($item) {
            if ($item->jenis_kelamin == 0) {
                $item->jenis_kelamin = 'laki-laki';
            } else {
                $item->jenis_kelamin = 'perempuan';
            }
        });


        // Export data ke file Excel
        return Excel::download(new atlitExport($data), 'DataAtlit.xlsx');
    }

    public function hasilTes(String $id)
    {
        $decryptedId = Crypt::decryptString($id);
        $data['atlit'] = atlit::where('pelatih_id', $decryptedId)->get();
        return view('users.pelatih.hasilTes')->with($data);
    }
    public function hasilTesAtlit(String $id)
    {
        $decryptedId = Crypt::decryptString($id);
        $data['atlit'] = atlit::where('id', $decryptedId)->first();
        return view('users.atlit.hasilTes')->with($data);
    }

    public function hasilTesAction(Request $request, String $id)
    {

        try {
            $decryptedId = Crypt::decryptString($id);
            $request->validate([
                'hasiltes' => 'file|mimetypes:application/pdf|max:2000',

            ], ['hasiltes.mimetypes' => 'Hasil tes haruslah berformat PDF.', 'hasiltes.max' =>  'File Hasil tes tidak boleh lebih dari 2mb!']);

            if ($request->hasFile('hasiltes')) {
                $hasiltes_file = $request->file('hasiltes');
                $hasiltes_ekstensi = $hasiltes_file->extension();
                $hasiltes_baru = "hasiltes-" . date('ymdhis') . ".$hasiltes_ekstensi";
                $hasiltes_file->move(public_path('documents/atlit'), $hasiltes_baru);

                $get_serti = atlit::where('id', $decryptedId)->first();
                $hasiltes_lama = $get_serti->hasiltes;
                File::delete(public_path('documents/hasiltes') . "/" . $hasiltes_lama);
            }
            atlit::where('id', $decryptedId)->update(['hasil_tes' => $hasiltes_baru]);
            return redirect()->back()->with('success', 'Hasil Tes Berhasil DiPerbaharui!');
        } catch (DecryptException $e) {
            return redirect()->back()->with('error', 'Data gagal diubah!');
        }
    }
    public function filterAtlit(Request $request)
    {
        $cabor = $request->cabor;
        $pelatih_id = $request->pelatih_id;
        $nama =  $request->nama;

        $data['pelatih_id'] = $pelatih_id;
        $data['request'] = $request;
        $data['cabor2'] = $cabor;
        $data['cabor'] = cabor::get();
        $data['pelatih'] = pelatih::get();
        if ($pelatih_id == '' || $cabor == '') {
            $data['atlit'] = Atlit::where('status_akademi', 0)->where(function ($query) use ($cabor, $pelatih_id, $nama) {
                if ($pelatih_id != '') {

                    $query->orWhere('pelatih_id', $pelatih_id);
                }
                if ($cabor != '') {

                    $query->where('cabor', 'like', "%" . $cabor . "%");
                }
                if ($nama != '') {
                    $query->where('nama_lengkap', 'like', "%" . $nama . "%");
                }
            })->paginate(15);
        } else {
            $data['atlit'] = atlit::where('cabor', 'like', "%" . $cabor . "%")->where('pelatih_id', $pelatih_id)->paginate(15);
        }
        return view('admin.atlit.filter')->with($data);
    }
    public function exportAtlit(Request $request)
    {
        $cabor = $request->cabor;
        $pelatih_id = $request->pelatih_id;
        $nama = $request->nama;
        $atlit = atlit::where('atlits.status_akademi', 0);
        if (isset($cabor)) {
            $atlit = $atlit->where('atlits.cabor', 'like', "%" . $cabor . "%");
        }
        if (isset($pelatih_id)) {
            $atlit = $atlit->where('atlits.pelatih_id', $pelatih_id);
        }
        if (isset($nama)) {
            $atlit = $atlit->where('atlits.nama_lengkap', 'like', "%" . $nama . "%");
        }

        $data = $atlit->select(
            'atlits.nama_lengkap',
            'atlits.cabor',
            'users.email',
            DB::raw('CONCAT(";", atlits.NIK) as NIK'),
            'atlits.jenis_kelamin',
            'atlits.umur',
            'atlits.tempat_lahir',
            'atlits.tanggal_lahir',
            'atlits.golongan_darah',
            'atlits.jenjang_pendidikan',
            'atlits.nama_sekolah',
            'atlits.alamat_sekolah',
            'atlits.nama_ortu',
            'atlits.tinggi_ayah',
            'atlits.nama_ortu_ibu',
            'atlits.tinggi_ibu',
            'atlits.no_paspor',
            'atlits.masa_berlaku',
            'atlits.tempat_terbit',
            'atlits.alamat_domisili',
            'atlits.asal_kota',
            'atlits.no_telp',
            'atlits.status_atlet',
            'atlits.asal_atlet',
            'atlits.atlet_lapis',
            'pelatihs.nama_lengkap as pelatih_nama_lengkap',
            'atlits.nama_club',
            'atlits.program_kegiatan',
            'atlits.program_latihan',
            'atlits.alamat_club',
            'atlits.berat_badan',
            'atlits.size_sepatu',
            'atlits.size_baju',
            'atlits.size_celana',
            'atlits.size_topi',
            'atlits.size_training',


        )->leftJoin('users', 'user_id', '=', 'users.id')
            ->leftJoin('pelatihs', 'pelatih_id', '=', 'pelatihs.id')
            ->get();
        // Proses data, ubah "jenis_kelamin" menjadi "laki-laki" jika kondisi terpenuhi.

        $data->each(function ($item) {
            if ($item->jenis_kelamin == 0) {
                $item->jenis_kelamin = 'laki-laki';
            } else {
                $item->jenis_kelamin = 'perempuan';
            }
        });



        // Export data ke file Excel
        return Excel::download(new atlitExport($data), 'DataAtlit.xlsx');
    }

    public function akademi(String $id)
    {
        try {
            $decryptedId = Crypt::decryptString($id);
            $atlit = atlit::find($decryptedId);
            $update['status_akademi'] = '';
            if ($atlit->status_akademi == 1) {
                $update['status_akademi'] = 0;
                $atlit->update($update);
                return redirect()->back()->with('success', 'Status atlet diubah Umum!');
            } else {
                $update['status_akademi'] = 1;
                $atlit->update($update);
                return redirect()->back()->with('success', 'Status atlet diubah Akademi!');
            }
        } catch (DecryptException $e) {
            return redirect()->back()->with('error', 'Data gagal diubah!');
        }
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]