コード例 #1
0
ファイル: ViewController.php プロジェクト: baranov-nt/setyes
 /**
  * Creates a new AdMain model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionShowInRegion()
 {
     $searchModel = new AdMainSearch();
     $city = Yii::$app->request->cookies->get('_cityId');
     if (isset($city)) {
         /* @var $modelPlaceCity \common\models\PlaceCity */
         $modelPlaceCity = PlaceCity::findOne($city);
         if (isset($modelPlaceCity)) {
             $searchModel->region_id = $modelPlaceCity->region->id;
         }
     }
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
     return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]);
 }
コード例 #2
0
ファイル: PlaceManager.php プロジェクト: baranov-nt/setyes
 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;
 }