$notifications * * @method static Builder|Employee active() * * @mixin \Eloquent */ #[Fillable([ 'matricule', 'nom', 'prenom', 'code', 'start_date', 'end_date', 'etablissement', 'site', 'service', ])] class Employee extends Model { use Notifiable; /** @return \Illuminate\Database\Eloquent\Casts\Attribute */ protected function fullName(): Attribute { return Attribute::make(get: fn () => Str::title("{$this->nom} {$this->prenom}")); } /** @return \Illuminate\Database\Eloquent\Relations\BelongsTo<\App\Models\Customer,$this> */ public function customer(): BelongsTo { return $this->belongsTo(Customer::class); } #[\Override] protected function casts(): array { return [ 'code' => CodeCast::class, 'matricule' => MatriculeCast::class, 'last_sync' => 'datetime', 'start_date' => 'datetime', 'end_date' => 'datetime', 'etablissement' => ShopperEstablishmentCodeCast::class, 'site' => ShopperSiteCodeCast::class, 'service' => ShopperServiceCodeCast::class, ]; } /** @return \Illuminate\Database\Eloquent\Casts\Attribute */ protected function isActive(): Attribute { return Attribute::make( get: fn (): bool => $this->end_date?->greaterThanOrEqualTo(Date::now()) ?? true ); } /** * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ protected function scopeActive(Builder $query): Builder { return $query->where( fn ($q) => $q ->where('end_date', '>=', Date::now()) ->orWhereNull('end_date') ); } public function routeNotificationForMail(): string { return $this->customer?->email->value ?? ''; } }