Пример #1
0
 public function index()
 {
     $filters = Input::only('parent');
     if ($filters['parent'] != null) {
         $gplacesQuery = GPlace::where('importparent', $filters['parent']);
     } else {
         $gplacesQuery = GPlace::whereNull('importparent');
     }
     $gplaces = $gplacesQuery->get();
     return Response::json(array("data" => $gplaces, "parent" => $filters['parent'], 'status_code' => 200), 200);
 }
Пример #2
0
 public function traverse($gplaces, $parentsTree, $ignore)
 {
     foreach ($gplaces as $gplace) {
         $nextIgnore = $ignore || $gplace->importignore;
         if (count($parentsTree) < 3 && !$nextIgnore) {
             if ($gplace->importid == null) {
                 $place = $this->gplaceToPlace($gplace, $parentsTree);
                 DB::transaction(function () use($gplace, $place) {
                     $place->save();
                     $gplace->importid = $place->id;
                     $gplace->save();
                 });
             }
             $parentsTreeDirty = true;
             $parentsTree[] = $gplace;
         } else {
             $parentsTreeDirty = false;
         }
         $gmosques = GMosque::whereNull('importid')->where('area', $gplace->placeid)->get();
         foreach ($gmosques as $gmosque) {
             if ($gmosque->importid == null) {
                 $mosque = $this->gmosqueToMosque($gmosque);
                 if (count($parentsTree) > 1) {
                     $mosque->state = $parentsTree[1]->importid;
                 }
                 if (count($parentsTree) > 2) {
                     $mosque->city = $parentsTree[2]->importid;
                 }
                 DB::transaction(function () use($gmosque, $mosque) {
                     $mosque->save();
                     $gmosque->importid = $mosque->id;
                     $gmosque->save();
                 });
             }
         }
         $subPlaces = GPlace::where('importparent', $gplace->placeid)->get();
         $this->traverse($subPlaces, $parentsTree, $nextIgnore);
         if ($parentsTreeDirty) {
             array_pop($parentsTree);
         }
     }
 }