parfum/app/Models/Employee.php
Yoga Pangestu c2e2b85070 feat(user): fitur user dan employee
-crud
-membuat fungsi untuk generate kode pegawai di model Employee
-menyesuaikan migrasi users dan employees
-menyesuaikan value seeder dengan migrasi baru
2025-09-24 19:38:59 +07:00

55 lines
1.3 KiB
PHP

<?php
namespace App\Models;
use App\Enums\EmploymentStatus;
use App\Enums\Gender;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
class Employee extends Model
{
use HasFactory, SoftDeletes;
protected $guarded = ['id'];
protected function casts(): array
{
return [
'gender' => Gender::class,
'birthdate' => 'date',
'hire_date' => 'date',
'resign_date' => 'date',
'status' => EmploymentStatus::class,
];
}
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);
}
}