37 lines
1.2 KiB
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;
|
|
}
|
|
}
|