/**
  * 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());
 }