/** * Akce pro vytvoření nového uživatelského účtu na základě zaslaných hodnot * @SWG\Post( * tags={"Miners"}, * path="/miners", * summary="Create new miner", * security={{"apiKey":{}},{"apiKeyHeader":{}}}, * produces={"application/json", "application/xml"}, * consumes={"application/json", "application/xml"}, * @SWG\Parameter( * description="Miner", * name="miner", * required=true, * @SWG\Schema(ref="#/definitions/MinerInput"), * in="body" * ), * @SWG\Response( * response=201, * description="Miner created successfully, returns details of Miner.", * @SWG\Schema(ref="#/definitions/MinerResponse") * ), * @SWG\Response( * response=422, * description="Sent values are not acceptable!", * @SWG\Schema(ref="#/definitions/InputErrorResponse") * ) * ) */ public function actionCreate() { //prepare Miner from input values /** @var Miner $miner */ $miner = new Miner(); /** @var array $data */ $data = $this->input->getData(); $miner->name = $data['name']; $miner->type = $data['type']; $miner->datasource = $this->datasource; if (!empty($this->ruleSet)) { $miner->ruleSet = $this->ruleSet; } $miner->created = new \DateTime(); $miner->user = $this->getCurrentUser(); $this->minersFacade->saveMiner($miner); $metasourceTask = $this->metasourcesFacade->startMinerMetasourceInitialization($miner, $this->minersFacade); while ($metasourceTask && $metasourceTask->state != MetasourceTask::STATE_DONE) { $metasourceTask = $this->metasourcesFacade->initializeMinerMetasource($miner, $metasourceTask); usleep(100); } $this->metasourcesFacade->deleteMetasourceTask($metasourceTask); //send response $this->actionRead($miner->minerId); }
/** * Akce pro inicializaci mineru (vytvoření metasource) - může trvat delší dobu... * @param int $id - ID mineru * @param int $task - ID dlouhotrvající úlohy * @throws BadRequestException * @throws \Exception */ public function actionInitMinerMetasource($id, $task) { $miner = $this->findMinerWithCheckAccess($id); $metasourceTask = $this->metasourcesFacade->findMetasourceTask($task); $metasourceTask = $this->metasourcesFacade->initializeMinerMetasource($miner, $metasourceTask); if ($metasourceTask->state == MetasourceTask::STATE_DONE) { //úloha již doběhla - přesměrujeme uživatele na vytvořený miner $this->metasourcesFacade->deleteMetasourceTask($metasourceTask); $this->sendJsonResponse(['redirect' => $this->link('openMiner', ['id' => $miner->minerId])]); } elseif ($metasourceTask->state == MetasourceTask::STATE_IN_PROGRESS) { //úloha je v průběhu $this->sendJsonResponse(['message' => $metasourceTask->getPpTask()->statusMessage, 'state' => $metasourceTask->state]); } else { throw new BadRequestException(); } }