update kode

This commit is contained in:
nylaaptr 2026-07-15 23:57:58 +07:00
parent b180dcb437
commit 090a423485
12 changed files with 80 additions and 52 deletions

View File

@ -48,7 +48,7 @@ public function login(Request $request)
return redirect()->route('admin.welcome'); return redirect()->route('admin.welcome');
} }
return redirect()->route('halaman-katalog'); return redirect()->route('welcome');
} }
return back()->withErrors([ return back()->withErrors([
@ -67,16 +67,14 @@ public function redirectToGoogle()
public function handleGoogleCallback() public function handleGoogleCallback()
{ {
try { try {
$googleUser = Socialite::driver('google')->user(); $googleUser = Socialite::driver('google')->user();
$user = User::where('email_user', $googleUser->email)->first(); $user = User::where('email_user', $googleUser->email)->first();
if (!$user) { if (!$user) {
$user = User::create([ $user = User::create([
'nama_user' => $googleUser->name, 'nama_user' => $googleUser->name,
'email_user' => $googleUser->email, 'email_user' => $googleUser->email,
'no_hp' => null,
'password_user' => bcrypt('google-login'), 'password_user' => bcrypt('google-login'),
'role_user' => 'customer', 'role_user' => 'customer',
'google_id' => $googleUser->id, 'google_id' => $googleUser->id,
@ -102,11 +100,10 @@ public function handleGoogleCallback()
'tipe' => 'login' 'tipe' => 'login'
]); ]);
return redirect()->route('halaman-katalog'); return redirect()->route('welcome');
} catch (\Exception $e) { } catch (\Exception $e) {
dd($e->getMessage());
return redirect()->route('login')->with('error', 'Login Google gagal.');
} }
} }

View File

@ -131,13 +131,9 @@ public function kirim(Request $request)
$apiKey = env('GROQ_API_KEY'); $apiKey = env('GROQ_API_KEY');
if (!$apiKey) { if (!$apiKey) {
return response()->json([ return response()->json([
'reply' => 'API key tidak ditemukan!', 'reply' => 'API key tidak ditemukan!',
'options' => [], 'options' => [],
'properti' => [] 'properti' => []
]); ]);
} }

View File

@ -141,7 +141,7 @@ public function approveBukti($id)
/** /**
* ====================================== * ======================================
* ADMIN - TOLAK BUKTI * ADMIN - TOLAK BUKTI PEMBAYARAN
* ====================================== * ======================================
*/ */
public function rejectBukti($id) public function rejectBukti($id)

View File

@ -264,7 +264,7 @@ public function update(Request $request, $id)
// KHUSUS PELUNASAN // KHUSUS PELUNASAN
if ( if (
strtolower($request->progres) == 'pelunasan' && strtolower($request->tahap_saat_ini) == 'pelunasan' &&
$request->status != 'Selesai' $request->status != 'Selesai'
) { ) {

View File

@ -54,14 +54,21 @@ public function destroy($id)
public function updateProfile(Request $request) public function updateProfile(Request $request)
{ {
$request->validate([ $request->validate([
'name' => 'required|string|max:255', 'nama_user' => 'required|string|max:255',
'email' => 'required|email|max:255' 'email_user' => 'required|email|max:255',
'no_hp' => 'nullable|string|max:20',
'password_user' => 'nullable|min:8',
]); ]);
$user = Auth::user(); $user = Auth::user();
$user->name = $request->name; $user->nama_user = $request->nama_user;
$user->email = $request->email; $user->email_user = $request->email_user;
$user->no_hp = $request->no_hp;
if ($request->filled('password_user')) {
$user->password_user = Hash::make($request->password_user);
}
$user->save(); $user->save();

View File

@ -501,6 +501,24 @@
border-color: #4a90b7; border-color: #4a90b7;
} }
.btn-delete-preview{
position:absolute;
top:8px;
right:8px;
width:30px;
height:30px;
border:none;
border-radius:50%;
background:#dc3545;
color:#fff;
cursor:pointer;
}
.btn-delete-preview:hover{
background:#bb2d3b;
}
.img-modal { .img-modal {
display: none; display: none;
position: fixed; position: fixed;
@ -965,9 +983,9 @@ class="form-control"
multiple> multiple>
</div> </div>
<button type="button" onclick="cekFile()"> <!-- <button type="button" onclick="cekFile()">
Cek File Cek File
</button> </button> -->
<!-- Tombol --> <!-- Tombol -->
<div class="form-actions"> <div class="form-actions">
@ -1010,19 +1028,31 @@ function cekFile() {
function renderPreview() { function renderPreview() {
container.innerHTML = ''; container.innerHTML = '';
// Update isi input file
const dataTransfer = new DataTransfer();
fileBuffer.forEach(file => {
dataTransfer.items.add(file);
});
fileInput.files = dataTransfer.files;
fileBuffer.forEach((file, index) => { fileBuffer.forEach((file, index) => {
const reader = new FileReader(); const reader = new FileReader();
reader.onload = function(e){ reader.onload = function(e){
const wrapper = document.createElement('div'); const wrapper = document.createElement('div');
wrapper.classList.add('preview-item'); wrapper.classList.add('preview-item');
const img = document.createElement('img'); const img = document.createElement('img');
img.src = e.target.result; img.src = e.target.result;
img.classList.add('preview-img'); img.classList.add('preview-img');
img.onclick = () => openModal(e.target.result); img.onclick = () => openModal(e.target.result);
const delBtn = document.createElement('button'); const delBtn = document.createElement('button');
delBtn.innerText = '×'; delBtn.type = 'button';
delBtn.classList.add('btn-delete-preview');
delBtn.innerHTML = '<i class="fas fa-trash"></i>';
delBtn.onclick = () => { delBtn.onclick = () => {
fileBuffer.splice(index,1); fileBuffer.splice(index,1);
@ -1033,6 +1063,7 @@ function renderPreview() {
wrapper.appendChild(delBtn); wrapper.appendChild(delBtn);
container.appendChild(wrapper); container.appendChild(wrapper);
}; };
reader.readAsDataURL(file); reader.readAsDataURL(file);

View File

@ -778,23 +778,15 @@ class="profile-avatar"
elseif ($index == $currentIndex) { elseif ($index == $currentIndex) {
if ($pemesanan->status == 'Selesai') { if ($pemesanan->status == 'Selesai') {
$class = 'done'; $class = 'done';
} }
elseif ($pemesanan->status == 'Ditolak') { elseif ($pemesanan->status == 'Ditolak') {
$class = 'rejected'; $class = 'rejected';
} }
else { else {
$class = 'active'; $class = 'active';
} }
} }
@endphp @endphp
<div class="timeline-step {{ $class }}"> <div class="timeline-step {{ $class }}">
@ -844,8 +836,10 @@ class="profile-avatar"
@endif @endif
{{-- Tombol Invoice --}} {{-- Tombol Invoice --}}
@if($step['title'] == 'Pelunasan Pembayaran') @if(
$step['title'] == 'Pelunasan Pembayaran'
&& $currentIndex >= $index
)
<div style="margin-top:10px;"> <div style="margin-top:10px;">
<a href="{{ route('invoice', $pemesanan->transaksi->id_transaksi) }}" <a href="{{ route('invoice', $pemesanan->transaksi->id_transaksi) }}"
class="btn-invoice"> class="btn-invoice">
@ -854,6 +848,16 @@ class="btn-invoice">
</a> </a>
</div> </div>
@endif @endif
<!-- @if($step['title'] == 'Pelunasan Pembayaran')
<div style="margin-top:10px;">
<a href="{{ route('invoice', $pemesanan->transaksi->id_transaksi) }}"
class="btn-invoice">
<i class="fas fa-file-invoice"></i>
Lihat Invoice
</a>
</div>
@endif -->
</div> </div>
<!-- TANGGAL / STATUS --> <!-- TANGGAL / STATUS -->

View File

@ -1254,7 +1254,7 @@ class="form-control"
<span class="payment-detail-label">Nomor Rekening</span> <span class="payment-detail-label">Nomor Rekening</span>
<span class="payment-detail-value rekening-highlight"> <span class="payment-detail-value rekening-highlight">
1234567890 1430033363555
<button type="button" <button type="button"
class="copy-btn" class="copy-btn"

View File

@ -684,7 +684,7 @@ class="profile-avatar"
} }
$link = '#'; $link = '';
/* ===================================================== /* =====================================================
AMBIL DATA DASAR AMBIL DATA DASAR
@ -721,14 +721,13 @@ class="profile-avatar"
$pemesanan = \App\Models\Pemesanan::find($dokumen->id_pemesanan); $pemesanan = \App\Models\Pemesanan::find($dokumen->id_pemesanan);
if ($dokumen->status_verifikasi == 'ditolak') { if ($dokumen->status_verifikasi == 'ditolak') {
$link = route('form-pemesanan', $dokumen->id_pemesanan); $link = route('form-pemesanan', $dokumen->id_pemesanan);
} else { } else {
$link = route('detail-pemesanan', $dokumen->id_pemesanan); $link = route('detail-pemesanan', $dokumen->id_pemesanan);
} }
/* ===================================================== /* =====================================================
MONITORING / TAHAP LAIN DETAIL PEMESANAN MONITORING / TAHAP LAIN DETAIL PEMESANAN
===================================================== */ ===================================================== */

View File

@ -775,9 +775,12 @@ class="profile-avatar-img">
value="{{ $user->email_user }}" class="form-input"> value="{{ $user->email_user }}" class="form-input">
</div> </div>
<div class="info-item full"> <div class="info-item">
<span class="info-label">Alamat</span> <span class="info-label">Password</span>
<textarea name="alamat" class="form-input">{{ $user->alamat }}</textarea> <input type="password"
value="********"
class="form-input"
disabled>
</div> </div>
</div> </div>
</div> </div>

View File

@ -542,7 +542,7 @@ class="form-control password-input @error('password') is-invalid @enderror"
<span>atau</span> <span>atau</span>
</div> </div>
<a href="{{ route('google.login') }}" class="btn btn-light w-100" <a href="{{ route('google.welcome') }}" class="btn btn-light w-100"
style=" style="
border:2px solid #e2e8f0; border:2px solid #e2e8f0;
padding:14px; padding:14px;

View File

@ -20,7 +20,6 @@
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use App\Mail\NotifikasiEmail; use App\Mail\NotifikasiEmail;
use App\Models\LeadEmail; use App\Models\LeadEmail;
use App\Http\Controllers\Auth\GoogleController;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -198,10 +197,6 @@
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */
// LOGIN GOOGLE
Route::get('/auth/google', [GoogleController::class, 'redirect'])->name('google.login');
Route::get('/auth/google/callback', [GoogleController::class, 'callback']);
Route::get('/login', [AuthController::class, 'index'])->name('login'); Route::get('/login', [AuthController::class, 'index'])->name('login');
Route::post('/login', [AuthController::class, 'login'])->name('login.proses'); Route::post('/login', [AuthController::class, 'login'])->name('login.proses');
Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
@ -322,7 +317,7 @@ function ($id) {
// EMAILLL // EMAILLL
Route::get('/auth/google', [AuthController::class, 'redirectToGoogle']) Route::get('/auth/google', [AuthController::class, 'redirectToGoogle'])
->name('google.login'); ->name('google.welcome');
Route::get('/auth/google/callback', [AuthController::class, 'handleGoogleCallback']) Route::get('/auth/google/callback', [AuthController::class, 'handleGoogleCallback'])
->name('google.callback'); ->name('google.callback');
@ -1694,9 +1689,5 @@ function($message) use ($user){
'pesan' => 'Ini email dari sistem 🚀' 'pesan' => 'Ini email dari sistem 🚀'
]) ])
); );
return 'Email terkirim!'; return 'Email terkirim!';
}); });