public function afterChange(BaseSubjectHandler $subjectHandler, CollectorFix $fix, $data)
 {
     $id = $subjectHandler->getIdByChangeMethod(Module::FIX_CHANGES_AFTER_CHANGE_KEY, $data);
     $originalData = $this->_beforeChangesSnapshots[$id];
     $actualData = $subjectHandler->getSnapshot($id);
     $data = $subjectHandler->analysisOfChanges($actualData, $this->_beforeChangesSnapshots[$id]);
     $fix->setOriginalData($originalData)->setUpdateData($data);
     return true;
 }
 public function change(BaseSubjectHandler $subjectHandler, CollectorFix $fix, $data = array())
 {
     $id = $subjectHandler->getIdByChangeMethod(Module::FIX_CHANGES_ADD_KEY, $data);
     $snapshot = $subjectHandler->getSnapshot($id);
     if (!$snapshot) {
         return false;
     }
     $fix->setOriginalData(array())->setUpdateData($snapshot);
     return true;
 }
 private function _applyReferenceFix(CollectorFix $fix)
 {
     $item = new ReferenceItem();
     $data = $fix->getUpdateData();
     $subject = $fix->getSubject() ?: self::REFERENCE_SUBJECT_ADD;
     $item->reference = $data['reference'];
     $item->id = $data['id'];
     $item->group = $data['group'];
     $item->dbVersion = $data['dbVersion'];
     if ($subject == self::REFERENCE_SUBJECT_ADD) {
         try {
             $this->_getReferenceController()->getReferenceValue($item->id, $item->group, $item->dbVersion);
             $this->_getReferenceController()->getItemCurrentVersionByReference($item->reference);
         } catch (\Exception $e) {
             $this->_getReferenceController()->registerItem($item);
         }
     }
     if ($subject == self::REFERENCE_SUBJECT_REMOVE) {
         $this->_getReferenceController()->removeItemById($item->id, $item->group, $item->dbVersion);
     }
 }
 public function afterChange(BaseSubjectHandler $subjectHandler, CollectorFix $fix, $data)
 {
     $id = $subjectHandler->getIdByChangeMethod(Module::FIX_CHANGES_AFTER_DELETE_KEY, $data);
     $fix->setOriginalData($this->_beforeChangesSnapshots[$id])->setUpdateData($id);
     return true;
 }