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()); } } } } }
protected function getCRFee($workitem) { $accepted_bid_amount = 0; foreach ($workitem->getFees($workitem->getId()) as $fee) { if ($fee['desc'] == 'Accepted Bid') { $accepted_bid_amount = $fee['amount']; } } $project = new Project(); $project_roles = $project->getRoles($workitem->getProjectId(), "role_title = 'Reviewer'"); if (count($project_roles) != 0) { $crRole = $project_roles[0]; if ($crRole['percentage'] !== null && $crRole['min_amount'] !== null) { $crFee = $crRole['percentage'] / 100 * $accepted_bid_amount; return (double) $crFee < $crRole['min_amount'] ? $crRole['min_amount'] : $crFee; } } return 0; }