106 lines
3.7 KiB
PHP
106 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Profile;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Throwable;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Laravolt\Indonesia\Models\City;
|
|
use Laravolt\Indonesia\Models\District;
|
|
use Laravolt\Indonesia\Models\Provinsi;
|
|
use Laravolt\Indonesia\Models\Village;
|
|
|
|
class ProfileController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$provinces = Provinsi::all();
|
|
$cities = City::where('province_code', auth()->user()->village->district->city->province->code)->get();
|
|
$districts = District::where('city_code', auth()->user()->village->district->city->code)->get();
|
|
$villages = Village::where('district_code', auth()->user()->village->district->code)->get();
|
|
return view('profile.index', compact('provinces', 'cities', 'districts', 'villages'));
|
|
}
|
|
|
|
public function updateProfile(Request $request)
|
|
{
|
|
$nama_depan = str_replace(' ', '_', $request->nama_depan);
|
|
$nama_belakang = str_replace(' ', '_', $request->nama_belakang);
|
|
$nohp = $request->nohp;
|
|
$kode_kelurahan = $request->kelurahan;
|
|
$alamat = $request->alamat;
|
|
$nama_bank = $request->nama_bank;
|
|
$no_rek = $request->no_rek;
|
|
$foto_profile = '';
|
|
if ($request->hasFile('foto')) {
|
|
$file = $request->file('foto');
|
|
$foto_profile = 'Foto_Profil_' . $nama_depan . '_' . $nama_belakang .'.'. $file->getClientOriginalExtension();
|
|
$path = 'foto-profile/' . $foto_profile;
|
|
|
|
Storage::disk('public')->put($path, file_get_contents($file));
|
|
}
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
User::where('id', Auth::user()->id)->update([
|
|
'nama_depan' => $nama_depan,
|
|
'nama_belakang' => $nama_belakang,
|
|
'nohp' => $nohp,
|
|
'kode_kelurahan' => $kode_kelurahan,
|
|
'alamat' => $alamat,
|
|
'nama_bank' => $nama_bank,
|
|
'no_rek' => $no_rek,
|
|
'foto_profile' => $foto_profile,
|
|
]);
|
|
|
|
DB::commit();
|
|
|
|
return response()->json(['status' => true, 'message' => 'Data Profile berhasil diupdate']);
|
|
} catch (Throwable $e) {
|
|
DB::rollBack();
|
|
|
|
Log::error($e->getMessage());
|
|
|
|
return response()->json(['status' => false, 'message' => 'Terjadi Kesalahan pada sisi server']);
|
|
}
|
|
}
|
|
|
|
public function changePassword(Request $request){
|
|
$currentPassword = $request->currentPassword;
|
|
$newPassword = $request->newPassword;
|
|
$renewPassword = $request->renewPassword;
|
|
|
|
if(!Hash::check($currentPassword, auth()->user()->password)){
|
|
return response()->json(['status' => false, 'message' => 'Password sekarang tidak sama','password' => $currentPassword]);
|
|
}
|
|
|
|
if($renewPassword != $newPassword){
|
|
return response()->json(['status' => false, 'message' => 'Ketikan ulang password baru']);
|
|
}
|
|
|
|
try{
|
|
DB::beginTransaction();
|
|
|
|
User::where('id', auth()->user()->id)->update([
|
|
'password' => Hash::make($newPassword)
|
|
]);
|
|
|
|
DB::commit();
|
|
|
|
return response()->json(['status' => true, 'message' => 'Password Berhasil diubah']);
|
|
}catch(Throwable $e){
|
|
DB::rollBack();
|
|
|
|
Log::error($e->getMessage());
|
|
|
|
return response()->json(['status' => false, 'message' => 'Terjadi Kesalahan pada sisi server']);
|
|
}
|
|
}
|
|
}
|