Files
citrus-cms/app/Models/CalibrationLog.php
T
2026-04-28 21:14:25 +03:00

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();
}
}