﻿//webServiceUrl:url del webservice
//WebServiceMethod: metodo da chiamare
function WebService(webServiceUrl, WebServiceMethod) {
    this.webServiceUrl = webServiceUrl;
    this.WebServiceMethod = WebServiceMethod;
    this.successFunction = null;
    this.data=new Array();

    //Aggiunge un parametro alla lista
    //parameterName: nome del parametro che si aspetta il ws
    //parameterValue: oggetto javascript da inviare
    this.appendParameter = function(parameterName, parameterValue) {
        var param = new WebServiceArgument(parameterName, parameterValue);
        this.data.push(param);
    };
    
    //Svuota la lista di parametri
    this.clearParameters= function () {
        this.data = new Array();
    }
    //converte la lista di parametri in una stringa corrispondente all'oggetto JSON
    this.getAsString = function() {
        var result = "{";
        var i = 0;
        for (i = 0; i < this.data.length; i++) {
            result += this.data[i].getAsString() + ",";
        };
        result = result.substring(0, result.length - 1);
        return result + "}";
    }
    //Chiama il WS.
    this.callWebService = function() {
        $.ajax({
            type: "POST",
            url: this.webServiceUrl + "/" + this.WebServiceMethod,
            data: this.getAsString(),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: this.successFunction,
            error: function(msg) { alert(msg); }
        });

    };
}

//Argomento da inviare al WS.
function WebServiceArgument(parameterName, parameterValue) {
    this.parameterName = parameterName;
    this.parameterValue = parameterValue;
    //converte il parametro in una stringa corrispondente all'oggetto JSON
    this.getAsString = function() {
    if(parameterValue==null)
        return parameterName + ":null";
    return parameterName + ":" + JSON.stringify(parameterValue);
    };

}
