sigd/app/Observers/ActivityGpcOutputObserver.php

37 lines
1.2 KiB
PHP

<?php
namespace App\Observers;
use App\Models\ActivityGpcOutput;
class ActivityGpcOutputObserver
{
public function saving(ActivityGpcOutput $gpc)
{
$gpcSum = $this->calculateSum($gpc);
$gpcBasic = $gpcSum - ($gpc->i_4_4 ?? 0) - ($gpc->ii_3_3 ?? 0) - ($gpc->ii_4_3 ?? 0);
$gpc->gpc_basic = $gpcBasic;
}
private function calculateSum(ActivityGpcOutput $gpc)
{
$fieldsToSum = [
'i_1_1', 'i_1_2', 'i_1_3', 'i_2_1', 'i_2_2', 'i_2_3', 'i_3_1', 'i_3_2', 'i_3_3', 'i_4_1',
'i_4_2', 'i_4_3', 'i_4_4', 'i_5_1', 'i_5_2', 'i_5_3', 'i_6_1', 'i_6_2', 'i_6_3', 'i_7_1', 'i_8_1',
'ii_1_1', 'ii_1_2', 'ii_1_3', 'ii_2_1', 'ii_2_2', 'ii_2_3', 'ii_3_1',
'ii_3_2', 'ii_3_3', 'ii_4_1', 'ii_4_2', 'ii_4_3', 'ii_5_1', 'ii_5_2', 'ii_5_3',
'iii_1_1', 'iii_1_2', 'iii_1_3', 'iii_2_1', 'iii_2_2', 'iii_2_3', 'iii_3_1', 'iii_3_2', 'iii_3_3',
'iii_4_1', 'iii_4_2', 'iii_4_3', 'iv_1', 'iv_2', 'v_1', 'v_2', 'v_3', 'vi_1',
'credits_i', 'credits_ii', 'credits_iii', 'credits_iv', 'credits_v', 'credits_vi',
];
$sum = 0;
foreach ($fieldsToSum as $field) {
$sum += $gpc->$field ?? 0;
}
return $sum;
}
}