From 48271c2bf24aa17a3c6f3ec548d9bf821f0b11df Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 13 Nov 2025 10:59:00 +0700 Subject: [PATCH] feat(overview): munculkan form untuk jadi member si overview --- .../Forms/Studio/Loyalty/CustomerForm.php | 3 + app/Livewire/Member/Overview.php | 34 +++++ .../views/livewire/member/overview.blade.php | 133 +++++++++++------- 3 files changed, 119 insertions(+), 51 deletions(-) diff --git a/app/Livewire/Forms/Studio/Loyalty/CustomerForm.php b/app/Livewire/Forms/Studio/Loyalty/CustomerForm.php index 2e42354..3b233aa 100644 --- a/app/Livewire/Forms/Studio/Loyalty/CustomerForm.php +++ b/app/Livewire/Forms/Studio/Loyalty/CustomerForm.php @@ -12,6 +12,8 @@ class CustomerForm extends Form { public ?Customer $customer = null; + public ?string $user_id = null; + public string $name = ''; public ?string $phone_number = null; @@ -50,6 +52,7 @@ public function store() $this->validate(); Customer::create([ + 'user_id' => $this->user_id, 'name' => $this->name, 'phone_number' => $this->phone_number, 'gender' => $this->gender, diff --git a/app/Livewire/Member/Overview.php b/app/Livewire/Member/Overview.php index 582a3a4..0e7bd64 100644 --- a/app/Livewire/Member/Overview.php +++ b/app/Livewire/Member/Overview.php @@ -2,6 +2,11 @@ namespace App\Livewire\Member; +use App\Livewire\Forms\Studio\Loyalty\CustomerForm; +use App\Models\Membership; +use App\Models\Tier; +use App\Traits\WithToast; +use Illuminate\Support\Facades\DB; use Livewire\Attributes\Layout; use Livewire\Attributes\Title; use Livewire\Component; @@ -10,11 +15,21 @@ #[Layout('components.layouts.member')] class Overview extends Component { + use WithToast; + + public CustomerForm $form; + + public bool $hasMemberData = false; + public bool $isVerified = false; public function mount() { + $this->hasMemberData = auth()->user()->customer()->exists(); + $this->isVerified = auth()->user()->hasVerifiedEmail(); + + $this->form->user_id = request()->routeIs('member.overview') ? auth()->id() : null; } public function checkEmailVerification() @@ -24,6 +39,25 @@ public function checkEmailVerification() $this->isVerified = auth()->user()->hasVerifiedEmail(); } + public function save() + { + DB::transaction(function () { + $this->form->store(); + + $this->hasMemberData = true; + + if (! auth()->user()->membership()->exists()) { + Membership::create([ + 'user_id' => auth()->id(), + 'tier_id' => Tier::orderBy('min_points')->first()->id, + 'tier_points' => 10, + ]); + } + }); + + $this->toast('Selamat, Anda telah menjadi member sekarang.'); + } + public function render() { return view('livewire.member.overview'); diff --git a/resources/views/livewire/member/overview.blade.php b/resources/views/livewire/member/overview.blade.php index c5a0555..d85f08a 100644 --- a/resources/views/livewire/member/overview.blade.php +++ b/resources/views/livewire/member/overview.blade.php @@ -2,69 +2,100 @@ Haloo, {{ auth()->user()?->customer?->name }} Selamat datang di Studio Yadi Parfum. -
- - - {{ auth()->user()?->membership?->tier?->name }} - - {{ auth()->user()?->membership?->tier_points }} Poin - + @if ($hasMemberData) +
+ + + {{ auth()->user()?->membership?->tier?->name }} + + {{ auth()->user()?->membership?->tier_points }} Poin + - -

Undang teman dan dapatkan hadiah menarik!

-
+ +

Undang teman dan dapatkan hadiah menarik!

+
- - Undang teman - Ambil Hadiah - -
+ + Undang teman + Ambil Hadiah + + - - Jelajahi Produk Kami + + Jelajahi Produk Kami - - Coba dan rasakan manfaat menggunakanan yadi parfum. - + + Coba dan rasakan manfaat menggunakanan yadi parfum. + - - Jelajahi - - Tanya Ahli - - + + Jelajahi + + Tanya Ahli + + - @if (!$isVerified) -
- - Silakan verifikasi email Anda agar bisa menikmati seluruh fitur kami. - + @if (!$isVerified) +
+ + Silakan verifikasi email Anda agar bisa menikmati seluruh fitur kami. + - - + - Verifikasi → - - - + Verifikasi → + + + +
+ @endif + + + Temukan keuntungan eksklusif dan manfaat spesial sebagai member. + + + + Lihat + + +
+ @else + Anda belum terdaftar menjadi member, silakan isi formulir di bawah ini. + + + +
+ + Nama * + + + + + + + + Jenis Kelamin * + + @foreach (\App\Enums\Gender::cases() as $gender) + + {{ $gender->label() }} + + @endforeach + + +
- @endif - - - Temukan keuntungan eksklusif dan manfaat spesial sebagai member. - - - - Lihat - - - -
+ Simpan + + @endif