public function getBeastData($id) { $retArray = array(); if (Beast::where('TaxonID', '=', $id)->count() > 0) { $beast = Beast::where('TaxonID', '=', $id)->first(); if (isset($beast->AcceptedCommonName)) { $beastName = '%' . $beast->AcceptedCommonName . '%'; $stories = Story::where(function ($query) use($beastName) { $query->where('Subjects', 'like', $beastName)->orWhere('Keywords', 'like', $beastName); })->get(); $retArray['stories'] = $stories; } $sightings = Sighting::where('TaxonID', '=', $id)->orderBy('Date', 'DESC'); if ($sightings->count() > 0) { $sighting = $sightings->first(); if (isset($beast->ScientificName)) { $apiSighting = $this->getLatestAPISighting($beast->ScientificName); if (count($apiSighting > 0) && $apiSighting[0] > $sighting->Date) { $retArray['sighting'] = array('longitude' => $apiSighting[1][0], 'latitude' => $apiSighting[1][1], 'date' => $apiSighting[0], 'name' => $apiSighting[2]); } else { $retArray['sighting'] = array('longitude' => $sighting->Longitude, 'latitude' => $sighting->Latitude, 'date' => $sighting->Date, 'name' => $sighting->Username); } } else { $retArray['sighting'] = array('longitude' => $sighting->Longitude, 'latitude' => $sighting->Latitude, 'date' => $sighting->Date, 'name' => $sighting->Username); } } else { if (isset($beast->ScientificName)) { $apiSighting = $this->getLatestAPISighting($beast->ScientificName); if (count($apiSighting) > 0) { $retArray['sighting'] = array('longitude' => $apiSighting[1][0], 'latitude' => $apiSighting[1][1], 'date' => $apiSighting[0], 'name' => $apiSighting[2]); } else { $retArray['sighting'] = array(); } } else { $retArray['sighting'] = array(); } } $retArray['info'] = $beast; } return $retArray; }