public function addFeesToCompletedJob($include_review = false) { // workitem is DONE, calculate the creator fee based on project roles // and accepted bid if ($this->hasAcceptedBids()) { $reviewer_fee = 0; $reviewer_fee_desc = '/^Code Review - comment/'; $reviewer_fee_added = false; $fees = $this->getFees($this->getId()); foreach ($fees as $fee) { // find the accepted bid amount if ($fee['desc'] == 'Accepted Bid') { $accepted_bid_amount = $fee['amount']; } if (preg_match($reviewer_fee_desc, $fee['desc'])) { $reviewer_fee_added = true; } } if (!$reviewer_fee_added && $include_review) { $project = new Project(); $project_roles = $project->getRoles($this->getProjectId(), "role_title = 'Reviewer'"); if (count($project_roles) != 0) { error_log("[FEES] we have a role for reviewer"); $reviewer_role = $project_roles[0]; if ($reviewer_role['percentage'] !== null && $reviewer_role['min_amount'] !== null) { $reviewer_fee = $reviewer_role['percentage'] / 100 * $accepted_bid_amount; if ((double) $reviewer_fee < $reviewer_role['min_amount']) { $reviewer_fee = $reviewer_role['min_amount']; } // add the fee $reviewer_fee_detail = 'Code Review - comment'; Fee::add($this->getId(), $reviewer_fee, $fee_category, $reviewer_fee_detail, $this->getCReviewerId(), $is_expense, $is_rewarder); // and reduce the runners budget $myRunner = new User(); $myRunner->findUserById($this->getRunnerId()); $myRunner->updateBudget(-$runner_fee, $this->getBudget_id()); } } } } }
public function updateSandboxUrl($id) { $this->view = null; try { $workitem = new WorkItem($id); $user = User::find(Session::uid()); if ($workitem->getMechanicId() != $user->getId() && !$workitem->getIsRelRunner() || $workitem->getStatus() == 'Done') { throw new Exception('Action not allowed'); } $url = trim($_POST['url']); $notes = trim($_POST['notes']) ? trim($_POST['notes']) : null; $workitem->setSandbox($url); $workitem->save(); if ($notes) { //add review notes $fee_amount = 0.0; $fee_desc = 'Review Notes: ' . $notes; $mechanic_id = $workitem->getMechanicId(); $itemid = $workitem->getId(); $is_expense = 1; $fee_category = ''; Fee::add($itemid, $fee_amount, $fee_category, $fee_desc, $mechanic_id, $is_expense); } $journal_message = '\\#' . $workitem->getId() . ' updated by @' . $user->getNickname() . " Branch URL: {$url}"; Utils::systemNotification($journal_message); echo json_encode(array('success' => false, 'message' => $journal_message)); } catch (Exception $e) { echo json_encode(array('success' => false, 'message' => $e->getMessage())); } }