Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 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;
 }