Example #1
0
 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());
                 }
             }
         }
     }
 }
Example #2
0
 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;
 }