TIF_NGANJUK_E41220737/resources/views/landing/pesanan_saya.blade.php

277 lines
20 KiB
PHP

@extends('layouts.frontend')
@section('title', 'Pesanan Saya')
@section('content')
<div class="container py-5 mt-4">
{{-- Header Section --}}
<div class="d-flex justify-content-between align-items-center mb-5">
<div>
<h2 class="fw-bold text-dark mb-0">Riwayat Pesanan</h2>
<p class="text-muted small mb-0">Pantau status belanjaan Anda di sini</p>
</div>
<a href="{{ route('shop') }}" class="btn btn-primary rounded-pill px-4 shadow-sm">
<i class="fas fa-shopping-bag me-2"></i>Belanja Lagi
</a>
</div>
@if ($transaksis->isEmpty())
{{-- Empty State --}}
<div class="text-center py-5">
<div class="bg-light rounded-circle d-inline-flex align-items-center justify-content-center mb-4"
style="width: 100px; height: 100px;">
<i class="fas fa-receipt fa-3x text-secondary opacity-50"></i>
</div>
<h5 class="fw-bold text-dark">Belum ada pesanan</h5>
<p class="text-muted mb-4">Yuk, mulai isi keranjang belanja Anda dengan produk segar!</p>
<a href="{{ route('shop') }}" class="btn btn-outline-primary rounded-pill px-4">Mulai Belanja</a>
</div>
@else
{{-- List Transaksi --}}
<div class="row g-4">
@foreach ($transaksis as $trx)
<div class="col-12">
<div class="card border-0 shadow-sm rounded-4 overflow-hidden">
{{-- Invoice & Status --}}
<div
class="card-header bg-white border-bottom border-light p-4 d-flex flex-wrap justify-content-between align-items-center">
<div class="d-flex align-items-center gap-3">
<div class="bg-light p-2 rounded text-center" style="width: 50px;">
<i class="fas fa-file-invoice text-primary fs-4"></i>
</div>
<div>
<h6 class="fw-bold mb-0 text-dark">#{{ $trx->kode_invoice }}</h6>
<small
class="text-muted">{{ \Carbon\Carbon::parse($trx->tanggal_transaksi)->format('d M Y • H:i') }}</small>
</div>
</div>
@php
$statusClass = match ($trx->status) {
'menunggu_konfirmasi', 'menunggu konfirmasi' => 'bg-warning text-dark bg-opacity-25 border border-warning',
'diproses' => 'bg-info text-dark bg-opacity-25 border border-info',
'dikirim' => 'bg-primary bg-opacity-10 border border-primary',
'selesai' => 'bg-success bg-opacity-10 border border-success',
'batal' => 'bg-danger bg-opacity-10 border border-danger',
default => 'bg-secondary text-secondary bg-opacity-10'
};
@endphp
<span class="badge {{ $statusClass }} px-3 py-2 rounded-pill mt-2 mt-sm-0">
{{ ucwords(str_replace('_', ' ', $trx->status)) }}
</span>
</div>
<div class="card-body p-4">
<div class="row align-items-center">
{{-- Preview Produk --}}
<div class="col-md-7 mb-3 mb-md-0">
@php $firstItem = $trx->detailTransaksis->first(); @endphp
@if($firstItem)
<div class="d-flex align-items-center">
<img src="{{ $firstItem->produk->foto_produk ? asset('storage/' . $firstItem->produk->foto_produk) : 'https://images.unsplash.com/photo-1586201375761-83865001e31c?q=80&w=200&auto=format&fit=crop' }}"
class="rounded-3 object-fit-cover me-3 shadow-sm" width="60" height="60"
alt="Produk">
<div>
<h6 class="fw-bold text-dark mb-1">{{ $firstItem->produk->nama_produk }}</h6>
<p class="text-muted small mb-0">
{{ $firstItem->jumlah }} kg x Rp
{{ number_format($firstItem->harga_satuan, 0, ',', '.') }}
@if ($trx->detailTransaksis->count() > 1)
<span class="text-primary fw-bold ms-1">+
{{ $trx->detailTransaksis->count() - 1 }} produk lainnya</span>
@endif
</p>
</div>
</div>
@endif
</div>
{{-- Total & Button --}}
<div class="col-md-5 text-md-end border-start-md ps-md-4">
<small class="text-muted d-block mb-1">Total Tagihan</small>
<h5 class="fw-bold text-dark mb-3">Rp {{ number_format($trx->total_harga, 0, ',', '.') }}
</h5>
<div class="d-flex justify-content-md-end gap-2">
<button class="btn btn-light btn-sm rounded-pill px-3 border" data-bs-toggle="modal"
data-bs-target="#detailModal{{ $trx->id }}">
Lihat Detail
</button>
@if ($trx->status == 'dikirim')
<form action="{{ route('pesanan.selesai', $trx->id) }}" method="POST"
onsubmit="return confirm('Apakah Anda yakin barang sudah diterima dengan baik?')">
@csrf
<button type="submit" class="btn btn-success btn-sm rounded-pill px-3 shadow-sm">
<i class="fas fa-check me-1"></i> Pesanan Diterima
</button>
</form>
@endif
</div>
</div>
</div>
</div>
</div>
</div>
{{-- MODAL DETAIL --}}
<div class="modal fade" id="detailModal{{ $trx->id }}" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content border-0 rounded-4 shadow-lg overflow-hidden">
{{-- Header: Putih Bersih --}}
<div class="modal-header border-bottom-0 pt-4 px-4 pb-0">
<div>
<h5 class="modal-title fw-bold text-dark" style="font-size: 1.25rem;">Detail Pesanan</h5>
<p class="text-muted small mb-0">Invoice: <span
class="font-monospace">#{{ $trx->kode_invoice }}</span></p>
</div>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body p-4">
{{-- 1. STATUS BANNER (Meniru Style Referensi) --}}
@php
$statusConfig = match ($trx->status) {
'menunggu_konfirmasi', 'menunggu konfirmasi' => ['bg' => '#fff3cd', 'text' => '#856404', 'icon' => 'fa-clock', 'title' => 'Menunggu Konfirmasi', 'desc' => 'Menunggu penjual menerima pesanan Anda.'],
'diproses' => ['bg' => '#cff4fc', 'text' => '#055160', 'icon' => 'fa-box-open', 'title' => 'Sedang Diproses', 'desc' => 'Penjual sedang mengemas barang Anda.'],
'dikirim' => ['bg' => '#cfe2ff', 'text' => '#084298', 'icon' => 'fa-truck', 'title' => 'Dalam Pengiriman', 'desc' => 'Kurir sedang menuju ke lokasi Anda.'],
'selesai' => ['bg' => '#d1e7dd', 'text' => '#0f5132', 'icon' => 'fa-check-circle', 'title' => 'Transaksi Selesai', 'desc' => 'Terima kasih telah berbelanja produk lokal!'],
'batal' => ['bg' => '#f8d7da', 'text' => '#842029', 'icon' => 'fa-times-circle', 'title' => 'Dibatalkan', 'desc' => 'Transaksi ini telah dibatalkan.'],
default => ['bg' => '#e2e3e5', 'text' => '#41464b', 'icon' => 'fa-question-circle', 'title' => 'Status Tidak Dikenal', 'desc' => '']
};
@endphp
<div class="d-flex align-items-center p-3 rounded-3 mb-4"
style="background-color: {{ $statusConfig['bg'] }}; color: {{ $statusConfig['text'] }};">
<i class="fas {{ $statusConfig['icon'] }} fs-3 me-3"></i>
<div>
<h6 class="fw-bold mb-0">{{ $statusConfig['title'] }}</h6>
<small style="opacity: 0.9;">{{ $statusConfig['desc'] }}</small>
</div>
</div>
<div class="row g-4 mb-4">
{{-- 2. INFO PENJUAL (Kiri) --}}
<div class="col-md-6">
<label class="small text-secondary fw-bold text-uppercase mb-2"
style="font-size: 0.75rem; letter-spacing: 0.5px;">Dijual Oleh</label>
<div class="bg-light p-3 rounded-3 d-flex align-items-center justify-content-between">
<div class="d-flex align-items-center">
<div class="bg-white rounded-circle shadow-sm d-flex align-items-center justify-content-center me-3"
style="width: 45px; height: 45px;">
<i class="fas fa-store text-primary"></i>
</div>
<div>
<h6 class="fw-bold text-dark mb-0" style="font-size: 0.95rem;">
{{ $trx->petani->nama_lengkap ?? 'Petani' }}</h6>
<small class="text-muted"
style="font-size: 0.85rem;">{{ $trx->petani->nama_usaha ?? 'Tani Desa Seller' }}</small>
</div>
</div>
@if($trx->petani)
<a href="https://wa.me/{{ $trx->petani->no_hp }}" target="_blank"
class="btn btn-success btn-sm rounded-circle d-flex align-items-center justify-content-center"
style="width: 35px; height: 35px;" data-bs-toggle="tooltip"
title="Chat WhatsApp">
<i class="fab fa-whatsapp"></i>
</a>
@endif
</div>
</div>
{{-- 3. INFO PENGIRIMAN (Kanan) --}}
<div class="col-md-6">
<label class="small text-secondary fw-bold text-uppercase mb-2"
style="font-size: 0.75rem; letter-spacing: 0.5px;">Info Pengiriman</label>
<div class="bg-light p-3 rounded-3 h-100">
<div class="d-flex mb-2">
<i class="fas fa-map-marker-alt text-danger mt-1 me-2"></i>
<div>
<h6 class="fw-bold text-dark mb-0" style="font-size: 0.95rem;">Alamat Tujuan
</h6>
<small class="text-muted d-block text-truncate"
style="max-width: 200px;">{{ $trx->alamat_pengiriman }}</small>
</div>
</div>
<div class="ms-4 ps-1 border-top pt-2 mt-2">
<small class="text-muted">Metode Bayar: <span class="fw-bold text-dark">Cash on
Delivery (COD)</span></small>
</div>
</div>
</div>
</div>
{{-- 4. RINCIAN BARANG (Style Card List) --}}
<label class="small text-secondary fw-bold text-uppercase mb-2"
style="font-size: 0.75rem; letter-spacing: 0.5px;">Rincian Barang</label>
<div class="border rounded-3 overflow-hidden mb-4">
@foreach ($trx->detailTransaksis as $d)
<div class="d-flex align-items-center justify-content-between p-3 bg-white border-bottom">
<div class="d-flex align-items-center">
<img src="{{ $d->produk->foto_produk ? asset('storage/' . $d->produk->foto_produk) : 'https://images.unsplash.com/photo-1586201375761-83865001e31c?q=80&w=200&auto=format&fit=crop' }}"
class="rounded-3 object-fit-cover me-3"
style="width: 60px; height: 60px; background-color: #f8f9fa;">
<div>
<h6 class="mb-1 fw-bold text-dark">{{ $d->produk->nama_produk }}</h6>
<small class="text-muted d-block">{{ $d->jumlah }} kg x Rp
{{ number_format($d->harga_satuan, 0, ',', '.') }}</small>
</div>
</div>
<div class="fw-bold text-dark">
Rp {{ number_format($d->subtotal, 0, ',', '.') }}
</div>
</div>
@endforeach
</div>
{{-- 5. TOTAL BLOCK (Hijau Solid seperti referensi) --}}
@php
// Menggunakan warna background sesuai status agar konsisten, atau default hijau fresh
$footerBg = ($trx->status == 'batal') ? '#dc3545' : (($trx->status == 'menunggu_konfirmasi') ? '#ffc107' : '#82c91e');
$footerText = ($trx->status == 'menunggu_konfirmasi') ? '#000' : '#fff';
@endphp
<div class="p-3 rounded-3" style="background-color: {{ $footerBg }}; color: {{ $footerText }};">
<div class="d-flex justify-content-between align-items-center mb-1">
<span style="opacity: 0.9;">Subtotal Produk</span>
<span class="fw-bold">Rp {{ number_format($trx->total_harga, 0, ',', '.') }}</span>
</div>
<div class="d-flex justify-content-between align-items-center">
<span style="opacity: 0.9;">Biaya Pengiriman (COD)</span>
<span class="fw-bold">Gratis</span>
</div>
<hr class="my-2" style="opacity: 0.3;">
<div class="d-flex justify-content-between align-items-center">
<span class="fw-bold fs-5">Total Pembayaran</span>
<span class="fw-bold fs-5">Rp {{ number_format($trx->total_harga, 0, ',', '.') }}</span>
</div>
</div>
</div>
<div class="modal-footer border-top-0 pt-0 pb-4 px-4">
<button type="button" class="btn btn-light border rounded-pill px-4 w-100"
data-bs-dismiss="modal">Tutup</button>
</div>
</div>
</div>
</div>
@endforeach
</div>
@endif
</div>
@endsection
@push('style')
<style>
@media (min-width: 768px) {
.border-start-md {
border-left: 1px solid #dee2e6 !important;
}
}
</style>
@endpush