34 lines
792 B
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');
|
|
}
|
|
}
|