File: D:/HostingSpaces/SBogers95/rentman.io/app/Komma/Announcements/Models/Announcement.php
<?php
/**
* @author Komma <info@komma.pro>
* @copyright (c) 2012-2016, Komma
*/
namespace App\Komma\Announcements\Models;
use App\Helpers\KommaHelpers;
use App\Komma\Kms\Core\Attributes\Models\Traits\HasThumbnailInterface;
use App\Komma\Kms\Core\Attributes\Models\Traits\HasThumbnailTrait;
use App\Komma\Kms\Core\Entities\DisplayNameInterface;
use App\Komma\Kms\Core\Entities\DisplayNameTrait;
use App\Komma\Languages\Models\Language;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
/**
* Class Page
*
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Komma\Languages\Models\Language[] $languages
* @mixin \Eloquent
* @property int $id
* @property \Carbon\Carbon|null $created_at
* @property \Carbon\Carbon|null $updated_at
* @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Announcements\Models\Announcement whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Announcements\Models\Announcement whereDate($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Announcements\Models\Announcement whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Announcements\Models\Announcement whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Announcements\Models\Announcement newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Announcements\Models\Announcement newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Announcements\Models\Announcement query()
*/
class Announcement extends Model implements DisplayNameInterface, HasThumbnailInterface
{
use DisplayNameTrait;
use HasThumbnailTrait;
protected $class = self::class;
protected $fillable = ['active', 'type', 'message', 'url', 'language_id'];
protected $casts = [
'country_ids' => 'array',
'target_blank' => 'bool',
];
public static $types = [
'new',
'update',
'info',
'alert',
'warning',
'reward',
'deal',
];
/**
* @return belongsTo relation That resolves to a Language model
* @see Language
*/
public function language():BelongsTo
{
return $this->belongsTo(Language::class);
}
/**
* Returns the 2 character length iso 2 code of the language of the model
*
* @return string
*/
public function getLanguageIso()
{
if (isset($this->language)) {
return $this->language->iso_2;
}
}
public function getDisplayName(): ?string
{
return strtoupper($this->getLanguageIso()).' - '.KommaHelpers::str_limit_full_word($this->message, 55);
}
/**
* @return string
*/
public function getSidebarName():string
{
return $this->getDisplayName();
}
}