public function getFacilities($continent) { $output = []; // Iterate through the Facility types foreach (FacilityType::orderBy('name')->get() as $type) { // Get the markers for the facilities nnnnnnnnnnnnnn $facilities = Facility::with('FacilityType')->with('linkedFacilities')->where('continent_id', '=', $continent->id)->where('facility_type_id', '=', $type->id)->orderBy('name')->get(); // Skip if no markers exist for that type if (count($facilities) == 0) { $this->log("No " . $type->name . " facilities found."); continue; } $output[$type->slug] = []; // Add the facilities to the output foreach ($facilities as $facility) { // Ignore if Warpgate facility has no position // if ( strpos($facility->name, 'Warpgate') !== false and (is_null($facility->lat) or is_null($facility->lng) or $facility->lat == 0 or $facility->lng == 0 )) { // $this->log($facility->name." has no position"); // continue; // } // Facility Name $output[$type->slug][$facility->id] = ['name' => $facility->name]; // Facility Position if (!is_null($facility->lat) or !is_null($facility->lng)) { $x = (double) $facility->lat; $y = (double) $facility->lng; // $output[$type->slug][$facility->id]['xy'] = [(float)$facility->lat, (float)$facility->lng ]; } else { $x = (double) $facility->lat_override; $y = (double) $facility->lng_override; // $output[$type->slug][$facility->id]['xy'] = [(float)$facility->lat_override, (float)$facility->lng_override ]; } if (!is_null($x) and !is_null($y) and $x != 0 and $y != 0) { $output[$type->slug][$facility->id]['xy'] = [$x, $y]; } // Lattice Links if (count($facility->linkedFacilities) > 0) { $output[$type->slug][$facility->id]['links'] = []; foreach ($facility->linkedFacilities as $linkedFacility) { $output[$type->slug][$facility->id]['links'][] = (int) $linkedFacility->id; } } } } return $output; }
private function facility_types() { $class = get_class(new FacilityType()); $this->log($this->verb . ' Facility Types'); $url = $this->baseUrl . "facility_type?c:limit=100"; $data = $this->getCensusData($url); if (!$data) { return false; } // Collection of Eloquent objects from API $apiCollection = new Collection(); foreach ($data->facility_type_list as $type) { $values = []; $values['id'] = isset($type->facility_type_id) ? $type->facility_type_id : null; $values['name'] = isset($type->description) ? $type->description : null; $values['slug'] = isset($type->description) ? Str::camel($type->description) : null; $apiCollection->add(new FacilityType($values)); } $facilityTypes = FacilityType::all(); $this->addModels($class, $facilityTypes, $apiCollection); $this->deleteModels($class, $facilityTypes, $apiCollection); $this->updateModels($class, FacilityType::all(), $apiCollection, ['name', 'slug']); }