feat: remove member voucher page, route, and Livewire component from member section.
This commit is contained in:
parent
9222a3401d
commit
716fb3448b
@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Livewire\Member;
|
||||
|
||||
use App\Enums\VoucherType;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Title;
|
||||
use Livewire\Component;
|
||||
|
||||
#[Title('Voucher')]
|
||||
#[Layout('components.layouts.member')]
|
||||
class Voucher extends Component
|
||||
{
|
||||
public array $vouchers = [];
|
||||
|
||||
public function mount(): void
|
||||
{
|
||||
$this->vouchers = auth()->user()->vouchers()->get()->map(fn ($voucher) => [
|
||||
'id' => $voucher->id,
|
||||
'name' => $voucher->name,
|
||||
'code' => $voucher->code,
|
||||
'is_percentage' => $voucher->type == VoucherType::PERCENTAGE,
|
||||
'min_purchase' => $voucher->min_purchase ? formatCurrencyNumber($voucher->min_purchase, 'Rp') : 'No Min. Belanja',
|
||||
'discount_amount' => $voucher->type == VoucherType::PERCENTAGE ? $voucher->discount_amount.'%' : formatCurrencyNumber($voucher->discount_amount, 'Rp'),
|
||||
'max_discount' => formatCurrencyNumber($voucher->max_discount, 'Rp'),
|
||||
'end_date' => $voucher->end_date ? formatRelativeTime($voucher->end_date) : 'Tidak Ada Batas Waktu',
|
||||
])->toArray();
|
||||
}
|
||||
|
||||
public function render(): View
|
||||
{
|
||||
return view('livewire.member.voucher', [
|
||||
'pageTitle' => 'Voucher',
|
||||
]);
|
||||
}
|
||||
}
|
||||
@ -9,9 +9,7 @@ class="bg-zinc-50 dark:bg-zinc-900 border-r rtl:border-r-0 rtl:border-l border-z
|
||||
<flux:navlist.item icon="squares-plus" href="{{ route('member.overview') }}"
|
||||
:current="request()->routeIs('member.overview')" wire:navigate>
|
||||
Ringkasan</flux:navlist.item>
|
||||
<flux:navlist.item icon="ticket" href="{{ route('member.voucher') }}"
|
||||
:current="request()->routeIs('member.voucher')" wire:navigate>
|
||||
Voucher</flux:navlist.item>
|
||||
|
||||
<flux:navlist.item icon="user-circle" href="{{ route('member.membership') }}"
|
||||
:current="request()->routeIs('member.membership')" wire:navigate>
|
||||
Membership</flux:navlist.item>
|
||||
|
||||
@ -1,74 +0,0 @@
|
||||
<flux:main>
|
||||
<flux:heading size="xl" level="1">{{ $pageTitle }}</flux:heading>
|
||||
|
||||
<div class="mt-6">
|
||||
@if (!empty($vouchers))
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6">
|
||||
@foreach ($vouchers as $voucher)
|
||||
<flux:card class="p-0 relative dark:bg-zinc-700!">
|
||||
<flux:text class="text-white p-2 md:p-0 absolute top-2 right-3 z-50">x3</flux:text>
|
||||
|
||||
<div class="flex flex-col sm:flex-row items-stretch sm:items-center p-3 sm:p-4 gap-3 sm:gap-0">
|
||||
<div
|
||||
class="flex-shrink-0 w-full sm:w-24 md:w-32 h-24 sm:h-24 md:h-32 bg-gradient-to-br from-emerald-600 to-emerald-700 rounded-lg flex flex-col items-center justify-center text-white relative mx-auto sm:mx-0">
|
||||
<div
|
||||
class="hidden sm:block absolute -right-3 top-1/2 transform -translate-y-1/2 w-6 h-6 bg-white dark:bg-zinc-700 rounded-full">
|
||||
</div>
|
||||
|
||||
<img src="{{ asset('assets/images/dark-logo.png') }}" alt="logo"
|
||||
class="h-12 sm:h-16 md:h-20">
|
||||
<flux:heading class="text-white!">{{ $voucher['name'] }}</flux:heading>
|
||||
</div>
|
||||
|
||||
<div class="flex-1 sm:ml-4 md:ml-4">
|
||||
<div
|
||||
class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3">
|
||||
<div class="flex-1 w-full sm:w-auto">
|
||||
<flux:heading class="mb-1">
|
||||
Diskon {{ $voucher['discount_amount'] }}
|
||||
{{ $voucher['is_percentage'] ? ' s/d ' . $voucher['max_discount'] : '' }}
|
||||
</flux:heading>
|
||||
|
||||
<flux:text class="mb-1">
|
||||
Min. Belanja {{ $voucher['min_purchase'] }}
|
||||
</flux:text>
|
||||
|
||||
<div x-data="{ textToCopy: '{{ $voucher['code'] }}', copied: false }"
|
||||
@click="navigator.clipboard.writeText(textToCopy); copied = true; setTimeout(() => copied = false, 2000)"
|
||||
:class="copied ? 'bg-emerald-100 dark:bg-emerald-800' :
|
||||
'bg-emerald-50 dark:bg-emerald-900'"
|
||||
class="inline-block px-2 py-1 border border-emerald-300 dark:border-emerald-700 rounded text-xs text-emerald-600 dark:text-emerald-300 font-medium my-1 cursor-pointer transition-colors">
|
||||
<span x-text="copied ? 'Copied!' : textToCopy"></span>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2 text-xs sm:text-sm flex-wrap">
|
||||
<flux:text size="xs">
|
||||
Berakhir: {{ $voucher['end_date'] }}
|
||||
</flux:text>
|
||||
<flux:separator vertical class="dark:border-gray-700" />
|
||||
<flux:text size="xs" class="text-blue-400">
|
||||
S&K
|
||||
</flux:text>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full sm:w-auto sm:ml-2 md:ml-4 flex justify-center sm:justify-end">
|
||||
<flux:button variant="primary" color="emerald" class="w-full">Pakai
|
||||
</flux:button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
@else
|
||||
@include('components.animations.lottie.not-found')
|
||||
@endif
|
||||
</div>
|
||||
</flux:main>
|
||||
|
||||
@assets
|
||||
<script src="https://unpkg.com/@lottiefiles/dotlottie-wc@0.8.5/dist/dotlottie-wc.js" type="module"></script>
|
||||
@endassets
|
||||
@ -4,7 +4,7 @@
|
||||
use App\Livewire\Member\Overview;
|
||||
use App\Livewire\Member\RedeemPoint;
|
||||
use App\Livewire\Member\Setting\Account;
|
||||
use App\Livewire\Member\Voucher;
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::middleware(['auth', 'verified'])
|
||||
@ -12,7 +12,7 @@
|
||||
->name('member.')
|
||||
->group(function () {
|
||||
Route::get('overview', Overview::class)->name('overview');
|
||||
Route::get('vouchers', Voucher::class)->name('voucher');
|
||||
|
||||
Route::get('memberships', Membership::class)->name('membership');
|
||||
Route::get('redeem-points', RedeemPoint::class)->name('redeem_point');
|
||||
Route::get('settings', Account::class)->name('setting');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user