/** * @author WN * @param Adviser $adviser * @param DataSources $dataSources * @param float $defaultRisk * @return Advice */ public function process(Adviser $adviser, DataSources $dataSources, $defaultRisk = Risk::MINIMUM_RISK) { $advice = Advice::make(['adviser_type' => $adviser->getType(), 'adviser_name' => $adviser->getName()]); $risk = []; foreach ($adviser->getRules() as $rule) { if ($rule->getActive() != Rule::INACTIVE) { $risk = $this->processRule($rule, $advice, $dataSources, $risk); } } if (count($risk) == 0) { $risk[] = $defaultRisk; } $advice->setRisk(Risk::normalize(max($risk))); $advice->setMeta(['processor' => 'Standard processor', 'time' => date('c')]); return $advice; }
/** * @param float $risk * @return $this */ public function setRisk($risk) { return $this->__call('setRisk', [Risk::normalize($risk)]); }