public function getAction($post = null, $action = null) { $post = Post::find($post); if (!$post) { app()->abort(422); } if ($action) { // Log action and push to queue $log = Log::firstOrNew(['reason' => $action, 'market_item_id' => $post->market()->whereAction($action)->first()->id]); if (!$log->id) { Auth::user()->log()->save($log); $job = (new AwaitAction($log))->onQueue('check'); $this->dispatch($job); } else { return ['error' => trans('app.action_duplicate')]; } } if (!$post) { return ['success' => true]; } $url = !$action ? false : $this->social->with($post->provider)->action($action, $post->provider_id); if ($url === true) { return ['success' => true]; } if (!$url || !parse_url($url)) { $url = $post->link; } return ['success' => true, 'redirect' => $url]; }