parfum/app/Livewire/Member/Referral.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,
]);
}
}