public function save(Kwf_Model_Row_Interface $row, $data)
 {
     if ($data) {
         $parentRow = $row->getParentRow('ComponentToTag');
         $row->status = 'denied';
         $row->tags_to_components_id = null;
         $row->save();
         $parentRow->delete();
     }
 }
 protected function _afterSave(Kwf_Model_Row_Interface $row, $submitRow)
 {
     $question = $row->getParentRow('TrainingContentQuestion');
     $result = $question->getParentRow('TrainingResult');
     $group = $result->getParentRow('TrainingGroup');
     $questionsModel = Kwf_Model_Abstract::getInstance('TrainingContentQuestions');
     $questionsSelect = $questionsModel->select()->whereEquals('resultId', $result->id);
     $questions = $questionsModel->getRows($questionsSelect);
     $totalScore = 0;
     $numberOfPassedQuestions = 0;
     foreach ($questions as $question) {
         $answersModel = Kwf_Model_Abstract::getInstance('TrainingContentAnswers');
         $answersSelect = $answersModel->select()->whereEquals('contentQuestionId', $question->id);
         $answers = $answersModel->getRows($answersSelect);
         $questionIsAnswered = 0;
         foreach ($answers as $answer) {
             if ($answer->isSelected) {
                 if ($answer->isCorrect) {
                     $totalScore += 1;
                 } else {
                     $totalScore -= 1;
                 }
                 $questionIsAnswered += 1;
             } else {
                 if ($answer->isCorrect) {
                     $totalScore -= 1;
                 }
             }
         }
         if ($questionIsAnswered > 0) {
             $numberOfPassedQuestions += 1;
         }
     }
     if ($numberOfPassedQuestions == count($questions)) {
         $scoreInPercents = $totalScore * 100.0 / $result->totalScore;
         $typeModel = Kwf_Model_Abstract::getInstance('Linkdata');
         if ($group->isDifGrade == 0) {
             if ($scoreInPercents >= 51) {
                 $typeSelect = $typeModel->select()->where(new Kwf_Model_Select_Expr_Sql("name = 'Оценки' AND value = 'зачет'"));
                 $gradeRow = $typeModel->getRow($typeSelect);
                 if ($gradeRow != NULL) {
                     $result->gradeId = $gradeRow->id;
                     $result->gradeName = $gradeRow->value;
                 }
             }
         } else {
             if ($scoreInPercents >= 90) {
                 $typeSelect = $typeModel->select()->where(new Kwf_Model_Select_Expr_Sql("name = 'Оценки' AND value = 'пять'"));
                 $gradeRow = $typeModel->getRow($typeSelect);
                 if ($gradeRow != NULL) {
                     $result->gradeId = $gradeRow->id;
                     $result->gradeName = $gradeRow->value;
                 }
             } else {
                 if ($scoreInPercents >= 80) {
                     $typeSelect = $typeModel->select()->where(new Kwf_Model_Select_Expr_Sql("name = 'Оценки' AND value = 'четыре'"));
                     $gradeRow = $typeModel->getRow($typeSelect);
                     if ($gradeRow != NULL) {
                         $result->gradeId = $gradeRow->id;
                         $result->gradeName = $gradeRow->value;
                     }
                 } else {
                     if ($scoreInPercents >= 75) {
                         $typeSelect = $typeModel->select()->where(new Kwf_Model_Select_Expr_Sql("name = 'Оценки' AND value = 'три'"));
                         $gradeRow = $typeModel->getRow($typeSelect);
                         if ($gradeRow != NULL) {
                             $result->gradeId = $gradeRow->id;
                             $result->gradeName = $gradeRow->value;
                         }
                     } else {
                         $result->gradeId = 0;
                         $result->gradeName = trlKwf('Too bad');
                     }
                 }
             }
         }
         $task = $result->getParentRow('Task');
         if ($task != NULL) {
             $task->status = 1;
             $task->save();
         }
         if ($result->gradeId != 0) {
             $training = $group->getParentRow('Training');
             $typeSelect = NULL;
             if ($training != NULL && $training->docTypeId != 0) {
                 $typeSelect = $typeModel->select()->whereEquals('id', $training->docTypeId);
             }
             if ($typeSelect != NULL) {
                 $typeRow = $typeModel->getRow($typeSelect);
                 $m = Kwf_Model_Abstract::getInstance('Documents');
                 $row = $m->createRow();
                 $row->typeId = $typeRow->id;
                 $row->typeName = $typeRow->value;
                 $row->gradeId = $result->gradeId;
                 $row->gradeName = $result->gradeName;
                 $row->gradeVisible = 1;
                 $row->comment = $result->trainingName . ': ' . $result->trainingGroupName;
                 $row->companyId = 0;
                 $row->startDate = date('d-m-Y H:i:s');
                 $row->save();
             }
         }
         $result->currentScore = $totalScore;
         $result->save();
     }
 }