55 lines
1.5 KiB
PHP
55 lines
1.5 KiB
PHP
<?php
|
||
|
||
namespace App\Observers;
|
||
|
||
use App\Events\Users;
|
||
use App\Models\Subscription;
|
||
|
||
class SubscriptionObserve
|
||
{
|
||
public function creating(Subscription $subscription): void
|
||
{
|
||
// 如果没有设置 status,就设置为 draft
|
||
if (! $subscription->status) {
|
||
$subscription->status = 'draft';
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Handle the Subscription "created" event.
|
||
*/
|
||
public function created(Subscription $subscription): void
|
||
{
|
||
broadcast(new Users($subscription->user, 'subscription.created', $subscription));
|
||
}
|
||
|
||
public function updating(Subscription $subscription): void
|
||
{
|
||
// 如果 status 是 expired, expired_at 为空,就设置为当前时间
|
||
if ($subscription->status === 'expired' && ! $subscription->expired_at) {
|
||
$subscription->expired_at = now();
|
||
}
|
||
|
||
// 如果 expired_at 和 trial_ends_at 为空,就当作过期处理
|
||
if ($subscription->status !== 'draft' && ! $subscription->expired_at && ! $subscription->trial_ends_at) {
|
||
$subscription->status = 'expired';
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Handle the Subscription "updated" event.
|
||
*/
|
||
public function updated(Subscription $subscription): void
|
||
{
|
||
broadcast(new Users($subscription->user, 'subscription.updated', $subscription));
|
||
}
|
||
|
||
/**
|
||
* Handle the Subscription "deleted" event.
|
||
*/
|
||
public function deleted(Subscription $subscription): void
|
||
{
|
||
broadcast(new Users($subscription->user, 'subscription.deleted', $subscription));
|
||
}
|
||
}
|