Gender::class, 'status' => EmploymentStatus::class, ]; } #[Scope] protected function withoutDeveloper(Builder $query): void { $query->whereHas('user', function ($q) { $q->whereDoesntHave('roles', function ($r) { $r->where('name', 'Developer'); }); }); } public static function generateEmployeeCode(): string { $prefix = 'EMP'; $year = date('Y'); $lastEmployee = self::where('code', 'like', "$prefix$year%") ->orderBy('code', 'desc') ->first(); if ($lastEmployee) { $lastNumber = (int) substr($lastEmployee->code, strlen($prefix) + 4); $newNumber = $lastNumber + 1; } else { $newNumber = 1; } $numberFormatted = str_pad($newNumber, 4, '0', STR_PAD_LEFT); return $prefix.$year.$numberFormatted; } public function user(): BelongsTo { return $this->belongsTo(User::class); } }