public static function calculateBeforeUpdateOrCreate(array &$attributes, array $values = []) { if (array_key_exists(config("constants.flowPhase"), $attributes) && array_key_exists(config("constants.euIdColumn"), $attributes) && array_key_exists("OCCUR_DATE", $attributes)) { $fdcValues = EnergyUnitDataFdcValue::where($attributes)->first(); $active_hrs = $fdcValues["ACTIVE_HRS"]; $flow_phase = $attributes[config("constants.flowPhase")]; $object_id = $attributes[config("constants.euIdColumn")]; $occur_date = $attributes['OCCUR_DATE']; $rowTest = static::getEUTest($object_id, $occur_date); $theoFields = CfgFieldProps::getConfigFields(static::getTableName())->get(); $theoFieldArray = array_column($theoFields->toArray(), 'COLUMN_NAME'); if ($rowTest && is_numeric($active_hrs)) { $rat = $active_hrs / 24; foreach ($theoFieldArray as $field) { $_v = null; if ($flow_phase == 1) { if ($field == 'EU_DATA_GRS_VOL') { $_v = $rat * $rowTest->EU_TEST_LIQ_HC_VOL; } if ($field == 'EU_DATA_GRS_MASS') { $_v = $rat * $rowTest->EU_TEST_LIQ_HC_MASS; } } else { if ($flow_phase == 2) { if ($field == 'EU_DATA_GRS_VOL') { $_v = $rat * $rowTest->EU_TEST_GAS_HC_VOL; } if ($field == 'EU_DATA_GRS_MASS') { $_v = $rat * $rowTest->EU_TEST_GAS_HC_MASS; } } else { if ($flow_phase == 21) { if ($field == 'EU_DATA_GRS_VOL') { $_v = $rat * $rowTest->EU_TEST_GAS_LIFT_VOL; } } else { if ($flow_phase == 5) { if ($field == 'EU_DATA_GRS_VOL') { $_v = $rat * $rowTest->EU_TEST_LIQ_1_VOL; } } else { if ($flow_phase == 3) { if ($field == 'EU_DATA_GRS_VOL') { $_v = $rat * $rowTest->EU_TEST_WTR_VOL; } if ($field == 'EU_DATA_GRS_MASS') { $_v = $rat * $rowTest->EU_WTR_MASS; } } } } } } $values[$field] = $_v; } } } return $values; }
public static function calculateBeforeUpdateOrCreate(array &$attributes, array $values = []) { if (array_key_exists("FLOW_ID", $attributes) && array_key_exists("OCCUR_DATE", $attributes)) { $object_id = $attributes["FLOW_ID"]; $occur_date = $attributes["OCCUR_DATE"]; $fields = CfgFieldProps::getConfigFields(FlowDataFdcValue::getTableName())->where('COLUMN_NAME', '!=', 'CTV')->get(); $theoFields = CfgFieldProps::getConfigFields(FlowDataTheor::getTableName())->get(); $fieldArray = array_column($fields->toArray(), 'COLUMN_NAME'); $theoFieldArray = array_column($theoFields->toArray(), 'COLUMN_NAME'); $fdcValues = FlowDataFdcValue::where(array(['FLOW_ID', $object_id], ['OCCUR_DATE', $occur_date]))->select($fieldArray)->first(); if ($fdcValues) { foreach ($theoFieldArray as $field) { if (!array_key_exists($field, $values)) { $values[$field] = $fdcValues->{$field}; } } } } return $values; }