Esempio n. 1
0
 /**
  * Returns the array of possible user status values.
  *
  * @return array
  */
 public function getCountriesList()
 {
     $modelPlaceCountry = PlaceCountry::find()->asArray()->all();
     $countriesArray = ArrayHelper::map($modelPlaceCountry, 'iso2', function ($modelPlaceCountry, $defaultValue) {
         return Yii::t('app', $modelPlaceCountry['short_name']) . ' +' . $modelPlaceCountry['calling_code'];
     });
     return $countriesArray;
 }
Esempio n. 2
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getCountry()
 {
     return $this->hasOne(PlaceCountry::className(), ['id' => 'country_id']);
 }
Esempio n. 3
0
 /**
  * Returns the array of possible user status values.
  *
  * @return array
  */
 public function getPhoneMask()
 {
     /* @var $modelPlaceCountry \common\models\PlaceCountry */
     $this->phone = '';
     $modelPlaceCountry = PlaceCountry::findOne($this->country_id);
     if ($modelPlaceCountry) {
         if ($modelPlaceCountry->phone_number_digits_code) {
             $i = 1;
             $phoneMask = '';
             $phonePlaceholder = '';
             while ($i <= $modelPlaceCountry->phone_number_digits_code) {
                 $phoneMask .= '9';
                 $phonePlaceholder .= '_';
                 $i++;
             }
             $phoneMask = $modelPlaceCountry->calling_code . $phoneMask;
             $phonePlaceholder = str_replace(['\\'], '', $modelPlaceCountry->calling_code . $phonePlaceholder);
             return [$phoneMask, $phonePlaceholder];
         } else {
             $i = 1;
             $phoneMask = '';
             $phonePlaceholder = '';
             while ($i <= 12) {
                 $phoneMask .= '9';
                 $i++;
             }
             $phoneMask = $modelPlaceCountry->calling_code . $phoneMask;
             $phonePlaceholder = str_replace(['\\'], '', $modelPlaceCountry->calling_code . $phonePlaceholder);
             return [$phoneMask, $phonePlaceholder];
         }
     }
     $phoneMask = '';
     $phonePlaceholder = '';
     return [$phoneMask, $phonePlaceholder];
 }
Esempio n. 4
0
 public function findStreet($city, $address)
 {
     /* Находим город, заполненный в форме */
     $objectInputCity = Yii::$app->googleApi->getGeoCodeObject($city, null);
     /* Находим адрес */
     $objectStreet = Yii::$app->googleApi->getGeoCodeObject($address, null);
     $house = '';
     $route = '';
     /* Формируем переменныe для адреса */
     foreach ($objectStreet->address_components as $one) {
         if ($one->types[0] == 'street_number') {
             $house = $one->short_name;
         }
         if ($one->types[0] == 'route') {
             $route = $one->short_name . ', ' . $house;
         }
     }
     $objectStreet = Yii::$app->googleApi->getGeoCodeObject($route . ' ' . $city, null);
     if (isset($objectStreet)) {
         /* Если найден объект адреса, создаем пустые переменные для адреса */
         $house = '';
         // номер дома
         $route = '';
         // улица
         $city = '';
         // город
         $region = '';
         // область, регион
         $country = '';
         // cnhfyf
         /* Формируем переменныe для адреса */
         foreach ($objectStreet->address_components as $one) {
             if ($one->types[0] == 'street_number') {
                 $house = $one->short_name;
             }
             if ($one->types[0] == 'route') {
                 $route = $one->short_name;
             }
             if ($one->types[0] == 'locality') {
                 $city = $one->short_name;
             }
             if ($one->types[0] == 'administrative_area_level_1') {
                 // ищем облать-регион
                 $region = $one->short_name;
             }
             if ($one->types[0] == 'country') {
                 $country = $one->short_name;
             }
         }
         if ($route) {
             /* Если есть номер дома */
             /* Находим введенный адрес в базе по place_id */
             $modelPlaceAddress = PlaceAddress::findOne(['place_id' => $objectStreet->place_id]);
             if ($modelPlaceAddress) {
                 /* @var $modelPlaceAddress \common\models\PlaceAddress */
                 /** Если найденный place_id уже есть в таблице адресов place_address
                  *  Возвращаем объект адреса */
                 return $modelPlaceAddress;
             } else {
                 // если адрес не найден, находим город
                 $objectCity = Yii::$app->googleApi->getGeoCodeObject($city . ' ' . $region . ' ' . $country, null);
                 /* Если введенный город не совпадает с городом найденым по адресу, возвращаем false */
                 if ($objectInputCity->place_id != $objectCity->place_id) {
                     return false;
                 }
                 /* Находим введенный город в базе по place_id */
                 /* @var $modelPlaceCity \common\models\PlaceCity */
                 $modelPlaceCity = PlaceCity::findOne(['place_id' => $objectCity->place_id]);
                 if ($modelPlaceCity) {
                     /* Если город в базе найден, записываем адрес этого города и возващаем объект адреса из таблицы place_address */
                     $modelPlaceAddress = new PlaceAddress();
                     return $modelPlaceAddress->createAddress($modelPlaceCity, $objectStreet->place_id);
                 } else {
                     /* Если город в базе не найден, ищем регион в Google Maps */
                     $objectRegion = Yii::$app->googleApi->getGeoCodeObject($region . ' ' . $country, null);
                     /** @var $modelPlaceRegion \common\models\PlaceRegion
                      *  ищем регион в базе */
                     $modelPlaceRegion = PlaceRegion::findOne(['place_id' => $objectRegion->place_id]);
                     if ($modelPlaceRegion) {
                         // если регион найден
                         $modelPlaceCity = new PlaceCity();
                         // добавляем новый город к найденному региону и новый адрес к городу, возващаем объект адреса
                         return $modelPlaceCity->createCityAndAddress($modelPlaceRegion, $objectCity->place_id, $objectStreet->place_id);
                     } else {
                         // если регион не найден, находим страну в БД
                         $modelPlaceCountry = PlaceCountry::findOne(['iso2' => $country]);
                         // если страна найдена
                         if ($modelPlaceCountry) {
                             $modelPlaceRegion = new PlaceRegion();
                             // Добавляем новый регион и город, пишем куки и переходим на главную страницу с get переменной city, возвращаем объект адреса
                             return $modelPlaceRegion->createRegionAndCityAndAddress($modelPlaceCountry, $objectRegion->place_id, $objectCity->place_id, $objectStreet->place_id);
                         }
                     }
                 }
             }
         }
     }
     return false;
 }