model = $model; } public function save($code, $inventoryYear) { try { $dataBatch = []; $ws = $this->getWs($code); $years = activityYearRange($inventoryYear); if ($ws && class_basename($ws->model) == 'Waste4C1') { foreach ($years as $year) { $dataBatch = array_merge($dataBatch, $this->calcAndSave($inventoryYear, $year, $ws)); } } else { throw new \Exception("Forbidden"); } return $dataBatch; } catch (\Exception $e) { throw $e; } } public function calcAndSave($inventoryYear, $activityYear, $ws) { $dataForms = []; $sector = $this->sectorCode; $code = $this->formCode; $wsCode = $ws->ws_code; try { // ambil data aktivitas $population = ActivityFormDetail::getValue($inventoryYear, $activityYear, $sector, $code, 'jumlah_penduduk'); $fraction = ActivityFormDetail::getValue($inventoryYear, $activityYear, $sector, 'pengelolaan_sampah', 'dibakar'); $waste_rate = ActivityFormDetail::getValue($inventoryYear, $activityYear, $sector, 'sampah', 'laju_timbulan_sampah'); $ef_b_frac = ReferenceEf::getValue('laju_timbulan_sampah', 'b_frac'); $msw_b = $population * ($fraction / 100) * $waste_rate * ($ef_b_frac / 100) / 1000; $no = 1; $dataForm = [ 'inventory_year' => $inventoryYear, 'activity_year' => $activityYear, 'category' => $wsCode, 'population' => $population, 'fraction' => $fraction, 'msw_p' => $waste_rate, 'ef_b_frac' => $ef_b_frac, 'msw_b' => $msw_b, 'row_num' => $no++, ]; $this->createOrUpdate([ 'inventory_year' => $inventoryYear, 'activity_year' => $activityYear, 'category' => $wsCode, 'row_status' => 1, ], $dataForm); $dataForms[] = $dataForm; return $dataForms; } catch (\Exception $e) { throw $e; } } }