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