protected static function forecastMergeToTimezoneToDate($city, $toDate) { $dateHelper = new DateHelper(); $forecastRes = ForecastTable::getList(array('filter' => array('CITY_ID' => $city['ID'], '>=DATETIME_FROM' => $toDate . ' 00:00:00', '<=DATETIME_FROM' => $toDate . ' 23:59:59'))); //msDebug($forecastRes); $arTemp = $forecastRes; $forecastRes = array(); foreach ($arTemp as $ar_temp) { $key = ''; list($date, $time) = explode(' ', $ar_temp['DATETIME_FROM']); $time = explode(':', $time); $time[0] = intval($time[0]); $key .= $time[0] . '_'; list($date, $time) = explode(' ', $ar_temp['DATETIME_TO']); $time = explode(':', $time); $time[0] = intval($time[0]); $key .= $time[0]; $forecastRes[$key] = $ar_temp; } msDebug($forecastRes); for ($i = 0; $i < 24; $i += 6) { $i3 = $i + 3; $i6 = $i + 6; if ($i6 == 24) { $i6 = 0; } if (isset($forecastRes[$i . '_' . $i3]) && isset($forecastRes[$i3 . '_' . $i6])) { $forecastFirst = $forecastRes[$i . '_' . $i3]; $forecastSecond = $forecastRes[$i3 . '_' . $i6]; } elseif (isset($forecastRes[$i . '_' . $i3]) && !isset($forecastRes[$i3 . '_' . $i6])) { $forecastFirst = $forecastSecond = $forecastRes[$i . '_' . $i3]; } elseif (!isset($forecastRes[$i . '_' . $i3]) && isset($forecastRes[$i3 . '_' . $i6])) { $forecastFirst = $forecastSecond = $forecastRes[$i3 . '_' . $i6]; } else { $forecastFirst = $forecastSecond = false; } if ($forecastFirst) { /* if ($i>=0 && $i<=9) { $hourFrom = '0'.$i; } else { $hourFrom = $i; } if ($i6>=0 && $i6<=9) { $hourTo = '0'.$i6; } else { $hourTo = $i6; }*/ $arUpdateInsert = array('CITY_ID' => $city['ID']); //SYMBOL_VAR if (intval($forecastFirst['SYMBOL_VAR']) > intval($forecastSecond['SYMBOL_VAR'])) { $arUpdateInsert['SYMBOL_VAR'] = $forecastFirst['SYMBOL_VAR']; } else { $arUpdateInsert['SYMBOL_VAR'] = $forecastSecond['SYMBOL_VAR']; } //WIND_DIRECTION_DEG //WIND_DIRECTION_CODE //WIND_SPEED_MPS //WIND_SPEED_NAME if ($forecastFirst['WIND_SPEED_MPS'] > $forecastSecond['WIND_SPEED_MPS']) { $arUpdateInsert['WIND_DIRECTION_DEG'] = $forecastFirst['WIND_DIRECTION_DEG']; $arUpdateInsert['WIND_DIRECTION_CODE'] = $forecastFirst['WIND_DIRECTION_CODE']; $arUpdateInsert['WIND_SPEED_MPS'] = $forecastFirst['WIND_SPEED_MPS']; $arUpdateInsert['WIND_SPEED_NAME'] = $forecastFirst['WIND_SPEED_NAME']; } else { $arUpdateInsert['WIND_DIRECTION_DEG'] = $forecastSecond['WIND_DIRECTION_DEG']; $arUpdateInsert['WIND_DIRECTION_CODE'] = $forecastSecond['WIND_DIRECTION_CODE']; $arUpdateInsert['WIND_SPEED_MPS'] = $forecastSecond['WIND_SPEED_MPS']; $arUpdateInsert['WIND_SPEED_NAME'] = $forecastSecond['WIND_SPEED_NAME']; } //TEMPERATURE_MIN if ($forecastFirst['TEMPERATURE_MIN'] < $forecastSecond['TEMPERATURE_MIN']) { $arUpdateInsert['TEMPERATURE_MIN'] = $forecastFirst['TEMPERATURE_MIN']; } else { $arUpdateInsert['TEMPERATURE_MIN'] = $forecastSecond['TEMPERATURE_MIN']; } //TEMPERATURE_MAX if ($forecastFirst['TEMPERATURE_MAX'] > $forecastSecond['TEMPERATURE_MAX']) { $arUpdateInsert['TEMPERATURE_MAX'] = $forecastFirst['TEMPERATURE_MAX']; } else { $arUpdateInsert['TEMPERATURE_MAX'] = $forecastSecond['TEMPERATURE_MAX']; } //PRESSURE_MM_VALUE if ($forecastFirst['PRESSURE_MM_VALUE'] > $forecastSecond['PRESSURE_MM_VALUE']) { $arUpdateInsert['PRESSURE_MM_VALUE'] = $forecastFirst['PRESSURE_MM_VALUE']; } else { $arUpdateInsert['PRESSURE_MM_VALUE'] = $forecastSecond['PRESSURE_MM_VALUE']; } //HUMIDITY_VALUE if ($forecastFirst['HUMIDITY_VALUE'] > $forecastSecond['HUMIDITY_VALUE']) { $arUpdateInsert['HUMIDITY_VALUE'] = $forecastFirst['HUMIDITY_VALUE']; } else { $arUpdateInsert['HUMIDITY_VALUE'] = $forecastSecond['HUMIDITY_VALUE']; } $arUpdateInsert['DATETIME_FROM'] = $toDate . ' ' . $i . ':00:00'; if ($i6 == 0) { $nextToDate = $dateHelper->strToTime($toDate); $arUpdateInsert['DATETIME_TO'] = $nextToDate . ' ' . $i6 . ':00:00'; } else { $arUpdateInsert['DATETIME_TO'] = $toDate . ' ' . $i6 . ':00:00'; } $checkIsset = TimezoneTable::getList(array('select' => array('ID'), 'filter' => array('CITY_ID' => $city['ID'], 'DATETIME_FROM' => $arUpdateInsert['DATETIME_FROM'], 'DATETIME_TO' => $arUpdateInsert['DATETIME_TO']))); if ($checkIsset) { //Update unset($arUpdateInsert['DATETIME_FROM']); unset($arUpdateInsert['DATETIME_TO']); $query = new Query('update'); $query->setUpdateParams($arUpdateInsert, $checkIsset[0]['ID'], TimezoneTable::getTableName(), TimezoneTable::getMapArray()); $query->exec(); } else { //Insert $query = new Query('insert'); $query->setInsertParams($arUpdateInsert, TimezoneTable::getTableName(), TimezoneTable::getMapArray()); $query->exec(); } //msDebug($arUpdateInsert); } } }
protected static function addAccount($arData) { msDebug($arData); $arAccount = $arData['ACCOUNT']; $query = new Entity\Query('insert'); $query->setInsertParams($arAccount, Tables\AccountsTable::getTableName(), Tables\AccountsTable::getMapArray()); $res = $query->exec(); $accountID = $res->getInsertId(); if ($accountID) { if ($arAccount['ACCOUNT_TYPE_ID'] == static::$a_debet_card || $arAccount['ACCOUNT_TYPE_ID'] == static::$a_deposit || $arAccount['ACCOUNT_TYPE_ID'] == static::$a_bank || $arAccount['ACCOUNT_TYPE_ID'] == static::$a_credit_card || $arAccount['ACCOUNT_TYPE_ID'] == static::$a_credit) { $arBank = $arData['BANK']; $arBank['ACCOUNT_ID'] = $accountID; $query = new Entity\Query('insert'); $query->setInsertParams($arBank, Tables\AccountBankTable::getTableName(), Tables\AccountBankTable::getMapArray()); $res = $query->exec(); $bankID = $res->getInsertId(); if (!$bankID) { static::deleteAccount($accountID, true); return false; } } elseif ($arAccount['ACCOUNT_TYPE_ID'] == static::$a_emoney) { $arEMoney = $arData['EMONEY']; $arEMoney['ACCOUNT_ID'] = $accountID; $query = new Entity\Query('insert'); $query->setInsertParams($arEMoney, Tables\AccountEmoneyTable::getTableName(), Tables\AccountEmoneyTable::getMapArray()); $res = $query->exec(); $emoneyID = $res->getInsertId(); if (!$emoneyID) { static::deleteAccount($accountID, true); return false; } } elseif ($arAccount['ACCOUNT_TYPE_ID'] == static::$a_mne || $arAccount['ACCOUNT_TYPE_ID'] == static::$a_i) { $arDebts = $arData['DEBT']; $arDebts['ACCOUNT_ID'] = $accountID; $query = new Entity\Query('insert'); $query->setInsertParams($arDebts, Tables\AccountDebtsTable::getTableName(), Tables\AccountDebtsTable::getMapArray()); $res = $query->exec(); $debtsID = $res->getInsertId(); if (!$debtsID) { static::deleteAccount($accountID, true); return false; } } elseif ($arAccount['ACCOUNT_TYPE_ID'] == static::$a_estate) { $arEstate = $arData['ESTATE']; $arEstate['ACCOUNT_ID'] = $accountID; $query = new Entity\Query('insert'); $query->setInsertParams($arEstate, Tables\AccountRealEstateTable::getTableName(), Tables\AccountRealEstateTable::getMapArray()); $res = $query->exec(); $estateID = $res->getInsertId(); if (!$estateID) { static::deleteAccount($accountID, true); return false; } } elseif ($arAccount['ACCOUNT_TYPE_ID'] == static::$a_car) { $arCar = $arData['CAR']; $arCar['ACCOUNT_ID'] = $accountID; $query = new Entity\Query('insert'); $query->setInsertParams($arCar, Tables\AccountCarTable::getTableName(), Tables\AccountCarTable::getMapArray()); $res = $query->exec(); $carID = $res->getInsertId(); if (!$carID) { static::deleteAccount($accountID, true); return false; } } return true; } else { return false; } }