<?php namespace Modules\Blog\Entities; use App\User; use App\Traits\Tenantable; use Carbon\Carbon; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Cache; use Illuminate\Database\Eloquent\Model; use Modules\Org\Entities\OrgBlogBranch; use Modules\Org\Entities\OrgBlogPosition; use Spatie\Translatable\HasTranslations; class Blog extends Model { use Tenantable; protected $guarded = ['id']; protected $dates = ['created_at', 'updated_at', 'authored_date_time']; use HasTranslations; public $translatable = ['title', 'description']; public function user() { return $this->belongsTo(User::class)->withDefault(); } public function category() { return $this->belongsTo(BlogCategory::class)->withDefault(); } public function comments() { return $this->hasMany(BlogComment::class)->where('type', 1)->orderByDesc('id'); } public static function boot() { parent::boot(); self::creating(function ($model) { $model->updateingDateTime($model); }); self::updating(function ($model) { $model->updateingDateTime($model); }); self::created(function ($model) { saasPlanManagement('blog_post', 'create'); if (function_exists('clearAllLangCache')) { clearAllLangCache('BlogPosList_'); } }); self::updated(function ($model) { if (function_exists('clearAllLangCache')) { clearAllLangCache('BlogPosList_'); } }); self::deleted(function ($model) { saasPlanManagement('blog_post', 'delete'); if (function_exists('clearAllLangCache')) { clearAllLangCache('BlogPosList_'); } }); } public function branches() { return $this->hasMany(OrgBlogBranch::class, 'blog_id'); } public function positions() { return $this->hasMany(OrgBlogPosition::class, 'blog_id'); } public function updateingDateTime($model): void { try { $dateTime = Carbon::parse($model->authored_date . ' ' . $model->authored_time); } catch (\Exception $exception) { $dateTime = null; } $model->authored_date_time = $dateTime; } public function userRead() { return $this->hasOne(UserBlog::class, 'blog_id')->where('user_id', Auth::id()); } }