Lae/app/Observers/BalanceObserver.php

42 lines
1.1 KiB
PHP
Raw Permalink Normal View History

2023-02-12 16:02:45 +00:00
<?php
namespace App\Observers;
use App\Events\Users;
use App\Models\Balance;
use App\Notifications\User\UserCharged;
class BalanceObserver
{
public function creating(Balance $balance): void
{
$balance->remaining_amount = 0;
2023-02-13 08:54:16 +00:00
$balance->order_id = date('YmdHis').'-'.$balance->user_id.'-'.rand(1000, 9999);
2023-02-12 16:02:45 +00:00
}
public function created(Balance $balance): void
{
broadcast(new Users($balance->user, 'balance.created', $balance));
}
public function updated(Balance $balance): void
{
if ($balance->isDirty('paid_at')) {
if ($balance->paid_at) {
2023-02-22 18:00:53 +00:00
$balance->load('user');
$balance->load('user.affiliateUser');
2023-02-12 16:02:45 +00:00
$balance->notify(new UserCharged());
broadcast(new Users($balance->user, 'balance.updated', $balance));
$balance->user->charge($balance->amount, $balance->payment, $balance->order_id);
2023-02-22 18:00:53 +00:00
if ($balance->user->affiliate_id) {
$balance->user->affiliateUser->addRevenue($balance->amount);
}
2023-02-12 16:02:45 +00:00
}
}
}
}