/**
  * Funkce vracející instanci zvoleného mineru po kontrole, jestli má uživatel právo k němu přistupovat
  * @param int|Miner $miner
  * @return Miner
  * @throws BadRequestException
  * @throws ForbiddenRequestException
  */
 protected function findMinerWithCheckAccess($miner)
 {
     if (!$miner instanceof Miner) {
         try {
             $miner = $this->minersFacade->findMiner($miner);
         } catch (\Exception $e) {
             throw new BadRequestException('Requested miner not specified!', 404, $e);
         }
     }
     $this->checkMinerAccess($miner);
     return $miner;
 }
 /**
  * Funkce nastavující konfiguraci aktuálně otevřeného mineru
  * @param array $minerConfig
  * @param bool $save = true
  */
 private function setMinerConfig($minerConfig, $save = true)
 {
     $this->miner->setConfig($minerConfig);
     $this->minerConfig = $minerConfig;
     if ($save) {
         $this->minersFacade->saveMiner($this->miner);
     }
 }
 /**
  * Metoda pro kontrolu oprávněnosti přistupovat ke zvolenému mineru
  * @param Miner|int|null $miner
  * @throws UnauthorizedRequestException
  */
 protected function checkMinerAccess($miner)
 {
     if (!$this->minersFacade->checkMinerAccess($miner, $this->getCurrentUser())) {
         throw new UnauthorizedRequestException('You are not authorized to use the selected miner!');
     }
 }
 /**
  * Funkce pro inicializaci Metasource pro konkrétní miner
  *
  * @param Miner $miner
  * @param MinersFacade $minersFacade
  * @return MetasourceTask
  */
 public function startMinerMetasourceInitialization(Miner $miner, MinersFacade $minersFacade)
 {
     //vytvoření úlohy pro
     $ppType = $this->preprocessingFactory->getPreprocessingTypeByDatabaseType($miner->datasource->type);
     /** @var PpConnection $ppConnection - DB/API connection for preprocessing */
     $ppConnection = $this->preprocessingFactory->getDefaultPpConnection($ppType, $miner->user);
     $metasource = Metasource::newFromPpConnection($ppConnection);
     $metasource->datasource = $miner->datasource;
     $metasource->state = Metasource::STATE_PREPARATION;
     $metasource->user = $miner->user;
     $this->saveMetasource($metasource);
     //připojení metasource k mineru
     $miner->metasource = $metasource;
     $minersFacade->saveMiner($miner);
     //vytvoření úlohy, v rámci které dojde k inicializaci
     $metasourceTask = new MetasourceTask();
     $metasourceTask->type = MetasourceTask::TYPE_INITIALIZATION;
     $metasourceTask->state = MetasourceTask::STATE_NEW;
     $metasourceTask->metasource = $metasource;
     $this->saveMetasourceTask($metasourceTask);
     return $metasourceTask;
 }