vatModule.service('keyValueDataService', ['enums',
function (enums) {
    return {
        parseValue: function (keyValueData, targetType) {
            // parseValue(50, enums.cellDataType.Accounting)
            // or parseValue({ value: 50, type: enums.cellDataType.Accounting })

            var type, value;
            if (targetType !== undefined) {
                type = targetType;
                value = keyValueData;
            }
            else {
                type = keyValueData.resultType;
                value = keyValueData.value;
            }

            if (!_.isString(value) || _.isEmpty(value)) {
                return value;
            }

            if (!type || type === enums.cellDataType.Accounting || type === enums.cellDataType.Percentage) {
                return parseFloat(value);
            }
            else if (type === enums.cellDataType.Boolean) {
                return value.toLowerCase() === 'true';
            }
            else if (type === enums.cellDataType.String) {
                return value;
            }
            else if (type === enums.cellDataType.Integer) {
                return parseInt(value);
            }
            return value;
        }
    };
}]);