/** * Creates a rule with the given attributes and adds it to the university. * * @param string * @param string $semesterFormat * @param string $semesterPattern * @param bool $overview * @param string $semesterStartSummer * @param string $semesterStartWinter * @param double $gradeFactor * @return Rule */ protected final function createRule($name, $semesterFormat, $semesterPattern, $overview = false, $semesterStartSummer = NULL, $semesterStartWinter = NULL, $gradeFactor = 1.0) { // fill array for rule creation $ruleAttributes = ['name' => $name, 'semester_format' => $semesterFormat, 'semester_pattern' => $semesterPattern, 'semester_start_summer' => $semesterStartSummer, 'semester_start_winter' => $semesterStartWinter, 'grade_factor' => $gradeFactor, 'overview' => $overview]; // if $rules array is not empty -> this is an update if (!empty($this->rules)) { $ruleId = array_shift($this->rules); $rule = Rule::findOrFail($ruleId); $rule->update($ruleAttributes); // clear all actions and transformer mappings of rule $this->clearRule($rule); } else { $rule = new Rule($ruleAttributes); // add rule to university $this->university->rules()->save($rule); } return $rule; }