"use strict";

/**
 * Licensed Materials - Property of IBM
 * IBM Cognos Products: Cognos Analytics
 * Copyright IBM Corp. 2015, 2017
 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 */
define(['underscore', 'bi/admin/common/utils/parameters/ParameterValue'], function (_, ParameterValue) {
  return {
    fromJSON: function fromJSON(json) {
      var parameter_values = [];

      _.map(json, function (parameterValueJSON) {
        var parameterValue = new ParameterValue();
        parameterValue.fromJSON(parameterValueJSON);
        parameter_values.push(parameterValue);
      });

      return parameter_values;
    },
    toXML: function toXML(json) {
      var parameter_values = this.fromJSON(json);
      var parameterValuesXML = '<parameterValues xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="bus:parameterValue[]" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:bus="http://developer.cognos.com/schemas/bibus/3/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">';

      _.each(parameter_values, function (parameterValue) {
        parameterValuesXML += parameterValue.toXML();
      }.bind(this));

      parameterValuesXML += '</parameterValues>';
      return parameterValuesXML;
    }
  };
});