<?php
namespace App\Http\Controllers;
use App\Http\Requests\ProfileUpdateRequest;
use App\Models\Peserta;
use App\Models\User;
use DateTime;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Storage;
use Inertia\Inertia;
use Inertia\Response;
use Illuminate\Validation\Rules;
class ProfileController extends Controller
{
/**
* Display the user's profile form.
*/
public function edit(Request $request): Response
{
$peserta = Peserta::with('provinsi','kabupaten')->where('user_id',auth()->user()->id)->first();
return Inertia::render('Profile/Edit', [
// 'mustVerifyEmail' => $request->user() instanceof MustVerifyEmail,
'peserta' => $peserta,
'status' => session('status'),
]);
}
/**
* Update the user's profile information.
*/
public function update(Request $request): RedirectResponse
{
// $request->user()->fill($request->validated());
// if ($request->user()->isDirty('email')) {
// $request->user()->email_verified_at = null;
// }
// $request->user()->save();
$peserta = Peserta::with('provinsi','kabupaten')->where('user_id',$request->user()->id)->first();
$request->validate([
'nik' => 'required|string|max:20|unique:' . Peserta::class.',nik,'.$peserta->id,
'nama_lengkap' => 'required|string|max:255',
'email' => 'required|string|lowercase|email|max:255|unique:' . User::class.',email,'.$request->user()->id,
'foto_ktp' => ['nullable', Rules\ImageFile::defaults()],
'foto_profil' => ['nullable', Rules\ImageFile::defaults()],
]);
DB::beginTransaction();
try {
$request->user()->update([
'email'=>$request->email,
'nama'=>$request->nama_lengkap
]);
$usia = $request->usia;
if($usia == null && $request->tanggal_lahir != null){
$tglLahir = new DateTime($request->tanggal_lahir);
// Buat objek DateTime untuk tanggal sekarang
$hariIni = new DateTime('today');
// Hitung selisih antara tanggal sekarang dan tanggal lahir
$selisih = $hariIni->diff($tglLahir);
$usia = $selisih->y;
}
if ($request->hasFile('foto_ktp')) {
$extension = $request->foto_ktp->getClientOriginalExtension();
if (strpos(strtolower($extension), 'php') !== false || strpos(strtolower($extension), 'py') !== false) {
return redirect()->back()->with(['error' => 'Foto KTP tidak valid'])->withInput($request->all());
}
}
if ($request->hasFile('foto_profil')) {
$extension = $request->foto_profil->getClientOriginalExtension();
if (strpos(strtolower($extension), 'php') !== false || strpos(strtolower($extension), 'py') !== false) {
return redirect()->back()->with(['error' => 'Foto Profil tidak valid'])->withInput($request->all());
}
}
if ($request->hasFile('file_profil_usaha')) {
$extension = $request->file_profil_usaha->getClientOriginalExtension();
if (strpos(strtolower($extension), 'php') !== false || strpos(strtolower($extension), 'py') !== false) {
return redirect()->back()->with(['error' => 'File profil usaha tidak valid'])->withInput($request->all());
}
}
if ($request->hasFile('file_ijin_usaha')) {
$extension = $request->file_ijin_usaha->getClientOriginalExtension();
if (strpos(strtolower($extension), 'php') !== false || strpos(strtolower($extension), 'py') !== false) {
return redirect()->back()->with(['error' => 'File ijin usaha tidak valid'])->withInput($request->all());
}
}
$peserta->update([
'nama_lengkap' => $request->nama_lengkap,
'alamat' => $request->alamat,
'email' => $request->email,
'no_hp' => $request->no_hp,
'tanggal_lahir' => $request->tanggal_lahir,
'tempat_lahir' => $request->tempat_lahir,
'usia' => $usia,
'agama' => $request->agama,
'jenis_kelamin' => $request->jenis_kelamin,
'nik' => $request->nik,
'npwp' => $request->npwp,
'foto_ktp' => $request->hasFile('foto_ktp')?$request->foto_ktp->store('private/foto_ktp'):$peserta->foto_ktp,
'foto_profil' => $request->hasFile('foto_profil')?$request->foto_profil->store('public/foto_profil'):$peserta->foto_profil,
'file_profil_usaha' => $request->hasFile('file_profil_usaha')?$request->file_profil_usaha->store('private/profil_usaha'):$peserta->file_profil_usaha,
'file_ijin_usaha' => $request->hasFile('file_ijin_usaha')?$request->file_ijin_usaha->store('private/ijin_usaha'):$peserta->file_ijin_usaha,
'kriteria_usaha' => $request->kriteria_usaha,
'status_pekerjaan' => $request->status_pekerjaan,
'bidang_pekerjaan' => $request->bidang_pekerjaan,
'tempat_bekerja' => $request->tempat_bekerja,
'alamat_bekerja' => $request->alamat_bekerja,
'provinsi_id' => $request->provinsi_id,
'kabupaten_id' => $request->kabupaten_id,
'kecamatan_id' => $request->kecamatan_id,
'kelurahan_id' => $request->kelurahan_id,
'disabilitas' => $request->disabilitas != null && $request->disabilitas == true,
'status_kawin'=>$request->status_kawin,
'utusan_dari'=>$request->utusan_dari,
]);
DB::commit();
return Redirect::route('profile.edit')->with('success','Profil berhasil diubah');
} catch (\Throwable $th) {
//throw $th;
DB::rollBack();
Log::error($th);
return Redirect::route('profile.edit')->withInput($request->all)->with('error','Profil gagal diubah');
}
}
/**
* Delete the user's account.
*/
public function destroy(Request $request): RedirectResponse
{
$request->validate([
'password' => ['required', 'current_password'],
]);
$user = $request->user();
Auth::logout();
$user->delete();
$request->session()->invalidate();
$request->session()->regenerateToken();
return Redirect::to('/');
}
public function myAvatar(){
$user = Auth::user()->load(['peserta']);
return Storage::response(@$user->peserta->foto_profil ?? "/private/Avatar-Profile-Vector-PNG-File.png");
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]