$web_coupons Array of web coupons * @property array $notification_emails Array of email to notify when there's a winnner * @property boolean $winning_proof Is the winning proof needed * @property-read \Illuminate\Support\Carbon $created_at Creation Date. * @property-read \Illuminate\Support\Carbon $updated_at Last update Date. */ class Settings extends Model { use IsCachedAsCollection; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'company', 'start_date', 'end_date', 'nb_participation_player', 'nb_participation_ip', 'nb_unique_code_use', 'use_ean_codes', 'activated_teaser', 'activated_close_page', 'close_page_active_date', 'redirect_close', 'discounts_activated', 'discounts_site', 'discounts_campaign', 'web_coupons', 'notification_emails', 'winning_proof', 'analytics', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'start_date' => 'datetime', 'end_date' => 'datetime', 'close_page_active_date' => 'datetime', 'web_coupons' => AsArrayOfDiscount::class, 'notification_emails' => 'array', ]; /** * Perform any actions required after the model boots. * * @return void */ protected static function booted() { static::created(function () { self::removeCached(); }); static::updated(function (self $model) { self::removeCached(); FileStorageHelper::removeOldFiles( $model->fetchCouponsPictures(true), $model->fetchCouponsPictures() ); }); static::deleted(function () { self::removeCached(); }); } // * METHODS /** * Fetch all widget Files * * @param boolean $useOldAttribute * @return array */ public function fetchCouponsPictures(bool $useOldAttribute = false): array { $files = []; \collect(!$useOldAttribute ? $this->web_coupons : $this->getOriginal('web_coupons')) ->each(function (Discount $coupon) use (&$files) { $files = \array_merge($files, [$coupon->picture]); }); return FileStorageHelper::onlyUploadedFilesWithFileStorageHelper(collect($files)->filter()->all()); } }