make(Kernel::class)->bootstrap(); if (! $app->environment('testing') || DB::connection()->getDatabaseName() !== $database) { throw new LogicException('Worker não isolado.'); } DB::select('select set_config(?, ?, false)', ['application_name', 'sgc_purchase_controls_'.$argv[4]]); $pid = DB::selectOne('select pg_backend_pid() as pid')->pid; $user = User::query()->findOrFail($argv[2]); auth()->guard()->setUser($user); $payload = json_decode(stream_get_contents(STDIN), true, 512, JSON_THROW_ON_ERROR); $resultId = null; try { if ($payload['action'] === 'issue') { $resultId = app(PurchaseWorkflow::class)->issue($user, PurchaseAward::query()->findOrFail($argv[3]))->id; } elseif ($payload['action'] === 'request') { $resultId = app(PurchaseRevisionWorkflow::class)->request($user, PurchaseAward::query()->findOrFail($argv[3]), 'Cancelamento concorrente exclusivamente fictício')->id; } elseif ($payload['action'] === 'revise') { $resultId = app(PurchaseRevisionWorkflow::class)->revise($user, AwardCancellation::query()->findOrFail($argv[3]), today()->addWeek()->format('Y-m-d'), 'Revisão concorrente exclusivamente fictícia')->id; } else { app(PurchaseRevisionWorkflow::class)->review($user, AwardCancellation::query()->findOrFail($argv[3]), $payload['decision'], 'Decisão concorrente exclusivamente fictícia'); } $status = 200; } catch (ValidationException) { $status = 422; } echo json_encode(['status' => $status, 'backend_pid' => $pid, 'result_id' => $resultId], JSON_THROW_ON_ERROR);