File: /home/bdedition/public_html/core/app/Models/News.php
<?php
namespace App\Models;
use App\Constants\Status;
use App\Traits\GlobalStatus;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
class News extends Model
{
use GlobalStatus;
public $casts = ['tags' => 'array'];
public function user()
{
return $this->belongsTo(User::class)->withDefault();
}
public function category()
{
return $this->belongsTo(Category::class);
}
public function statusAdminCheck(): Attribute
{
return Attribute::make(
get: fn () => $this->admin_check == Status::NEWS_APPROVED
? '<span class="badge badge--success">' . trans('Approved') . '</span>'
: ($this->admin_check == Status::NEWS_PENDING ? '<span class="badge badge--warning">' . trans('Pending') . '</span>' : '<span class="badge badge--danger">' . trans('Rejected') . '</span>')
);
}
//Scopes
public function scopePending($query)
{
return $query->where('admin_check', Status::NEWS_PENDING);
}
public function scopeApproved($query)
{
return $query->where('admin_check', Status::NEWS_APPROVED);
}
public function scopeRejected($query)
{
return $query->where('admin_check', Status::NEWS_REJECTED);
}
public function scopeTrending($query)
{
return $query->where('trending', Status::YES);
}
public function scopeMustRead($query)
{
return $query->where('must_read', Status::YES);
}
public function scopeVideo($query)
{
return $query->where('have_video', Status::YES);
}
}