public function toExecutable() { $rb = new RuleBuilder(); $op = $this->operator; $actions = []; foreach ($this->getActions() as $action) { $actions[] = $action->toExecutable(); } $rule = $rb->create($this->name, $this->datatype, $op->toExecutable(), $actions); $rule->exists(); // this is very inefficient, it needs future improvement return $rule; }
public function up() { $rb = new RuleBuilder(); $submisions = $rb->create('current_user_submissions', 'submission', $rb['submission']['score']->greaterThan($rb['score_threshold']), [$rb['(bonus)']->assign($rb['(bonus)']->add($rb['points']))]); $rb['(bonus)'] = 0; $rb['submission']['score'] = 0; $rb['score_threshold'] = 0; $rb['points'] = 0; $rg = new RuleGroup('experience'); $rg->add($submisions); $rg->saveRules(); // $rule = $rb->create('allscores', 'submission', $rb->tautology(), [$rb['(total_score)']->assign($rb['(total_score)']->add($rb['score']))]); // // $rb['(total_score)'] = 0; // $rb['score'] = 0; // // $rg = new RuleGroup('experienceRules'); // $rg->add($rule); // $rg->saveRules(); // // // $scorebonus = $rb->create('scorebonus', 'submission', $rb['score']->greaterThan($rb['score_threshhold']), [$rb['(bonus)']->assign($rb['(bonus)']->add($rb['base_bonus']))]); // // $rb['base_bonus'] = 15; // $rb['score_threshold'] = 90; // $rb['(bonus)'] = 0; // this is important to get the bonus to default to 0 on first calculation // // $rg2 = new RuleGroup('bonusRules'); // $rg2->add($scorebonus); // $rg2->saveRules(); //inform Xylum of the rules this component will be using $cType = ComponentTypes::firstOrNew(array('type' => 'experience')); $cType->type = 'experience'; $cType->save(); $ruleId = $submisions->getId(); $componentRule = ComponentRules::firstOrNew(array('rule_id' => $ruleId, 'component_id' => $cType->id)); $componentRule->rule_id = $ruleId; $componentRule->component_id = $cType->id; $componentRule->save(); }