54 lines
1.8 KiB
PHP
54 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Member;
|
|
|
|
use App\Models\ReferralUsage;
|
|
use Illuminate\Contracts\View\View;
|
|
use Livewire\Attributes\Layout;
|
|
use Livewire\Attributes\Title;
|
|
use Livewire\Component;
|
|
|
|
#[Title('Referral')]
|
|
#[Layout('components.layouts.member')]
|
|
class Referral extends Component
|
|
{
|
|
/**
|
|
* Target spending for referral reward.
|
|
*/
|
|
public const TARGET_SPENDING = 50000;
|
|
|
|
public function render(): View
|
|
{
|
|
$user = auth()->user();
|
|
$referralCode = $user->referralCode;
|
|
|
|
$usages = ReferralUsage::with(['user', 'user.customer', 'user.membership'])
|
|
->where('referral_code_id', $referralCode->id)
|
|
->latest()
|
|
->get()
|
|
->map(function ($usage) {
|
|
$spending = $usage->user?->membership?->total_spending ?? 0;
|
|
$progress = min(100, ($spending / self::TARGET_SPENDING) * 100);
|
|
$isRewardEarned = $spending >= self::TARGET_SPENDING;
|
|
|
|
return [
|
|
'name' => $usage->user?->customer?->name ?? 'Perfumers',
|
|
'joined_at' => $usage->created_at,
|
|
'spending' => $spending,
|
|
'progress' => $progress,
|
|
'is_reward_earned' => $isRewardEarned,
|
|
];
|
|
});
|
|
|
|
$message = 'Halo! Ayo bergabung di Yadi Parfum dan dapatkan keuntungan eksklusif. Gunakan kode referral saya: '.($referralCode?->code ?? '').' saat mendaftar! '.url('/auth/register');
|
|
$whatsappUrl = 'https://wa.me/?text='.urlencode($message);
|
|
|
|
return view('livewire.member.referral', [
|
|
'referralCode' => $referralCode,
|
|
'usages' => $usages,
|
|
'whatsappUrl' => $whatsappUrl,
|
|
'targetSpending' => self::TARGET_SPENDING,
|
|
]);
|
|
}
|
|
}
|