50 lines
2.7 KiB
PHP
50 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Models\Concerns\UsesStringIds;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
|
|
|
class Business extends Model
|
|
{
|
|
use UsesStringIds;
|
|
|
|
public const CREATED_AT = 'createdAt';
|
|
public const UPDATED_AT = 'updatedAt';
|
|
|
|
protected $table = 'Business';
|
|
|
|
protected $fillable = [
|
|
'slug', 'name', 'shortName', 'description', 'logoUrl', 'coverImageUrl',
|
|
'faviconUrl', 'appIconUrl', 'themeColor', 'backgroundColor', 'phone',
|
|
'email', 'website', 'instagramUrl', 'facebookUrl', 'timezone', 'currency',
|
|
'locale', 'bottomNavShowLabels', 'icon192Url', 'icon512Url', 'maskableIcon192Url',
|
|
'maskableIcon512Url', 'splashScreens', 'welcomeBackgroundDesktopUrl',
|
|
'welcomeBackgroundMobileUrl', 'googlePlaceId', 'googleRating', 'googleRatingCount',
|
|
];
|
|
|
|
protected function casts(): array
|
|
{
|
|
return ['bottomNavShowLabels' => 'boolean', 'splashScreens' => 'array', 'googleRating' => 'decimal:1'];
|
|
}
|
|
|
|
public function domains(): HasMany { return $this->hasMany(BusinessDomain::class, 'businessId'); }
|
|
public function locations(): HasMany { return $this->hasMany(BusinessLocation::class, 'businessId'); }
|
|
public function hours(): HasMany { return $this->hasMany(BusinessHours::class, 'businessId'); }
|
|
public function settings(): HasOne { return $this->hasOne(BusinessSettings::class, 'businessId'); }
|
|
public function bookingRule(): HasOne { return $this->hasOne(BookingRule::class, 'businessId'); }
|
|
public function staff(): HasMany { return $this->hasMany(StaffProfile::class, 'businessId'); }
|
|
public function serviceCategories(): HasMany { return $this->hasMany(ServiceCategory::class, 'businessId'); }
|
|
public function services(): HasMany { return $this->hasMany(Service::class, 'businessId'); }
|
|
public function appointments(): HasMany { return $this->hasMany(Appointment::class, 'businessId'); }
|
|
public function loyaltyProgramme(): HasOne { return $this->hasOne(LoyaltyProgramme::class, 'businessId'); }
|
|
public function staffInvitations(): HasMany { return $this->hasMany(StaffInvitation::class, 'businessId'); }
|
|
public function notifications(): HasMany { return $this->hasMany(Notification::class, 'businessId'); }
|
|
public function pushSubscriptions(): HasMany { return $this->hasMany(PushSubscription::class, 'businessId'); }
|
|
public function mediaAssets(): HasMany { return $this->hasMany(MediaAsset::class, 'businessId'); }
|
|
public function galleryImages(): HasMany { return $this->hasMany(BusinessGalleryImage::class, 'businessId'); }
|
|
public function reviews(): HasMany { return $this->hasMany(Review::class, 'businessId'); }
|
|
}
|