Example #1
0
    /**
     * Create a new blueprint from the given array.
     * array(
     *     'name' => 'test',
     *     'userId' => 1,
     *     'itemId' => 1,
     *     'itemTypeId => 1,
     *     'damageType' => 'damage',
     *     'material' => array(
     *         0 => 1,
     *     ),
     *     'percentage' => array(
     *         0 => 100
     *     ),
     *     'materialWeaponModificator' => '0/0',
     *     'technique' => array(
     *         0 => 1,
     *     )
     *     'upgradeHitPoints' => 0,
     *     'upgradeBreakFactor' => 0,
     *     'upgradeInitiative' => 0,
     *     'upgradeWeaponModificator' => '0/0',
     * )
     *
     * @param array $data
     *
     * @return boolean
     */
    public static function create($data)
    {
        if (!$data['name'] && !$data['itemId'] && count($data['material']) === 0) {
            return false;
        }
        $weaponModificatorString = '';
        if (!empty($data['materialWeaponModificator'])) {
            foreach ($data['materialWeaponModificator'] as $materialWeaponModificator) {
                $weaponModificatorString .= $materialWeaponModificator . ' || ';
            }
        }
        $weaponModificators = \Helper\WeaponModificator::getWeaponModificatorArray(substr($weaponModificatorString, 0, -2));
        $upgradeWeaponModificator = \Helper\WeaponModificator::toWeaponModificatorArray($data['upgradeWeaponModificator']['attack'], $data['upgradeWeaponModificator']['parade']);
        $sql = '
			INSERT INTO blueprints
			SET name = ' . \sqlval($data['name']) . ',
				userId = ' . \sqlval($data['userId']) . ',
				itemId = ' . \sqlval($data['itemId']) . ',
				itemTypeId = ' . \sqlval($data['itemTypeId']) . ',
				damageType = ' . \sqlval($data['damageType']) . ',
				materialWeaponModificator = ' . \sqlval(json_encode($weaponModificators)) . ',
				upgradeHitPoints = ' . \sqlval($data['upgradeHitPoints']) . ',
				upgradeBreakFactor = ' . \sqlval($data['upgradeBreakFactor']) . ',
				upgradeInitiative = ' . \sqlval($data['upgradeInitiative']) . ',
				upgradeWeaponModificator = ' . \sqlval(json_encode($upgradeWeaponModificator)) . ',
				bonusRangedFightValue = ' . \sqlval($data['bonusRangedFightValue']) . ',
				reducePhysicalStrengthRequirement = ' . \sqlval($data['reducePhysicalStrengthRequirement']) . '
		';
        $blueprintId = query($sql);
        foreach ($data['material'] as $key => $material) {
            $materialAssetId = false;
            $sql = '
				SELECT
					`materialAssetId`,
					`percentage`
				FROM materialAssets
				WHERE `materialId` = ' . \sqlval($material) . '
					AND !deleted
				ORDER BY percentage DESC
			';
            $materialAssets = \query($sql, true);
            foreach ($materialAssets as $materialAsset) {
                if ($data['percentage'][$key] >= $materialAsset['percentage']) {
                    $materialAssetId = $materialAsset['materialAssetId'];
                    break;
                }
            }
            if (empty($materialAssetId)) {
                $materialAssetId = $materialAssets[0]['materialAssetId'];
            }
            $sql = '
				INSERT INTO materialsToBlueprints
				SET materialId = ' . \sqlval($material) . ',
					blueprintId = ' . \sqlval($blueprintId) . ',
					materialAssetId = ' . \sqlval($materialAssetId) . ',
					percentage = ' . \sqlval($data['percentage'][$key]) . ',
					talent = ' . \sqlval($data['talent'][$key]) . '
			';
            query($sql);
        }
        if (!empty($data['technique'])) {
            foreach ($data['technique'] as $technique) {
                $sql = '
					INSERT INTO techniquesToBlueprints
					SET techniqueId = ' . \sqlval($technique) . ',
						blueprintId = ' . \sqlval($blueprintId) . '
				';
                query($sql);
            }
        }
        return true;
    }