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