/**
  * 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;
 }