*/ use BumpsContentVersion, HasFactory, HasImages, HasRevisions, HasTranslations, SoftDeletes; /** @var array */ public array $translatable = ['quote', 'author_role']; protected function casts(): array { return [ 'is_public' => 'boolean', 'position' => 'integer', 'given_at' => 'date', ]; } /** * @return array */ public function imageAttributes(): array { return ['avatar']; } /** * @return BelongsTo */ public function avatarMedia(): BelongsTo { return $this->imageRelation('avatar'); } /** * @return BelongsTo */ public function client(): BelongsTo { return $this->belongsTo(Client::class); } /** * @return BelongsTo */ public function project(): BelongsTo { return $this->belongsTo(Project::class); } /** * @return BelongsTo */ public function service(): BelongsTo { return $this->belongsTo(Service::class); } /** * Whether the text being shown is the one that was actually said. * * A translated quote is words put in somebody's mouth, so the frontend is * told, and can say "translated from Spanish" instead of pretending. */ public function isOriginal(?string $locale = null): bool { return ($locale ?? app()->getLocale()) === $this->original_locale; } /** * @param Builder<$this> $query * @return Builder<$this> */ public function scopePublic(Builder $query): Builder { return $query->where('is_public', true); } }