Esempio n. 1
0
 /**
  * This method calculates a fee which is set by Crowdfunding Finance.
  *
  * @param $fundingType
  * @param $fees
  * @param $txnAmount
  *
  * @return float
  */
 protected function calculateFee($fundingType, $fees, $txnAmount)
 {
     $result = 0;
     $feePercent = 0.0;
     $feeAmount = 0.0;
     switch ($fundingType) {
         case 'FIXED':
             $feePercent = ArrayHelper::getValue($fees, 'fixed_campaign_percent', 0.0, 'float');
             $feeAmount = ArrayHelper::getValue($fees, 'fixed_campaign_amount', 0.0, 'float');
             break;
         case 'FLEXIBLE':
             $feePercent = ArrayHelper::getValue($fees, 'flexible_campaign_percent', 0.0, 'float');
             $feeAmount = ArrayHelper::getValue($fees, 'flexible_campaign_amount', 0.0, 'float');
             break;
     }
     // Calculate fee based on percent.
     if ($feePercent > 0) {
         // Calculate amount.
         $feePercentAmount = Prism\Utilities\MathHelper::calculateValueFromPercent($feePercent, $txnAmount);
         if ($txnAmount > $feePercentAmount) {
             $result += (double) $feePercentAmount;
         }
     }
     // Calculate fees based on amount.
     if ($feeAmount > 0 and $txnAmount > $feeAmount) {
         $result += $feeAmount;
     }
     // Check for invalid value that is less than zero.
     if ($result < 0) {
         $result = 0;
     }
     return (double) $result;
 }