You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
willaengine/app/Business.php

280 lines
6.7 KiB

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
// use Laravel\Scout\Searchable;
// use Conner\Tagging\Taggable;
// use Spatie\Permission\Traits\HasRoles;
// use App\Appended\Traites\UpdateModels;
// use App\Appended\Traites\GetDateAttributesTrait;
class Business extends Model
{
// use Searchable;
// use Taggable;
// use HasRoles;
// use UpdateModels;
// use GetDateAttributesTrait;
protected $guard_name = 'web';
protected $fillable = [
'verification', 'main_type', 'category_id', 'business_title_id', 'brand_en', 'brand_fa',
'slug', 'full_name', 'features', 'details', 'about', 'user_id', 'marketer_id',
'perpose', 'city_id', 'district_id', 'payment_methods', 'free_shipping_for', 'latitude', 'longitude',
'phones', 'special_page',
'template_id', 'rate'
];
public function likedThis()
{
if (auth()->check() && $this->likes()->get()) {
foreach ($this->likes()->get() as $like) {
if (auth()->user()->id === $like->user_id)
return true;
}
return false;
}
return false;
}
public function setDetailsAttribute($value)
{
$this->attributes['details'] = json_encode($value, JSON_UNESCAPED_UNICODE);
}
public function setFeaturesAttribute($value)
{
$this->attributes['features'] = json_encode($value, JSON_UNESCAPED_UNICODE);
}
public function setPhonesAttribute($value)
{
$this->attributes['phones'] = json_encode($value, JSON_UNESCAPED_UNICODE);
}
public function getPhonesAttribute()
{
return json_decode($this->attributes['phones']);
}
public function getDetailsAttribute()
{
$details = json_decode($this->attributes['details']);
if ($details and isset($details->PaymentMethods)) {
$configMethods = config('SPconf.PaymentMethods');
$methods = [];
foreach ($details->PaymentMethods as $PaymentMethod) {
if (array_has($configMethods, $PaymentMethod)) {
$methods[$PaymentMethod] = $configMethods[$PaymentMethod];
}
}
$details->PaymentMethods = $methods;
}
return $details;
}
public function getFeaturesAttribute()
{
return json_decode($this->attributes['features']);
}
public function business_items()
{
return $this->hasMany('App\BusinessItem');
}
public function verified_business_items()
{
return $this->hasMany('App\BusinessItem')->where('verification', 1);
}
public function portfolios()
{
return $this->hasMany('App\Portfolio');
}
public function contact_messages()
{
return $this->hasMany('App\ContactMessage');
}
public function reservations()
{
return $this->hasMany('App\Reservation');
}
public function business_title()
{
return $this->belongsTo('App\BusinessTitle');
}
public function addresses()
{
return $this->morphMany('App\Address', 'addressable');
}
public function user()
{
return $this->belongsTo('App\User');
}
public function categories()
{
return $this->belongsToMany('App\Category')->withTimestamps();
}
public function category()
{
return $this->belongsTo('App\Category');
}
public function shopping_carts()
{
return $this->hasMany('App\ShoppingCart');
}
public function orders()
{
return $this->hasMany('App\Order');
}
public function city()
{
return $this->belongsTo('App\City');
}
public function district()
{
return $this->belongsTo('App\District');
}
public function data()
{
return $this->hasMany('App\Data');
}
public function template()
{
return $this->hasMany('App\SpUserTemplate');
}
public function user_templates()
{
return $this->hasMany('App\SpUserTemplate');
}
public function tags()
{
return $this->morphToMany('App\Tag', 'taggable');
}
public function news()
{
return $this->hasMany('App\News');
}
public function likes()
{
return $this->morphMany('App\Like', 'likeable');
}
public function toSearchableArray()
{
return [
'id' => $this->id,
'brand_en' => $this->brand_en,
'brand_fa' => $this->brand_fa,
'city_id' => $this->city_id,
];
}
/**
* Get all of the post's comments.
*/
public function comments()
{
return $this->morphMany('App\Comment', 'commentable')->orderBy('updated_at', 'desc');
}
public function feedbacks()
{
return $this->morphMany('App\Feedback', 'feedbackable')->orderBy('updated_at', 'desc');
}
public function members()
{
return $this->belongsToMany('App\user', 'business_has_user', 'business_id', 'user_id');
}
public function orginalImages()
{
return $this->morphToMany('App\Gallery', 'uploadable');
}
public function images()
{
return $this->morphToMany('App\Gallery', 'uploadable');
}
public function files()
{
return $this->hasMany('App\Gallery')->where('parent_id', null);
}
public function gallery()
{
return $this->morphToMany('App\Gallery', 'uploadable')->wherePivot('image_role', 'Gallery')->where('parent_id', null);
}
public function title_image()
{
return $this->morphToMany('App\Gallery', 'uploadable')->wherePivot('image_role', 'logo')->where('parent_id', null);
}
public function orginalLogo()
{
return $this->morphToMany('App\Gallery', 'uploadable')->wherePivot('image_role', 'logo')->where('parent_id', null);
}
public function logo()
{
return $this->morphToMany('App\Gallery', 'uploadable')->wherePivot('image_role', 'logo')->where('parent_id', null);
}
public function orginalBanner()
{
return $this->morphToMany('App\Gallery', 'uploadable')->wherePivot('image_role', 'banner')->where('parent_id', null);
}
public function banner()
{
return $this->morphToMany('App\Gallery', 'uploadable')->wherePivot('image_role', 'banner')->where('parent_id', null);
}
public function special_content_options()
{
return $this->morphMany('App\SpecialContentOption', 'special_content_optionable');
}
public function social_media()
{
return $this->hasOne('App\SocialMedia');
}
public function events()
{
return $this->hasMany('App\Event');
}
public function attributes()
{
return $this->belongsToMany('App\Attribute');
}
}