public function openStates() { $reps = []; $count = 0; foreach (Location::states as $state => $state_name) { if ($count < 20) { $count++; continue; } echo "{$state} \n"; $request = StateAPI::state($state)->then(function ($data) use(&$reps, &$count) { foreach ($data as $d) { if (!isset($d['state']) || !isset($d['chamber']) || !isset($d['district'])) { continue; } $division = 'ocd-division/country:us/state:' . $d['state'] . '/sld'; $division .= $d['chamber'] == 'upper' ? 'u' : 'l'; $division .= ':' . $d['district']; $entry = []; $rep = Representative::where('division', $division)->first(); $entry['old'] = $rep; if (null === $rep) { echo "!! new division: {$division} \n"; $rep = Representative::create(['division' => $division]); } $rep->load($d); $entry['change'] = []; foreach ($rep->toArray() as $k => $v) { if (null === $entry['old'] || $entry['old']->{$k} !== $v) { $entry['change'][$k] = $v; } } if (count($entry['change']) > 0) { $reps[] = $entry; } } }); $request->wait(); $count++; if ($count > 30) { break; } } return response()->json($reps); }
/** * GET /rep/{id}/flag */ public function flag(Request $request, $id) { $rep = Representative::where('_id', $id)->first(); if (null === $rep) { return $this->error("no representative with id: {$id}"); } $rep->reports()->create(['text' => $request->input('text', '')]); }