public function doTask($taskId) { $task = $this->getTaskById($taskId); if (!isset($task)) { return false; } $userTask = new UserTask(); $userTask->setIsDone(true); $userTask->setTaskId($task->getTaskId()); $userTask->setUserId(App::getUserId()); $userTask->setCreateDate(date(Defines::SQL_DATE_TIME_FORMAT)); $this->db->insert('users_tasks', $userTask->toArray()); $givenAmount = $task->getPrice(); $commission = $task->getCommission(); $takenAmount = $givenAmount + $commission; $query = "UPDATE users SET\n users.balance = users.balance - :takenAmount,\n users.rating = users.rating + 2\n WHERE partnerId = :partnerId AND users.vkId = :ownerId;\n UPDATE users SET\n users.balance = users.balance + :givenAmount,\n users.rating = users.rating + 1\n WHERE partnerId = :partnerId AND users.vkId = :userId;\n UPDATE tasks SET\n tasks.doneCount = tasks.doneCount + 1,\n tasks.givenAmount = :givenAmount,\n tasks.takenAmount = :takenAmount,\n tasks.commission = :commission\n WHERE partnerId = :partnerId AND taskId = :taskId;"; $bind = ['partnerId' => App::getPartnerId(), 'ownerId' => $task->getOwnerId(), 'userId' => App::getUserId(), 'givenAmount' => $givenAmount, 'takenAmount' => $takenAmount, 'commission' => $commission, 'taskId' => $task->getTaskId()]; return $this->db->run($query, $bind); }