Files
web-probindo/app/Models/Testimonial.php
T
afriadirahman 8c6dad2a31
tests / ci (push) Canceled after 0s
Admin Panel
2026-09-29 14:57:37 +07:00

64 lines
1.6 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
/**
* A client testimonial, written in both site languages.
*
* @property int $id
* @property string $quote_id
* @property string $quote_en
* @property string $role_id
* @property string $role_en
* @property string $organization_id
* @property string $organization_en
* @property bool $is_published
* @property int $sort_order
*/
#[Fillable([
'quote_id', 'quote_en', 'role_id', 'role_en',
'organization_id', 'organization_en', 'is_published', 'sort_order',
])]
class Testimonial extends Model
{
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'is_published' => 'boolean',
'sort_order' => 'integer',
];
}
/**
* @param Builder<Testimonial> $query
*/
public function scopePublished(Builder $query): void
{
$query->where('is_published', true)->orderBy('sort_order')->orderBy('id');
}
/**
* The testimonial in the visitor's language.
*
* @return array{id: int, quote: string, role: string, organization: string}
*/
public function localized(string $locale): array
{
$suffix = $locale === 'en' ? 'en' : 'id';
return [
'id' => $this->id,
'quote' => $this->{"quote_{$suffix}"},
'role' => $this->{"role_{$suffix}"},
'organization' => $this->{"organization_{$suffix}"},
];
}
}