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/PelatihController.php

<?php

namespace App\Http\Controllers;

use App\Exports\pelatihExport;
use App\Exports\wasitExport;
use App\Models\cabor;
use App\Models\pelatih;
use App\Models\sertifikatPelatih;
use App\Models\users;
use App\Providers\PdfToImageProvider;
use Carbon\Carbon;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Http\Request;
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 PelatihController extends Controller
{
    public function index()
    {
        $data['cabor'] = cabor::get();
        $data['pelatih'] = pelatih::with('sertifikatPelatih', 'user')->where('status_akademi', 0)->latest()->paginate('15');
        return view('admin.pelatih.index')->with($data);
    }
    public function create()
    {
        $data['cabor'] = cabor::get();

        return view('admin.pelatih.add')->with($data);
    }
    public function show(String $id)
    {
        $decryptedId = Crypt::decryptString($id);
        $data['cabor'] = cabor::get();
        $data['pelatih'] = pelatih::with('user')->where('user_id', $decryptedId)->first();
        if (Auth()->user()->role == 2) {


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


            return view('admin.pelatih.edit')->with($data);
        }
    }


    // Store 
    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',
                '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',
                'pendidikan_terakhir' => 'required',
                'pekerjaan' => 'required',
                'no_telp' => 'required',
                'status_kawin' => 'required',
                'no_paspor' => 'nullable',
                'masa_berlaku' => 'nullable|date|date_format:Y-m-d',
                'tempat_terbit' => 'nullable',
                'alamat_domisili' => 'required',
                'asal_kota' => 'required',
                // data diri
                // data fisik
                'berat_badan' => 'required',
                'tinggi_badan' => 'required',
                'size_sepatu' => 'required',
                'size_baju' => 'required',
                'size_celana' => 'required',
                'size_topi' => 'required',
                'size_training' => 'required',
                // data fisik
                // data kualifikasi

                'level' => 'required',
                'no_sertifikat' => 'required',
                'jenis_sertifikat' => 'required',
                'keterangan' => 'required',
                'lembaga' => 'required',
                'nama_club' => 'required',
                'alamat_club' => 'required',
                'sertifikat' => 'required|file|mimetypes:application/pdf|max:2000'
            ], ['email.unique' => 'Email telah diGunakan', 'sertifikat.mimetypes' => 'Sertifikat haruslah berformat PDF.', 'sertifikat.max' =>  'File Sertifikat tidak boleh lebih dari 2mb!', 'photo.max' => 'Foto yang tidak boleh diatas 2mb!']);
            // tambahkan user
            $dataakun = [
                'username' => $request->username,
                'email' => $request->email,
                'password' => Hash::make($request->password),
                'role' => 2,
                'email_verified_at' => now(),



            ];

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

            $user_id = users::latest()->first()->id;


            //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 diri

                'cabor' => $request->cabor,
                'status_pelatih' => $request->status_pelatih,
                '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,
                'pendidikan_terakhir' => $request->pendidikan_terakhir,
                'pekerjaan' => $request->pekerjaan,
                'pekerjaan_lainnya' => $request->pekerjaan_lainnya,
                'no_telp' => $request->no_telp,
                'status_kawin' => $request->status_kawin,
                '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 diri
                // 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
                // data kualifikasi
                'disiplin_cabor' => $request->cabor,
                'level' => $request->level,
                'no_sertifikat' => $request->no_sertifikat,
                'jenis_sertifikat' => $request->jenis_sertifikat,
                'keterangan' => $request->keterangan,
                'lembaga' => $request->lembaga,
                'nama_club' => $request->nama_club,
                'alamat_club' => $request->alamat_club,
                // data kualifikasi

            ];

            if ($request->hasFile('sertifikat')) {
                $sertifikat_file = $request->file('sertifikat');
                $sertifikat_baru = "Sertifikat-" .  $sertifikat_file->getClientOriginalName();
                $sertifikat_file->move(public_path('documents/pelatih'), $sertifikat_baru);
                $data['sertifikat'] = $sertifikat_baru;
            }

            $create = pelatih::create($data);
            DB::commit();
            if ($create) {
                if (auth()->check()) {
                    if (auth()->user()->role == 0 || auth()->user()->role == 1) {
                        return redirect()->route('pelatihs.index')->with('success', 'Data baru telah ditambahkan');
                    } else {
                        return redirect()->route('login')->with('success', 'Akun Anda Berhasil ditambahkan.');
                    }
                } else {
                    return redirect()->route('login')->with('success', 'Akun Anda Berhasil ditambahkan.');
                }
            } else {
                return redirect()->back('pelatihs.index')->with('error', 'Data gagal ditambahkan');
            }
        } catch (DecryptException $e) {
            DB::rollback();
            return redirect()->back()->with('error', 'Akun Gagal dibuat!');
        }
    }
    // Store 


    // Update

    public function update(Request $request, String $id)
    {
        $decryptedId = Crypt::decryptString($id);

        $request->validate([
            'username' => 'required',
            'email' => 'email',
            'password' => 'nullable',
            'password_confirm' => 'nullable|same:password',
            'photo' => 'nullable|mimes:jpg,jpeg,png|max:2000',
            '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',
            'pendidikan_terakhir' => 'required',
            'pekerjaan' => 'required',
            'no_telp' => 'required',
            'status_kawin' => 'required',
            'no_paspor' => 'nullable',
            'masa_berlaku' => 'nullable|date|date_format:Y-m-d',
            'tempat_terbit' => 'nullable',
            'alamat_domisili' => 'required',
            'asal_kota' => 'required',
            // data diri
            // data fisik
            'berat_badan' => 'required',
            'tinggi_badan' => 'required',
            'size_sepatu' => 'required',
            'size_baju' => 'required',
            'size_celana' => 'required',
            'size_topi' => 'required',
            'size_training' => 'required',
            // data fisik
            // data kualifikasi

            'level' => 'required',
            'no_sertifikat' => 'required',
            'jenis_sertifikat' => 'required',
            'keterangan' => 'required',
            'lembaga' => 'required',
            'nama_club' => 'required',
            'alamat_club' => 'required',
            'sertifikat' => 'nullable|file|mimetypes:application/pdf|max:2000'
        ], ['sertifikat.mimetypes' => 'Sertifikat haruslah berformat PDF.', 'sertifikat.max' =>  'File Sertifikat tidak boleh lebih dari 2mb!', 'photo.max' => 'Foto yang tidak boleh diatas 2mb!']);

        try {
            $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 = "pelatih-" . date('ymdhis') . ".$foto_ekstensi";
                $foto_file->move(public_path('images/pelatih'), $foto_baru);
                $dataakun['photo'] = $foto_baru;
                $getfoto = pelatih::where('user_id', $decryptedId)->first();
                $foto_lama = $getfoto->photo;
                File::delete(public_path('images/pelatih') . "/" . $foto_lama);
            }

            users::where('id', $decryptedId)->update($dataakun);

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

            $data = [
                // data diri
                'nama_lengkap' => $request->nama_lengkap,
                'NIK' => $request->NIK,
                'cabor' => $request->cabor,
                'status_pelatih' => $request->status_pelatih,
                'jenis_kelamin' => $request->jenis_kelamin,
                'umur' => $umur,
                'tempat_lahir' => $request->tempat_lahir,
                'tanggal_lahir' => $request->tanggal_lahir,
                'golongan_darah' => $request->golongan_darah,
                'pendidikan_terakhir' => $request->pendidikan_terakhir,
                'pekerjaan_lainnya' => $request->pekerjaan_lainnya,
                'pekerjaan' => $request->pekerjaan,
                'no_telp' => $request->no_telp,
                'status_kawin' => $request->status_kawin,
                '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,
                '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 diri
                // data kualifikasi
                'disiplin_cabor' => $request->cabor,
                'level' => $request->level,
                'no_sertifikat' => $request->no_sertifikat,
                'jenis_sertifikat' => $request->jenis_sertifikat,
                'keterangan' => $request->keterangan,
                'lembaga' => $request->lembaga,
                'nama_club' => $request->nama_club,
                'alamat_club' => $request->alamat_club,
                // data kualifikasi
            ];
            if ($request->hasFile('sertifikat')) {
                $sertifikat_file = $request->file('sertifikat');
                $sertifikat_baru = "Sertifikat-" .  $sertifikat_file->getClientOriginalName();
                $sertifikat_file->move(public_path('documents/pelatih'), $sertifikat_baru);
                $data['sertifikat'] = $sertifikat_baru;
                $get_serti = pelatih::where('user_id', $decryptedId)->first();
                $sertifikat_lama = $get_serti->sertifikat;
                File::delete(public_path('documents/pelatih') . "/" . $sertifikat_lama);
            }

            $update = pelatih::where('user_id', $decryptedId)->update($data);
            if ($update) {
                return redirect()->back()->with('success', 'Data dari telah diedit');
            } else {
                return redirect()->back()->with('error', 'Data gagal diedit');
            }
        } catch (DecryptException $e) {
            return redirect()->route('pelatihs.index')->with('error', 'Data gagal diedit');
        }
    }
    // Update


    // Delete
    public function destroy(String $id)
    {
        try {

            $decryptedId = Crypt::decryptString($id);
            $user = users::with('pelatih')->where('id', $decryptedId);
            $pelatih = $user->first();
            File::delete(public_path('images/pelatih') . "/" . $pelatih->photo);
            File::delete(public_path('documents/pelatih') . "/" . $pelatih->pelatih->sertifikat);
            $sertifikatPelatih = sertifikatPelatih::where('pelatih_id', $pelatih->pelatih->id)->get();

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

                if (file_exists($sertifikatPath)) {
                    File::delete($sertifikatPath);
                }
            }
            $user->delete();
            return redirect()->route('pelatihs.index')->with('delete', 'Data berhasil dihapus!');
        } catch (DecryptException $e) {
            return redirect()->back()->with('error', 'Invalid ID');
        }
    }
    // Delete

    public function export(Request $request)
    {
        $status_akademi = '';

        if ($request->status == 'umum') {
            $status_akademi = 0;
        }
        if ($request->status == 'akademi') {
            $status_akademi = 1;
        }
        $data = Pelatih::where('status_akademi', $status_akademi)->select(
            'nama_lengkap',
            'cabor',
            'users.email',
            DB::raw('CONCAT(";", NIK) as NIK'),
            'jenis_kelamin',
            'umur',
            'tempat_lahir',
            'tanggal_lahir',
            'golongan_darah',
            'pendidikan_terakhir',
            'pekerjaan',
            'pekerjaan_lainnya',
            'no_telp',
            'status_kawin',
            'no_paspor',
            'masa_berlaku',
            'tempat_terbit',
            'alamat_domisili',
            'asal_kota',
            'berat_badan',
            'size_sepatu',
            'size_baju',
            'size_celana',
            'size_topi',
            'size_training',
            'disiplin_cabor',
            'level',
            'no_sertifikat',
            'keterangan',
            'lembaga',
            'nama_club',
            'alamat_club',
            'status_pelatih',



        )->leftJoin('users', 'user_id', '=', 'users.id') // Menggabungkan dengan tabel 'users'
            ->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';
            }
            if ($item->status_kawin == 0) {
                $item->status_kawin = 'Kawin';
            } else {
                $item->status_kawin = 'Belum Kawin';
            }
            if ($item->cabor == 'Umum') {
                $item->cabor = 'Umum' . '(' . $item->status_pelatih . ')';
            } else {
                $item->cabor = $item->cabor;
            }
        });

        // Export data ke file Excel
        return Excel::download(new pelatihExport($data), 'DataPelatih.xlsx');
    }
    public function filterPelatih(Request $request)
    {
        $cabor = $request->cabor;
        $nama = $request->nama;
        $data['cabor2'] = $cabor;
        $data['request'] = $request;
        $data['cabor'] = cabor::get();
        $pelatih = pelatih::where('status_akademi', 0);
        if ($cabor != '') {

            $pelatih->where('cabor', 'like', "%" . $cabor . "%");
        }
        if ($nama != '') {
            $pelatih->where('nama_lengkap', 'like', "%" . $nama . "%");
        }

        $data['pelatih'] = $pelatih->paginate(15);

        return view('admin.pelatih.filter')->with($data);
    }
    public function exportPelatih(Request $request)
    {
        $cabor = $request->cabor;
        $nama = $request->nama;
        $data = pelatih::where('status_akademi', 0)->where('cabor', 'like', "%" . $cabor . "%")->where('nama_lengkap', 'like', "%" . $nama . "%")->select(
            'nama_lengkap',
            'cabor',
            'users.email',
            DB::raw('CONCAT(";", NIK) as NIK'),
            'jenis_kelamin',
            'umur',
            'tempat_lahir',
            'tanggal_lahir',
            'golongan_darah',
            'pendidikan_terakhir',
            'pekerjaan',
            'pekerjaan_lainnya',
            'no_telp',
            'status_kawin',
            'no_paspor',
            'masa_berlaku',
            'tempat_terbit',
            'alamat_domisili',
            'asal_kota',
            'berat_badan',
            'size_sepatu',
            'size_baju',
            'size_celana',
            'size_topi',
            'size_training',
            'disiplin_cabor',
            'level',
            'no_sertifikat',
            'keterangan',
            'lembaga',
            'nama_club',
            'alamat_club',
            'status_pelatih',


        )->leftJoin('users', 'user_id', '=', 'users.id') // Menggabungkan dengan tabel 'users'
            ->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';
            }
            if ($item->status_kawin == 0) {
                $item->status_kawin = 'Kawin';
            } else {
                $item->status_kawin = 'Belum Kawin';
            }
            if ($item->cabor == 'Umum') {
                $item->cabor = 'Umum' . '(' . $item->status_pelatih . ')';
            } else {
                $item->cabor = $item->cabor;
            }
        });

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

    public function getPelatih($cabor)
    {
        $pelatih = pelatih::where('cabor', $cabor)->get();
        return response()->json($pelatih);
    }
    public function akademi(String $id)
    {
        try {
            $decryptedId = Crypt::decryptString($id);
            $atlit = Pelatih::find($decryptedId);
            $update['status_akademi'] = '';
            if ($atlit->status_akademi == 1) {
                $update['status_akademi'] = 0;
                $atlit->update($update);
                return redirect()->back()->with('success', 'Status Pelatih diubah Umum!');
            } else {
                $update['status_akademi'] = 1;
                $atlit->update($update);
                return redirect()->back()->with('success', 'Status Pelatih 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]