Initial PHP rebuild of the app
This commit is contained in:
690 files changed
+33944
-12046
No files matched your search
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\StaffStatus;
|
||||
use App\Enums\Permission;
|
||||
use App\Models\Concerns\UsesStringIds;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
|
||||
class StaffProfile extends Model
|
||||
{
|
||||
use UsesStringIds;
|
||||
|
||||
public const CREATED_AT = 'createdAt';
|
||||
public const UPDATED_AT = 'updatedAt';
|
||||
protected $table = 'StaffProfile';
|
||||
protected $fillable = ['userId', 'businessId', 'roleId', 'bio', 'status', 'isBookableOnline'];
|
||||
protected function casts(): array { return ['status' => StaffStatus::class, 'isBookableOnline' => 'boolean']; }
|
||||
public function user(): BelongsTo { return $this->belongsTo(User::class, 'userId'); }
|
||||
public function business(): BelongsTo { return $this->belongsTo(Business::class, 'businessId'); }
|
||||
public function role(): BelongsTo { return $this->belongsTo(Role::class, 'roleId'); }
|
||||
public function services(): BelongsToMany { return $this->belongsToMany(Service::class, 'StaffService', 'staffId', 'serviceId')->withPivot(['priceOverride', 'durationOverrideMinutes']); }
|
||||
public function workingHours(): HasMany { return $this->hasMany(WorkingHours::class, 'staffId'); }
|
||||
public function breaks(): HasMany { return $this->hasMany(StaffBreak::class, 'staffId'); }
|
||||
public function timeOff(): HasMany { return $this->hasMany(TimeOff::class, 'staffId'); }
|
||||
public function appointments(): HasMany { return $this->hasMany(Appointment::class, 'staffId'); }
|
||||
public function invitation(): HasOne { return $this->hasOne(StaffInvitation::class, 'staffId'); }
|
||||
public function calendarConnection(): HasOne { return $this->hasOne(StaffCalendarConnection::class, 'staffId'); }
|
||||
public function authoredLoyaltyTransactions(): HasMany { return $this->hasMany(LoyaltyTransaction::class, 'authoredByStaffId'); }
|
||||
public function authoredCustomerNotes(): HasMany { return $this->hasMany(CustomerNote::class, 'authorStaffId'); }
|
||||
public function redeemedLoyaltyRewards(): HasMany { return $this->hasMany(LoyaltyReward::class, 'redeemedByStaffId'); }
|
||||
|
||||
public function hasPermission(Permission $permission): bool
|
||||
{
|
||||
return $this->role?->permissions->contains('permission', $permission) ?? false;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user