/**
  * @param ItemRawData $item
  *
  * @return string
  */
 public function proficiency(ItemRawData $item)
 {
     $map = $this->getApp()['item.skyforge.service']->getQualityMap();
     if (!empty($map[$item->getLevel()]) && !empty($map[$item->getLevel()][$item->getQuality()])) {
         $proficiency = $map[$item->getLevel()][$item->getQuality()];
     } else {
         $proficiency = $item->getLevel() . ' lvl';
     }
     return $proficiency;
 }
 /**
  * @param \stdClass $slot
  *
  * @return ItemRawData
  */
 private function createItem($slot)
 {
     $item = $this->itemCollection->findOneByName($slot->name);
     if (!$item) {
         throw new \InvalidArgumentException(sprintf("No item with name '%s' in data base", $slot->name));
     }
     $data = new ItemRawData();
     $data->setItem($item)->setPrestige($slot->prestige)->setLevel($slot->level)->setQuality($slot->quality)->setResourceId($slot->resourceId);
     if (!empty($slot->innateStats)) {
         $props = array();
         foreach ($slot->innateStats as $el) {
             $props[$el->properties->name] = $el->properties->value;
         }
         foreach ($slot->acquiredStats as $el) {
             $props[$el->properties->name] = $el->properties->value;
         }
         $propString = serialize($props);
         if (strlen($propString) > 255) {
             throw new RuntimeException(sprintf("Properties string '%s' is longer then 255 chars", $propString));
         }
         $data->setPropertiesString($propString);
     }
     if (!empty($slot->talents)) {
         $talents = array();
         foreach ($slot->talents as $talent) {
             $talents[] = $talent;
         }
         $talentsString = serialize($talents);
         if (strlen($talentsString) > 1024) {
             throw new RuntimeException(sprintf("Talents string '%s' is longer then 1024 chars", $talentsString));
         }
         $data->setTalentsString($talentsString);
     }
     return $data;
 }