Subversion Repositories bacoAlunos

Rev

Rev 1786 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/**
 * Created by jorgemachado on 28/12/16.
 */

/**
 *
 * @param serviceName
 * @param form
 * @param handlerOk(responseObjJson)
 * @param handlerFail(responseObjJson)
 */

function widgetCall(serviceName,form,handlerOk,handlerFail)
{
    var data = $(form).serialize().replace(/%0D%0A/g, '%0A').replace(/\r?\n/g, "\r\n");

    widgetCallWithActionParameters($(form).attr("action"),serviceName,data,form,handlerOk,handlerFail);
}

/**
 * Use parameters instead of serialize form
 * @param serviceName
 * @param parameters
 * @param form
 * @param handlerOk
 * @param handlerFail
 */

function widgetCallWithParameters(serviceName,parameters,form,handlerOk,handlerFail)
{
    widgetCallWithActionParameters($(form).attr("action"),serviceName,parameters,form,handlerOk,handlerFail);
}

/**
 * Created by jorgemachado on 28/12/16.
 */

/**
 *Use parameters instead of serialize form and the action provided
 * @param serviceName
 * @param webMessagesContainer
 * @param handlerOk(responseObjJson)
 * @param handlerFail(responseObjJson)
 */

function widgetCallWithActionParameters(action,serviceName,parameters,webMessagesContainer,handlerOk,handlerFail)
{
    $(webMessagesContainer).find(".web-messages").html('<div class="alert alert-info">Enviando ...</div>');

    var data = parameters;
    $.ajax({
        url: action + "?dispatch=executeService&serviceJson=" + serviceName,
        type: "POST",
        data: data,
        dataType: "json",
        statusCode: {
            401:function() {
                $("#modalAuthentication").modal({ show : 'true'});
            }
        },
        success: function(resposta)
        {

            $(webMessagesContainer).find(".web-messages").html("");
            if(resposta.service == "error")
            {
                $(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">' + resposta.exception + '</div>');
                if(handlerFail != undefined)
                {
                    handlerFail(resposta.exception);
                }
                alert("Erro de chamada ao Serviço, veja os erros");

            }
            else if(resposta.service == "fail")
            {

                for(var msg in resposta.messages)
                {
                    $(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
                }
                for(var error in resposta.errors)
                {
                    $(webMessagesContainer).find(".web-messages").append('<div class="alert alert-warning">' + resposta.errors[error] + '</div>');
                }
                if(handlerFail != undefined)
                {
                    handlerFail(resposta.response);
                }
                alert("Erro de chamada ao Serviço, veja os erros");

            }
            else if(resposta.service == "ok")
            {
                for(var msg in resposta.messages)
                {
                    $(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
                }
                if(handlerOk != undefined)
                    handlerOk(resposta.response);
            }
        },
        error: function(resposta) {
            $(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor tente novamente</div>');
            if(handlerFail != undefined)
            {
                handlerFail(resposta.exception);
            }
            alert("Erro de chamada ao Serviço, veja os erros");

        }
    });
}


function widgetSimpleCall(serviceName,form,handlerOk,handlerFail){
    var data = $(form).serialize().replace(/%0D%0A/g, '%0A').replace(/\r?\n/g, "\r\n");
    widgetSimpleCallWithActionParameters($(form).attr("action"),serviceName,data,form,handlerOk,handlerFail);
}
/**
 *
 * @param serviceName
 * @param form
 * @param handlerOk()
 * @param handlerFail()
 */

function widgetSimpleCallWithActionParameters(action,serviceName,data,webMessagesContainer,handlerOk,handlerFail)
{
    $(webMessagesContainer).find(".web-messages").html('<div class="alert alert-info">Enviando ...</div>');

    $.ajax({
        url: action + "?dispatch=executeSimpleServiceOkFail&serviceJson=" + serviceName,
        type: "POST",
        data: data,
        dataType: "json",
        statusCode: {
            401:function() {
                $('.modal').modal("hide");
                $("#modalAuthentication").modal({ show : 'true'});
            }
        },
        success: function(resposta)
        {
            $(webMessagesContainer).find(".web-messages").html("");
            if(resposta.service == "error")
            {
                $(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">' + resposta.exception + '</div>');
                if(handlerFail != undefined)
                {
                    handlerFail();
                }
                alert("Erro de chamada ao Serviço, veja os erros");
            }
            else if(resposta.service == "fail")
            {

                for(var msg in resposta.messages)
                {
                    $(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
                }
                for(var error in resposta.errors)
                {
                    $(webMessagesContainer).find(".web-messages").append('<div class="alert alert-warning">' + resposta.errors[error] + '</div>');
                }
                if(handlerFail != undefined)
                {
                    handlerFail();
                }
                alert("Erro de chamada ao Serviço, veja os erros");
            }
            else if(resposta.service == "ok")
            {
                for(var msg in resposta.messages)
                {
                    $(webMessagesContainer).find(".web-messages").append('<div class="alert alert-success">' + resposta.messages[msg] + '</div>');
                }
                for(var error in resposta.errors)
                {
                    $(webMessagesContainer).find(".web-messages").append('<div class="alert alert-warning">' + resposta.errors[error] + '</div>');
                }
                if(handlerOk != undefined)
                    handlerOk();
            }
        },
        error: function(resposta)
        {
            $(webMessagesContainer).find(".web-messages").html('<div class="alert alert-danger">Erro de comunicação, por favor tente novamente</div>');
            if(handlerFail != undefined)
            {
                handlerFail(resposta.exception);
            }
            alert("Erro de chamada ao Serviço, veja os erros");

        }
    });
}



var BacoJS = (function () {

    function orderKeys(obj, expected) {
        var keys = Object.keys(obj).sort(function keyOrder(k1, k2)
        {
            if(k1 == "@class")
                return -1;
            else if(k2 == "@class")
                return 1
            else
                return 0;
            //if (k1 < k2) return -1;
            //else if (k1 > k2) return +1;
            //else return 0;
        });

        var i, after = {};
        for (i = 0; i < keys.length; i++) {
            after[keys[i]] = obj[keys[i]];
            delete obj[keys[i]];
        }

        for (i = 0; i < keys.length; i++) {
            obj[keys[i]] = after[keys[i]];
        }
        return obj;
    }
    function orderKeysRecur(obj, expected)
    {
        if(typeof obj == "object")
            orderKeys(obj, expected);
        for (var k in obj)
        {
            if (typeof obj[k] == "object" && obj[k] !== null)
                orderKeysRecur(obj[k]);
        }
    }

    return {
        stringifyOrdered: function (jsonObj) {
            orderKeysRecur(jsonObj)
            //return JSON.stringify(jsonObj);
            return angular.toJson(jsonObj);
        }
    };
})();

/*var exampleBacoJs =
{
    "xpto" : 1,
    "@class" : "pt.estgp.estgweb.domain.XptoSchool",
    "zgt" : {
        "zgt1" : 1,
        "zgt2" : 2,
        "@class" : "pt.estgp.estgweb.domain.ZgtDepartment"
    }
}*/

//does not affect angular JS lib
//you can use-it with angular
//var ordered = BacoJS.stringifyOrdered(exampleBacoJs);
//console.log(orderedExample);