/**
  * Check if a knight accomplish with requirements for item
  * @param unknown $equipment_type
  * @param unknown $identificator
  * @param unknown $knight_id
  * @return boolean
  */
 public static function checkAccomplish($equipments_type, $identificator, $knight_id)
 {
     Yii::trace('[APP] Cehck for  ' . "{$equipments_type}, {$identificator}, {$knight_id}");
     // Search all requirements
     $equipmentRequirementsList = self::model()->findAll('identificator=:identificator AND equipments_type=:equipments_type', array(':identificator' => $identificator, ':equipments_type' => $equipments_type));
     if ($equipmentRequirementsList) {
         Yii::trace('[APP] equipment requirement exist');
         // Load knight card
         $knight = Knights::model()->findByPk($knight_id);
         $knightCard = KnightsCard::model()->findByPk($knight_id);
         // Check for each requirement if knight accomplish with it
         // Check if all requirements are accomplish. Load requirements
         foreach ($equipmentRequirementsList as $equipmentRequirements) {
             Yii::trace('[APP] check requirement ' . $equipmentRequirements->requirements_id);
             // Load requirement
             $requirement = Requirements::model()->findByPk($equipmentRequirements->requirements_id);
             Yii::trace('[APP] Load requirement ' . $requirement->id . ': ' . $requirement->level . ' - ' . $requirement->attribute . ' - ' . $requirement->skill);
             // Check level
             if ($requirement->level != null && $requirement->value > $knight->level) {
                 Yii::trace('[APP] No level');
                 return false;
             } else {
                 if ($requirement->attribute != null) {
                     Yii::trace('[APP] Is attribute');
                     // Load name of characteristic
                     $attributeName = Constants::model()->findByPk($requirement->attribute);
                     if ($requirement->value > $knightCard->{$attributeName->name}) {
                         Yii::trace('[APP] NO attribute');
                         return false;
                     }
                 } else {
                     if ($requirement->skill != null) {
                         Yii::trace('[APP] Is skill');
                         $attributeName = Constants::model()->findByPk($requirement->skill);
                         if ($requirement->value > $knightCard->{$attributeName->name}) {
                             Yii::trace('[APP] No skill');
                             return false;
                         }
                     }
                 }
             }
             Yii::trace('[APP] requirement pass');
         }
     }
     Yii::trace('[APP] F**k yeah');
     return true;
 }
 public function actionShowPostcombat()
 {
     $output = array('errno' => 1, 'html' => '');
     //Valid input
     if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0) {
         //Load combat
         if ($combat = Combats::model()->with('fromKnight', 'toKnight')->findByPk($_GET['id'])) {
             //Check if precombat exit
             $postcombats = CombatsPostcombat::model()->findAll('combats_id = :combats_id', array(':combats_id' => $_GET['id']));
             if (count($postcombats) == 2) {
                 //Set data from knight and to knight
                 if ($combat->from_knight == $postcombats[0]->knights_id) {
                     $data = array('combat' => $combat, 'from_knight_postcombat' => &$postcombats[0], 'from_knight_automatic_object_repairs' => array(), 'from_knight_downgrades' => array(), 'to_knight_postcombat' => &$postcombats[1], 'to_knight_automatic_object_repairs' => array(), 'to_knight_downgrades' => array(), 'injuryLabels' => Constants::getLabelsTypeInjuries(), 'knight_card_labels' => array());
                 } else {
                     $data = array('combat' => $combat, 'from_knight_postcombat' => &$postcombats[1], 'from_knight_automatic_object_repairs' => array(), 'from_knight_downgrades' => array(), 'to_knight_postcombat' => &$postcombats[0], 'to_knight_automatic_object_repairs' => array(), 'to_knight_downgrades' => array(), 'injuryLabels' => Constants::getLabelsTypeInjuries(), 'knight_card_labels' => array());
                 }
                 //Load repairs
                 $result = ObjectRepairs::model()->findAll('combats_id = :combats_id', array(':combats_id' => $combat->id));
                 //sort result by knight
                 if (count($result)) {
                     foreach ($result as $repair) {
                         if ($repair['knights_id'] == $combat->from_knight) {
                             //Add to from knight
                             array_push($data['from_knight_automatic_object_repairs'], $repair);
                         } else {
                             array_push($data['to_knight_automatic_object_repairs'], $repair);
                         }
                     }
                 }
                 //Load downgrades!!
                 $downgrades = KnightsEvolution::model()->findAll('combats_id = :combats_id', array(':combats_id' => $combat->id));
                 //sort result by knight
                 if (count($downgrades)) {
                     foreach ($downgrades as $downgrade) {
                         if ($downgrade->knights_id == $combat->from_knight) {
                             array_push($data['from_knight_downgrades'], $downgrade);
                         } else {
                             array_push($data['to_knight_downgrades'], $downgrade);
                         }
                     }
                     //Load knight card labels
                     $data['knight_card_labels'] = KnightsCard::model()->attributeLabelsById();
                 }
                 //	var_dump($data);die;
                 $output['html'] = $this->renderFile(Yii::app()->basePath . '/views/character/dialog_post_combat.php', $data, true);
                 $output['errno'] = 0;
             } else {
                 $output['html'] = 'Se ha producido un error al cargar el postcombate ' . count($postcombats);
             }
         } else {
             $output['html'] = 'No se ha encontrado al combate.';
         }
     } else {
         $output['html'] = 'El identificador del combate no es válido.';
     }
     echo CJSON::encode($output);
 }