/** * Akce pro spuštění dolování či zjištění stavu úlohy (vrací JSON) * @param int|null $id * @param string $miner * @param string $data * @throws BadRequestException * @throws ForbiddenRequestException */ public function actionStartMining($id = null, $miner, $data) { /****************************************************************************************************************/ //nalezení daného mineru a kontrola oprávnění uživatele pro přístup k němu $miner = $this->findMinerWithCheckAccess($miner); //nalezení úlohy či založení nové prázdné úlohy (pokud $id==null) $task = $this->tasksFacade->prepareTask($miner, $id); if ($task->state == 'new') { #region nově importovaná úloha //zjištění názvu úlohy z jsonu s nastaveními $dataArr = Json::decode($data, Json::FORCE_ARRAY); //konfigurace úlohy if (!empty($dataArr['taskName'])) { $task->name = $dataArr['taskName']; } else { $task->name = 'task ' . $id; } $task->taskSettingsJson = $data; $this->tasksFacade->saveTask($task); $miningDriver = $this->minersFacade->getTaskMiningDriver($task, $this->getCurrentUser()); $taskState = $miningDriver->startMining(); #endregion } else { #region zjištění stavu již existující úlohy $miningDriver = $this->minersFacade->getTaskMiningDriver($task, $this->getCurrentUser()); $taskState = $miningDriver->checkTaskState(); #endregion } $this->tasksFacade->updateTaskState($task, $taskState); if ($taskState->importState == Task::IMPORT_STATE_WAITING) { //pokud máme na serveru čekající import, zkusíme poslat požadavek na jeho provedení RequestHelper::sendBackgroundGetRequest($this->getBackgroundImportLink($task)); } $taskState = $task->getTaskState(); $this->sendJsonResponse($taskState->asArray()); }