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); }
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); } } }