*/ protected $fillable = [ 'type', 'content', 'customer_id' ]; /** * The attributes that should be cast. * * @var array */ protected $casts = [ 'type' => NotificationType::class ]; // * METHODS /** * Created at nice date. * * @return \Illuminate\Database\Eloquent\Casts\Attribute */ public function createdAtNiceDate(): \Illuminate\Database\Eloquent\Casts\Attribute { return Attribute::make( get: fn() => (new NiceDate())->get(null, '', $this->created_at, []) ); } /** * Get notifications. * * @return void */ public static function getNotifications(): void { if (!Auth::guard('club')->check()) { return; } /** @var \App\Models\Customer $customerModel */ $customerModel = Auth::guard('club')->user(); $notifications = $customerModel->getAllNotifications(); View::share('notifications', count($notifications) - $customerModel->readNotifications()->count()); View::share('notificationsList', $notifications); } // * RELATIONSHIPS /** * Get the customer that owns the Notifications. * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function customer(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Customer::class); } /** * Polymorphic relation : Get the parent model. * * @return \Illuminate\Database\Eloquent\Relations\MorphTo */ public function notifiable(): \Illuminate\Database\Eloquent\Relations\MorphTo { return $this->morphTo(); } }