customer_level_id == '') { $basic = CustomerLevel::where('key', CustomerLevel::BASIC)->first(); $customer->customer_level_id = $basic->id; $customer->referral_code = Str::upper(Str::random(6)); CustomerLevelHistory::create([ 'customer_id' => $customer->id, 'customer_level_id' => $basic->id, 'date_time' => now(), ]); } }); static::updating(function (Customer $customer) { if ($customer->isDirty('customer_level_id')) { $level = CustomerLevel::find($customer->customer_level_id); $customer->customer_level_id = $level->id; CustomerLevelHistory::create([ 'customer_id' => $customer->id, 'customer_level_id' => $level->id, 'date_time' => now(), ]); } }); } public function imageUrl(): Attribute { return Attribute::make( get: function () { if ($this->google_id != null && $this->image == null) { $user = json_decode($this->google_oauth_response); return $user?->avatar; } if ($this->image != null) { return asset($this->image); } return asset('sample/avatar.svg'); } ); } public function displayPhone(): Attribute { return Attribute::make(get: function () { if ($this->phone === null) { return ' - '; } return '+62' . $this->phone; }); } public function displayDeposit(): Attribute { return Attribute::make(get: function () { return number_format($this->deposit_balance, 0, ',', '.'); }); } public function displayCoin(): Attribute { return Attribute::make(get: function () { return number_format($this->coin_balance, 0, ',', '.'); }); } public function level() { return $this->belongsTo(CustomerLevel::class, 'customer_level_id'); } public function sales() { return $this->hasMany(Sale::class); } public function deposites() { return $this->hasMany(DepositHistory::class); } public function coins() { return $this->hasMany(CoinHistory::class); } public function customerRefferals() { return $this->hasMany(CustomerRefferal::class); } }