Example #1
0
 public static function setOption($optionName, $optionValue)
 {
     $optionName = strtoupper($optionName);
     if (!isset(static::$arOptions[$optionName])) {
         $arInsert = array('NAME' => $optionName, 'VALUE' => $optionValue);
         $result = Tables\OptionsTable::getList(array("filter" => array("NAME" => $optionName)));
         if ($result) {
             $query = new Query('update');
             $query->setUpdateParams($arInsert, $result[0]['ID'], Tables\OptionsTable::getTableName(), Tables\OptionsTable::getMapArray());
             $res = $query->exec();
             if ($res->getResult()) {
                 static::$arOptions[$optionName] = $optionValue;
                 return true;
             } else {
                 return false;
             }
         } else {
             $query = new Query('insert');
             $query->setInsertParams($arInsert, Tables\OptionsTable::getTableName(), Tables\OptionsTable::getMapArray());
             $res = $query->exec();
             if ($res->getResult()) {
                 static::$arOptions[$optionName] = $optionValue;
                 return true;
             } else {
                 return false;
             }
         }
     } else {
         return true;
     }
 }
Example #2
0
 /**
  * Добавляет новый автомобиль
  *
  * @param array $arData
  *
  * @throw Exception\ArgumentNullException
  * @return \MSergeev\Core\Lib\DBResult
  */
 public static function addNewCar($arData = array())
 {
     try {
         if (empty($arData)) {
             throw new Exception\ArgumentNullException('arData');
         }
     } catch (Exception\ArgumentNullException $e) {
         $e->showException();
         return false;
     }
     $arMap = MyCarTable::getMapArray();
     $arInsert = array();
     foreach ($arMap as $field => $obMap) {
         if (isset($arData[$field])) {
             $arInsert[0][$field] = $arData[$field];
         }
     }
     if (isset($arInsert[0]['DEFAULT']) && $arInsert[0]['DEFAULT']) {
         $res = static::uncheckDefaultAllCars();
     }
     $query = new Query('insert');
     $query->setInsertParams($arInsert, MyCarTable::getTableName(), MyCarTable::getMapArray());
     $res = $query->exec();
     return $res;
 }
Example #3
0
 public static function addNewRate($tariffID, $value = 0, $date = null)
 {
     if (is_null($date)) {
         $date = date('d.m.Y');
     }
     $query = new Query('insert');
     $query->setInsertParams(array('TARIFF_ID' => $tariffID, 'DATE' => $date, 'VALUE' => $value), RatesTable::getTableName(), RatesTable::getMapArray());
     $res = $query->exec();
     if ($res->getResult()) {
         self::updateData($date);
         return $res->getInsertId();
     } else {
         return false;
     }
 }
Example #4
0
 /**
  * Функция получает с курсы валют по отношению к базовой на указанную дату или на сегодня
  *
  * @param   string  $baseCur    Базовая валюта
  * @param   array   $arRateCur  Массив валют курсов
  * @param   string  $date       Дата
  *
  * @return  bool
  */
 public static function getRates($baseCur = null, $arRateCur = null, $date = null)
 {
     try {
         if (is_null($baseCur)) {
             throw new Exception\ArgumentNullException('$baseCur');
         }
         if (is_null($arRateCur)) {
             throw new Exception\ArgumentNullException('$arRateCur');
         }
     } catch (Exception\ArgumentNullException $e) {
         $e->showException();
         return false;
     }
     if (is_null($date)) {
         $date = date("d.m.Y");
     }
     $baseCur = strtoupper($baseCur);
     if (!is_array($arRateCur)) {
         $arRateCur = array(strtoupper($arRateCur));
     } else {
         foreach ($arRateCur as &$rate) {
             $rate = strtoupper($rate);
         }
     }
     $arInsert = array();
     $i = 0;
     if ($baseCur == "RUB") {
         //Если базовой валютой является рубль, загружаем данные с CBR.Ru (Сбербанк России)
         $date_cbr = str_replace('.', '/', $date);
         $path = 'http://www.cbr.ru/scripts/XML_daily.asp?date_req=' . $date_cbr;
         $rates = simplexml_load_file($path);
         foreach ($rates->Valute as $val) {
             if (in_array(strval($val->CharCode), $arRateCur)) {
                 $res = Tables\RatesTable::getList(array("filter" => array("DATE" => $date, "CURRENCY_CURRENT" => strval($val->CharCode), "CURRENCY_BASE" => $baseCur)));
                 if (!$res) {
                     $arInsert[$i] = array('DATE' => $date, 'CURRENCY_CURRENT' => strval($val->CharCode), 'CURRENCY_BASE' => $baseCur, 'RATE' => floatval(str_replace(",", ".", $val->Value)));
                     $i++;
                 }
             }
         }
         if (!empty($arInsert)) {
             $query = new Query("insert");
             $query->setInsertParams($arInsert, Tables\RatesTable::getTableName(), Tables\RatesTable::getMapArray());
             $res = $query->exec();
         }
     }
 }
Example #5
0
 public static function addTariff($code, $counterID, $startValue = 0)
 {
     $arRes = TariffsTable::getList(array('select' => array('ID'), 'filter' => array('CODE' => $code)));
     if ($arRes) {
         //Если тариф с таким кодом уже существует, ничего не добаляем
         return false;
     } else {
         //Если не существует, добавляем
         $query = new Query('insert');
         $query->setInsertParams(array('CODE' => $code, 'COUNTER_ID' => $counterID, 'START_VALUE' => $startValue), TariffsTable::getTableName(), TariffsTable::getMapArray());
         $res = $query->exec();
         if ($res->getResult()) {
             return $res->getInsertId();
         } else {
             return false;
         }
     }
 }
Example #6
0
 public static function addCounter($code, $name = '')
 {
     $arRes = CountersTable::getList(array('select' => array('ID'), 'filter' => array('CODE' => $code)));
     if ($arRes) {
         //Если счетчик с таким кодом уже есть, не добавляем ничего
         return false;
     } else {
         //Если счетчика с таким кодом еще нет, добавляем новый
         $query = new Query('insert');
         $query->setInsertParams(array('CODE' => $code, 'NAME' => $name), CountersTable::getTableName(), CountersTable::getMapArray());
         $res = $query->exec();
         if ($res->getResult()) {
             return $res->getInsertId();
         } else {
             return false;
         }
     }
 }
Example #7
0
 public static function addNewModel($brandID = null, $modelName = null)
 {
     try {
         if (is_null($modelName)) {
             throw new ArgumentNullException('model_name');
         } else {
             $modelName = htmlspecialchars($modelName);
         }
         if (is_null($brandID)) {
             throw new ArgumentNullException('brandID');
         }
         $arInsert[0] = array('BRANDS_ID' => $brandID, 'NAME' => $modelName);
         $query = new Query('insert');
         $query->setInsertParams($arInsert, CarModelTable::getTableName(), CarModelTable::getMapArray());
         $res = $query->exec();
         if ($res->getResult()) {
             return $res->getInsertId();
         }
     } catch (ArgumentNullException $e) {
         $e->showException();
     }
 }
Example #8
0
 public static function addValueByTariffID($tariffID, $value, $arDateTime = null)
 {
     if (is_null($arDateTime)) {
         $day = intval(date('d'));
         $month = intval(date('m'));
         $year = intval(date('Y'));
         $hour = date('G');
     } else {
         if (isset($arDateTime['DATE'])) {
             list($day, $month, $year) = explode('.', $arDateTime['DATE']);
         } else {
             if (isset($arDateTime['DAY'])) {
                 $day = intval($arDateTime['DAY']);
             } else {
                 $day = intval(date('d'));
             }
             if (isset($arDateTime['MONTH'])) {
                 $month = intval($arDateTime['MONTH']);
             } else {
                 $month = intval(date('m'));
             }
             if (isset($arDateTime['YEAR'])) {
                 $year = intval($arDateTime['YEAR']);
             } else {
                 $year = intval(date('Y'));
             }
         }
         if (isset($arDateTime['HOUR'])) {
             $hour = intval($arDateTime['HOUR']);
         } else {
             $hour = intval(date('G'));
         }
     }
     $valuesHourlyTableName = ValuesHourlyTable::getTableName();
     //Получаем предыдущее показание счетчика по данному тарифу, сложив все показания за часы
     $sumValue = self::getCurrentValuesByTariffID($tariffID);
     //Получаем текущую тарифную ставку
     $nowRate = Rates::getLastRate($tariffID);
     //Получаем расход за час
     $newValue = $value - $sumValue - $nowRate['TARIFF_ID_START_VALUE'];
     if ($newValue < 0) {
         $newValue = 0;
     }
     //Добавляем часовые значения
     $arInsert = array('TARIFF_ID' => $tariffID, 'HOUR' => $hour, 'DAY' => $day, 'MONTH' => $month, 'YEAR' => $year, 'VALUE' => $newValue, 'COST' => $newValue * $nowRate['VALUE']);
     //Проверяем, есть ли данные значения в базе
     $arRes = ValuesHourlyTable::getList(array('select' => array('ID'), 'filter' => array('TARIFF_ID' => $arInsert['TARIFF_ID'], 'HOUR' => $arInsert['HOUR'], 'DAY' => $arInsert['DAY'], 'MONTH' => $arInsert['MONTH'], 'YEAR' => $arInsert['YEAR'])));
     if ($arRes) {
         //Update
         $query = new Query('update');
         $query->setUpdateParams($arInsert, $arRes[0]['ID'], $valuesHourlyTableName, ValuesHourlyTable::getMapArray());
         $res = $query->exec();
         if ($res->getResult()) {
             return $res->getAffectedRows();
         } else {
             return false;
         }
     } else {
         //Insert
         $query = new Query('insert');
         $query->setInsertParams($arInsert, $valuesHourlyTableName, ValuesHourlyTable::getMapArray());
         $res = $query->exec();
         if ($res->getResult()) {
             return $res->getInsertId();
         } else {
             return false;
         }
     }
 }
Example #9
0
 protected static function addRepairParts($arAdd = null)
 {
     try {
         if (is_null($arAdd)) {
             throw new Exception\ArgumentNullException('arAdd');
         } elseif (!is_array($arAdd)) {
             throw new Exception\ArgumentTypeException('arAdd', 'array');
         }
     } catch (Exception\ArgumentNullException $e) {
         die($e->showException());
     } catch (Exception\ArgumentTypeException $e2) {
         die($e2->showException());
     }
     //msDebug($arAdd);
     $query = new Query('insert');
     $query->setInsertParams($arAdd, Tables\RepairPartsTable::getTableName(), Tables\RepairPartsTable::getMapArray());
     $res = $query->exec();
     if ($res->getResult()) {
         return $res->getInsertId();
     } else {
         static::$arError['ADD'] = 'Ошибка добавления данных';
         return false;
     }
 }
Example #10
0
 protected static function parseSunRiseSet($city, $arWeather)
 {
     $dateHelper = new DateHelper();
     list($sunRiseDate, $sunRiseTime) = explode('T', $arWeather['sun']['@attributes']['rise']);
     $sunRiseDate = $dateHelper->convertDateFromDB($sunRiseDate);
     $sunRiseTime = explode(':', $sunRiseTime);
     $sunRiseTime[0] += $city['UTC_HOUR'];
     if ($sunRiseTime[0] > 23) {
         $sunRiseTime[0] -= 24;
         $sunRiseDate = $dateHelper->strToTime($sunRiseDate);
     }
     list($sunSetDate, $sunSetTime) = explode('T', $arWeather['sun']['@attributes']['set']);
     $sunSetDate = $dateHelper->convertDateFromDB($sunSetDate);
     $sunSetTime = explode(':', $sunSetTime);
     $sunSetTime[0] += $city['UTC_HOUR'];
     if ($sunSetTime[0] > 23) {
         $sunSetTime[0] -= 24;
         $sunSetDate = $dateHelper->strToTime($sunSetDate);
     }
     $sunRiseMin = $sunRiseTime[0] * 60 + $sunRiseTime[1];
     $sunSetMin = $sunSetTime[0] * 60 + $sunSetTime[1];
     if ($sunSetMin >= $sunRiseMin) {
         $sunDayMin = $sunSetMin - $sunRiseMin;
     } else {
         $sunDayMin = $sunSetMin + 24 * 60 - $sunRiseMin;
     }
     $sunDayHour = floor($sunDayMin / 60);
     $sunDayMin -= $sunDayHour * 60;
     $arSunRise = SunTable::getList(array('filter' => array('CITY_ID' => $city['ID'], 'DATE' => $sunRiseDate)));
     $arInsertUpdate = array('CITY_ID' => $city['ID'], 'DATE' => $sunRiseDate, 'SUNRISE' => $sunRiseTime[0] . ':' . $sunRiseTime[1] . ':' . $sunRiseTime[2], 'SUNSET' => $sunSetTime[0] . ':' . $sunSetTime[1] . ':' . $sunSetTime[2], 'DAYTIME' => $sunDayHour . ':' . $sunDayMin . ':00');
     if ($arSunRise) {
         //Update
         $query = new Query('update');
         $query->setUpdateParams($arInsertUpdate, $arSunRise[0]['ID'], SunTable::getTableName(), SunTable::getMapArray());
         $res = $query->exec();
         if ($res->getResult()) {
             return $res->getInsertId();
         } else {
             return false;
         }
     } else {
         //Insert
         $query = new Query('insert');
         $query->setInsertParams($arInsertUpdate, SunTable::getTableName(), SunTable::getMapArray());
         $res = $query->exec();
         if ($res->getResult()) {
             return $res->getAffectedRows();
         } else {
             return false;
         }
     }
 }
Example #11
0
 /**
  * Добавляет данные о заправки в БД
  *
  * @param array $arData
  *
  * @return bool|int
  */
 protected static function addFuel($arData = null)
 {
     try {
         if (is_null($arData)) {
             throw new Exception\ArgumentNullException('arData');
         } elseif (!is_array($arData)) {
             throw new Exception\ArgumentTypeException('arData', 'array');
         }
     } catch (Exception\ArgumentNullException $e) {
         die($e->showException());
     } catch (Exception\ArgumentTypeException $e2) {
         die($e2->showException());
     }
     $query = new Query('insert');
     $query->setInsertParams($arData, Tables\FuelTable::getTableName(), Tables\FuelTable::getMapArray());
     $res = $query->exec();
     if ($res->getResult()) {
         Points::increasePointPopular($arData['POINTS_ID']);
         static::recalculateExpence($arData);
         return $res->getInsertId();
     } else {
         return false;
     }
 }
Example #12
0
 public static function insertDefaultRows()
 {
     $arDefaultValues = static::getArrayDefaultValues();
     if (count($arDefaultValues) > 0) {
         $query = new Entity\Query("insert");
         $query->setInsertParams($arDefaultValues, static::getTableName(), static::getMapArray());
         $res = $query->exec();
         return $res;
     } else {
         return false;
     }
 }
Example #13
0
 /**
  * Добавляет новое событие в DB
  *
  * @param array $arPost
  *
  * @return bool|int
  */
 protected static function addEventFromPostToDB($arPost = null)
 {
     try {
         if (is_null($arPost)) {
             throw new Exception\ArgumentNullException('$arPost');
         } elseif (!is_array($arPost)) {
             throw new Exception\ArgumentTypeException('$arPost', 'array');
         }
     } catch (Exception\ArgumentNullException $e1) {
         $e1->showException();
         return false;
     } catch (Exception\ArgumentTypeException $e2) {
         $e2->showException();
     }
     $query = new Query('insert');
     $query->setInsertParams($arPost, Tables\EventsTable::getTableName(), Tables\EventsTable::getMapArray());
     $res = $query->exec();
     if ($res->getInsertId() > 0) {
         return $res->getInsertId();
     } else {
         return false;
     }
 }
Example #14
0
 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;
     }
 }
Example #15
0
 /**
  * Функция высчитывает данные о пройденном расстоянии от выбранной даты или за все время
  *
  * @param int $carID
  * @param string $date
  */
 protected static function updateDayOdometer($carID = null, $date = null)
 {
     $dateHelper = new DateHelper();
     $arResult = array();
     if (is_null($carID)) {
         $carID = MyCar::getDefaultCarID();
     }
     if (is_null($date)) {
         //TODO: Проверить работу кода
         $arRes = Tables\RoutsTable::getList(array('select' => array('ID', 'DATE', 'ODO'), 'filter' => array('MY_CAR_ID' => $carID, '>ODO' => 0), 'order' => array('DATE' => 'ASC', 'ID' => 'ASC')));
         $arResult['BUY_ODO'] = MyCar::getBuyCarOdo($carID);
         $arResult['MAX_DATE_ODO'] = array();
         $bFirst = true;
         foreach ($arRes as $ar_res) {
             if ($bFirst) {
                 $bFirst = false;
                 $arResult['FIRST_DAY'] = $ar_res['DATE'];
             }
             $arResult['ROUTS'][$ar_res['ID']]['DATE'] = $ar_res['DATE'];
             $arResult['ROUTS'][$ar_res['ID']]['ODO'] = $ar_res['ODO'];
             if (!isset($arResult['MAX_DATE_ODO'][$ar_res['DATE']]) || $ar_res['ODO'] > $arResult['MAX_DATE_ODO'][$ar_res['DATE']]) {
                 $arResult['MAX_DATE_ODO'][$ar_res['DATE']] = $ar_res['ODO'];
             }
         }
         $arResult['LAST_DAY'] = date('d.m.Y');
         $lastOdo = $arResult['BUY_ODO'];
         $arResult['DAY_ODO'] = array();
         foreach ($arResult['MAX_DATE_ODO'] as $day => $odo) {
             $arResult['DAY_ODO'][$day] = round($odo - $lastOdo, 1);
             $lastOdo = $odo;
         }
         $arResult['ODO_ALL_DAYS'] = array();
         $now_day = $arResult['FIRST_DAY'];
         while ($now_day !== $arResult['LAST_DAY']) {
             if (isset($arResult['DAY_ODO'][$now_day])) {
                 $arResult['ODO_ALL_DAYS'][$now_day] = $arResult['DAY_ODO'][$now_day];
             } else {
                 $arResult['ODO_ALL_DAYS'][$now_day] = 0;
             }
             $now_day = $dateHelper->strToTime($now_day, '+1 day', 'site');
         }
     } else {
         $arResult['FIRST_DAY'] = $date;
         $arResult['LAST_DAY'] = date('d.m.Y');
         $arResult['BUY_ODO'] = MyCar::getBuyCarOdo($carID);
         //TODO: Проверить работу кода
         $arRes = Tables\RoutsTable::getList(array('select' => array('ID', 'DATE', 'ODO'), 'filter' => array('MY_CAR_ID' => $carID, '>=DATE' => $date, '>ODO' => 0), 'order' => array('DATE' => 'ASC', 'ID' => 'ASC')));
         $arResult['MAX_DATE_ODO'] = array();
         foreach ($arRes as $ar_res) {
             $arResult['ROUTS'][$ar_res['ID']]['DATE'] = $ar_res['DATE'];
             $arResult['ROUTS'][$ar_res['ID']]['ODO'] = $ar_res['ODO'];
             if (!isset($arResult['MAX_DATE_ODO'][$ar_res['DATE']]) || $ar_res['ODO'] > $arResult['MAX_DATE_ODO'][$ar_res['DATE']]) {
                 $arResult['MAX_DATE_ODO'][$ar_res['DATE']] = $ar_res['ODO'];
             }
         }
         //TODO: Проверить работу кода
         $arRes2 = Tables\RoutsTable::getList(array('select' => array('ID', 'DATE', 'ODO'), 'filter' => array('MY_CAR_ID' => $carID, '<DATE' => $date, '>ODO' => 0), 'order' => array('DATE' => 'DESC', 'ID' => 'DESC')));
         if ($arRes2) {
             $lastOdo = $arRes2[0]['ODO'];
             $arResult['LAST_RES'] = $arRes2[0];
         } else {
             $lastOdo = $arResult['BUY_ODO'];
         }
         $arResult['LAST_ODO'] = $lastOdo;
         $arResult['DAY_ODO'] = array();
         foreach ($arResult['MAX_DATE_ODO'] as $day => $odo) {
             $arResult['DAY_ODO'][$day] = round($odo - $lastOdo, 1);
             $lastOdo = $odo;
         }
         $arResult['ODO_ALL_DAYS'] = array();
         $now_day = $arResult['FIRST_DAY'];
         while ($now_day !== $arResult['LAST_DAY']) {
             if (isset($arResult['DAY_ODO'][$now_day])) {
                 $arResult['ODO_ALL_DAYS'][$now_day] = $arResult['DAY_ODO'][$now_day];
             } else {
                 $arResult['ODO_ALL_DAYS'][$now_day] = 0;
             }
             $now_day = $dateHelper->strToTime($now_day, '+1 day', 'site');
         }
     }
     //TODO: Проверить работу кода
     $arRes2 = Tables\OdoTable::getList(array('select' => array('ID', 'DATE', 'ODO'), 'filter' => array('MY_CAR_ID' => $carID, '>=DATE' => $arResult['FIRST_DAY']), 'order' => array('DATE' => 'ASC')));
     $arResult['ODO_TABLE'] = array();
     foreach ($arRes2 as $ar_res) {
         $arResult['ODO_TABLE'][$ar_res['DATE']] = array('ID' => $ar_res['ID'], 'ODO' => $ar_res['ODO']);
     }
     $arResult['UPDATED'] = $arResult['INSERTED'] = array();
     foreach ($arResult['ODO_ALL_DAYS'] as $day => $odo) {
         if (isset($arResult['ODO_TABLE'][$day])) {
             if ($odo != $arResult['ODO_TABLE'][$day]['ODO']) {
                 $query = new Query('update');
                 $query->setUpdateParams(array('ODO' => $odo), $arResult['ODO_TABLE'][$day]['ID'], Tables\OdoTable::getTableName(), Tables\OdoTable::getMapArray());
                 $res = $query->exec();
                 $arResult['UPDATED'][$day] = $res->getResult();
             }
         } else {
             $query = new Query('insert');
             $arInsert[0] = array('MY_CAR_ID' => $carID, 'DATE' => $day, 'ODO' => $odo);
             $query->setInsertParams($arInsert, Tables\OdoTable::getTableName(), Tables\OdoTable::getMapArray());
             $res = $query->exec();
             $arResult['INSERTED'][$day] = $res->getInsertId();
         }
     }
 }
Example #16
0
 public static function addSection($arSection)
 {
     /*		Создание узла – самое простое действие над деревом. Для того, что бы его осуществить нам потребуется уровень и
     				правый ключ родительского узла (узел в который добавляется новый), либо максимальный правый ключ, если у
     				нового узла не будет родительского.*/
     $helper = new SqlHelper();
     $className = static::getClassName();
     if (!($arSection = self::checkFields($arSection))) {
         return false;
     }
     /*		Пусть $right_key – правый ключ родительского узла, или максимальный правый ключ плюс единица (если
     		родительского узла нет, то узел с максимальным правым ключом не будет обновляться, соответственно, чтобы небыло
     		повторов, берем число на единицу большее). $level – уровень родительского узла, либо 0, если родительского нет.*/
     if ($arSection['PARENT_SECTION_ID'] == 0) {
         $query = new Query('select');
         $sql = "SELECT\n\tMAX(" . $helper->wrapQuotes('RIGHT_MARGIN') . ") as RIGHT_MARGIN\nFROM\n\t" . $helper->wrapQuotes(static::getTableName());
         $query->setQueryBuildParts($sql);
         $res = $query->exec();
         if ($ar_res = $res->fetch()) {
             $right_key = $ar_res['RIGHT_MARGIN'] + 1;
             $level = 0;
         }
     } else {
         $arParent = static::getInfo($arSection['PARENT_SECTION_ID']);
         $right_key = $arParent['RIGHT_MARGIN'];
         $level = $arParent['DEPTH_LEVEL'];
         //1. Обновляем ключи существующего дерева, узлы стоящие за родительским узлом:
         $query = new Query('update');
         $sql = "UPDATE\n\t" . $helper->wrapQuotes(static::getTableName()) . "\nSET\n\t" . $helper->wrapQuotes('LEFT_MARGIN') . " = " . $helper->wrapQuotes('LEFT_MARGIN') . " + 2,\n\t" . $helper->wrapQuotes('RIGHT_MARGIN') . " = " . $helper->wrapQuotes('RIGHT_MARGIN') . " + 2\nWHERE\n\t" . $helper->wrapQuotes('LEFT_MARGIN') . " > " . $right_key;
         $query->setQueryBuildParts($sql);
         $res = $query->exec();
         /*			Но мы обновили только те узлы в которых изменяются оба ключа, при этом родительскую ветку (не узел, а все
         			родительские узлы) мы не трогали, так как в них изменяется только правый ключ. Следует иметь в виду, что
         			если у нас не будет родительского узла, то есть новый узел будет корневым, то данное обновление проводить
         			нельзя.*/
     }
     //2. Обновляем родительскую ветку:
     $query = new Query('update');
     $sql = "UPDATE\n\t" . $helper->wrapQuotes(static::getTableName()) . "\nSET\n\t" . $helper->wrapQuotes('RIGHT_MARGIN') . " = " . $helper->wrapQuotes('RIGHT_MARGIN') . " + 2\nWHERE\n\t" . $helper->wrapQuotes('RIGHT_MARGIN') . " >= " . $right_key . "\n\tAND\n\t" . $helper->wrapQuotes('LEFT_MARGIN') . " < " . $right_key;
     $query->setQueryBuildParts($sql);
     $res = $query->exec();
     //3. Теперь добавляем новый узел :
     $query = new Query('insert');
     $arSection['LEFT_MARGIN'] = $right_key;
     $arSection['RIGHT_MARGIN'] = $right_key + 1;
     $arSection['DEPTH_LEVEL'] = $level + 1;
     if (isset($arSection['ID'])) {
         unset($arSection['ID']);
     }
     $query->setInsertParams($arSection, static::getTableName(), $className::getMapArray());
     $res = $query->exec();
     $insertID = $res->getInsertId();
     $arSection['ID'] = $insertID;
     static::sortAddingSection($arSection);
     if ($insertID > 0) {
         return $insertID;
     } else {
         return false;
     }
 }
Example #17
0
 public static function createNewPoint($arPoint = array())
 {
     if (!isset($arPoint['NAME'])) {
         $arPoint['NAME'] = 'ПТ';
         $arPoint['AUTO'] = true;
     } else {
         $arPoint['AUTO'] = false;
     }
     if (!isset($arPoint['TYPE'])) {
         $arPoint['TYPE'] = static::getDefaultPointTypeID();
     }
     if (!isset($arPoint['LON']) || strlen($arPoint['LON']) < 2 || (!isset($arPoint['LAT']) || strlen($arPoint['LAT']) < 2)) {
         if (isset($arPoint['ADDRESS']) && strlen($arPoint['ADDRESS']) > 3) {
             if ($arCoords = static::getCoordsByAddressYandex($arPoint['ADDRESS'])) {
                 $arPoint['LON'] = $arCoords['lon'];
                 $arPoint['LAT'] = $arCoords['lat'];
             } else {
                 //TODO:Вывод ошибки о том, что данные не добавлены, так как нет ответа яндекс
                 return false;
             }
         }
     }
     if ($arPoint['AUTO']) {
         $arPoint['NAME'] .= ' (' . $arPoint['LON'] . ', ' . $arPoint['LAT'] . ')';
     }
     $arAdd[] = array('NAME' => $arPoint['NAME'], 'POINT_TYPES_ID' => $arPoint['TYPE'], 'ADDRESS' => $arPoint['ADDRESS'], 'LATITUDE' => $arPoint['LAT'], 'LONGITUDE' => $arPoint['LON']);
     $query = new Query('insert');
     $query->setInsertParams($arAdd, Tables\PointsTable::getTableName(), Tables\PointsTable::getMapArray());
     $res = $query->exec();
     if ($res->getResult()) {
         return $res->getInsertId();
     } else {
         return false;
     }
 }