Car-Repairs-Shop/app/Models/TechnicianSkill.php
sackey e839d40a99
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run
Initial commit
2025-07-30 17:15:50 +00:00

132 lines
3.4 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class TechnicianSkill extends Model
{
use HasFactory;
protected $fillable = [
'technician_id',
'skill_name',
'category',
'proficiency_level',
'certified_date',
'certification_expires',
'certification_body',
'notes',
'is_primary_skill',
];
protected $casts = [
'certified_date' => 'date',
'certification_expires' => 'date',
'is_primary_skill' => 'boolean',
];
public function technician(): BelongsTo
{
return $this->belongsTo(Technician::class);
}
public function getProficiencyLabelAttribute(): string
{
return match($this->proficiency_level) {
1 => 'Beginner',
2 => 'Basic',
3 => 'Intermediate',
4 => 'Advanced',
5 => 'Expert',
default => 'Unknown',
};
}
public function isCertificationExpiring(int $days = 30): bool
{
if (!$this->certification_expires) {
return false;
}
return $this->certification_expires->diffInDays(now()) <= $days;
}
public function isCertificationExpired(): bool
{
if (!$this->certification_expires) {
return false;
}
return $this->certification_expires->isPast();
}
public static function getSkillCategories(): array
{
return [
'engine' => 'Engine & Powertrain',
'electrical' => 'Electrical Systems',
'transmission' => 'Transmission',
'brakes' => 'Brakes & Suspension',
'hvac' => 'HVAC & Climate',
'diagnostics' => 'Diagnostics',
'bodywork' => 'Body & Paint',
'electronics' => 'Electronics & Infotainment',
'hybrid' => 'Hybrid & Electric',
'general' => 'General Maintenance',
];
}
public static function getProficiencyLevels(): array
{
return [
1 => 'Beginner',
2 => 'Basic',
3 => 'Intermediate',
4 => 'Advanced',
5 => 'Expert',
];
}
public static function getCommonSkills(): array
{
return [
'engine' => [
'Engine Diagnostics',
'Engine Rebuild',
'Timing Belt Replacement',
'Oil Change',
'Cooling System Repair',
],
'electrical' => [
'Wiring Repair',
'Battery Replacement',
'Alternator Repair',
'Starter Motor Repair',
'Lighting Systems',
],
'transmission' => [
'Manual Transmission Repair',
'Automatic Transmission Service',
'Clutch Replacement',
'Transmission Flush',
],
'brakes' => [
'Brake Pad Replacement',
'Brake Fluid Flush',
'Rotor Replacement',
'Suspension Repair',
'Shock Absorber Replacement',
],
'diagnostics' => [
'OBD-II Diagnostics',
'Computer Scan',
'Emission Testing',
'Performance Testing',
],
];
}
}