/** * Edit a criteriagroup * * @param int $level * @param StepCondition $conditionDB * @param Criteriagroup $criteriagroupDB * @return Criteriagroup */ public function editCriteriagroup($level = 0, $currentOrder = 0, Criteriagroup $parent = null, StepCondition $conditionDB, Criteriagroup $criteriagroupDB) { // Update criteriagroup properties $criteriagroupDB->setStepCondition($conditionDB); $criteriagroupDB->setParent($parent); $criteriagroupDB->setLvl($level); $criteriagroupDB->setOrder($currentOrder); // Save modifications $this->om->persist($criteriagroupDB); return $criteriagroupDB; }
/** * Update an existing group of criteria. * * @param StepCondition $condition * @param int $level * @param Criteriagroup $parent * @param int $order * @param \stdClass $groupStructure * @param Criteriagroup $group * * @return Criteriagroup */ public function editGroup(StepCondition $condition, $level = 0, Criteriagroup $parent = null, $order = 0, \stdClass $groupStructure, Criteriagroup $group) { // Update group properties $group->setCondition($condition); $group->setParent($parent); $group->setLvl($level); $group->setOrder($order); // Store existing Criteria to remove those that no longer exist $existingCriteria = $group->getCriteria()->toArray(); $toProcess = !empty($groupStructure->criterion) ? $groupStructure->criterion : []; // Manages criteria $createdCriteria = $this->updateCriteria($group, $toProcess); // Clean CriteriaGroups to remove $this->cleanCriteria($group, $createdCriteria, $existingCriteria); // Save modifications $this->om->persist($group); return $group; }