JFIF x x C C " } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w !1AQ aq"2B #3Rbr{
File "Service.php"
Full Path: /var/www/laravel_filter/Modules/Service/Entities/Service.php
File size: 2.38 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Modules\Service\Entities;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use App\Models\User;
use App\Models\Wishlist;
use App\Models\Review;
use Auth;
class Service extends Model
{
use HasFactory;
protected $fillable = [];
protected $appends = ['title','description','features','seo_title','seo_description','average_rating','total_review'];
protected $hidden = ['front_translate'];
protected static function newFactory()
{
return \Modules\Service\Database\factories\ServiceFactory::new();
}
public function influencer(){
return $this->belongsTo(User::class)->select('id','name','username','status','is_banned','is_influencer','image');
}
public function category(){
return $this->belongsTo(Category::class);
}
public function translate(){
return $this->belongsTo(ServiceTranslation::class, 'id', 'service_id')->where('lang_code', admin_lang());
}
public function front_translate(){
return $this->belongsTo(ServiceTranslation::class, 'id', 'service_id')->where('lang_code', front_lang());
}
public function translations()
{
return $this->hasMany(ServiceTranslation::class, 'service_id');
}
public function getTitleAttribute()
{
return $this->front_translate->title;
}
public function getDescriptionAttribute()
{
return $this->front_translate->description;
}
public function getFeaturesAttribute()
{
return $this->front_translate->features;
}
public function getSeoTitleAttribute()
{
return $this->front_translate->seo_title;
}
public function getSeoDescriptionAttribute()
{
return $this->front_translate->seo_description;
}
public function is_wishlist($service_id){
$user = Auth::guard('web')->user();
$is_exist = Wishlist::where(['user_id' => $user->id, 'service_id' => $service_id])->count();
if($is_exist == 0) return false;
return true;
}
public function active_reviews(){
return $this->hasMany(Review::class)->where('status', 1);
}
public function getAverageRatingAttribute()
{
return $this->active_reviews()->avg('rating') ?: '0';
}
public function getTotalReviewAttribute()
{
return $this->active_reviews()->count();
}
}