84 lines
2.2 KiB
PHP
84 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Carbon\Carbon;
|
|
|
|
class CalibrationLog extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $table = 'calibration_logs';
|
|
|
|
protected $fillable = [
|
|
'certification_document',
|
|
'user_guide',
|
|
'instrument',
|
|
'discipline',
|
|
'description',
|
|
'item_no',
|
|
'equipment_name',
|
|
'manufacturer',
|
|
'model_no',
|
|
'serial_no',
|
|
'quantity',
|
|
'passport_certificate_no',
|
|
'place_of_calibration_verification',
|
|
'calibrated_by',
|
|
'calibration_frequency',
|
|
'calibration_certificate',
|
|
'calibration_certificate_no',
|
|
'calibration_date',
|
|
'calibration_due_date',
|
|
'deviation_ratio',
|
|
'status',
|
|
'remarks',
|
|
'comments',
|
|
'download',
|
|
'source_id',
|
|
'source_module',
|
|
];
|
|
|
|
/**
|
|
* Calculate calibration_due_date when calibration_date or calibration_frequency changes
|
|
*/
|
|
protected function calculateDueDate()
|
|
{
|
|
if ($this->calibration_date && $this->calibration_frequency) {
|
|
try {
|
|
$calibrationDate = Carbon::parse($this->calibration_date);
|
|
$frequency = (int) $this->calibration_frequency;
|
|
|
|
if ($frequency > 0) {
|
|
$this->calibration_due_date = $calibrationDate->copy()->addDays($frequency)->format('Y-m-d');
|
|
}
|
|
} catch (\Exception $e) {
|
|
// If date parsing fails, don't set due_date
|
|
// Log error if needed: \Log::error('Calibration date calculation failed: ' . $e->getMessage());
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Mutator: Calculate due_date when calibration_date is set
|
|
*/
|
|
public function setCalibrationDateAttribute($value)
|
|
{
|
|
$this->attributes['calibration_date'] = $value;
|
|
$this->calculateDueDate();
|
|
}
|
|
|
|
/**
|
|
* Mutator: Calculate due_date when calibration_frequency is set
|
|
*/
|
|
public function setCalibrationFrequencyAttribute($value)
|
|
{
|
|
$this->attributes['calibration_frequency'] = $value;
|
|
$this->calculateDueDate();
|
|
}
|
|
}
|
|
|
|
|