SliderPosition::class, 'type' => SliderType::class ]; /** * The attributes that should be cast. * * @var array */ protected $casts = [ 'title_color' => HtmlColor::class, 'title_color_bg' => HtmlColor::class, 'subtitle_color' => HtmlColor::class, 'subtitle_color_bg' => HtmlColor::class, 'link_color' => HtmlColor::class, 'link_color_bg' => HtmlColor::class, 'link_new_tab' => 'bool', 'status' => 'bool' ]; /** * Perform any actions required after the model boots. * * @return void */ protected static function booted() { static::creating(function (self $model) { ToolboxHelper::assertNoInternalBoUrls('link', $model->link); $model->picture = ToolboxHelper::storeImage($model, $model->picture); $model->order = self::whereType($model->type)->max('order') ?? 0; }); static::updating(function (self $model) { ToolboxHelper::assertNoInternalBoUrls('link', $model->link); if ($model->picture != $model->getOriginal('picture')) { $model->picture = ToolboxHelper::storeImage($model, $model->picture); } }); static::updated(function (self $model) { if ($model->picture != $model->getOriginal('picture')) { $model->picture = ToolboxHelper::removeOldImage($model, 'picture'); } }); static::deleting(function (self $model) { ToolboxHelper::removeImage($model, 'picture'); }); } // * METHODS /** * updated_at_date getter * * @return string */ public function getUpdatedAtDateAttribute(): string { return (new NiceDate())->get($this, 'updated_at', $this->updated_at, []); } }