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, []);
}
}