sigd/app/Observers/ActivityGpcObserver.php

34 lines
792 B
PHP

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