sigd/app/Observers/ActivityCrfObserver.php

34 lines
792 B
PHP

<?php
namespace App\Observers;
use App\Models\ActivityCrf;
use App\Models\ReferenceGwp;
class ActivityCrfObserver
{
public function saving(ActivityCrf $crf)
{
$gwp = $this->getGWPValues();
$co2eq =
($crf->co2 ? $crf->co2 * $gwp['CO2']->value : 0) +
($crf->ch4 ? $crf->ch4 * $gwp['CH4']->value : 0) +
($crf->n2o ? $crf->n2o * $gwp['N2O']->value : 0);
$crf->gwp_co2 = $gwp['CO2']->value;
$crf->gwp_ch4 = $gwp['CH4']->value;
$crf->gwp_n2o = $gwp['N2O']->value;
$crf->co2eq = $co2eq;
}
protected function getGWPValues()
{
$gwp = ReferenceGwp::whereHas('ar', function ($query) {
$query->isActive();
})->get();
return $gwp->keyBy('ghg_code');
}
}