var mapper = mapperFactory.createMapperMult(["EstProdCplDemandaParametro"]);

var alterarFiliais = function(){
    if(message.get('acao') == 3){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdFilial': message.get('itens').get(i).get('cdFilial'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.excluirFiliais", param);
        }
    }

    if(message.get('acao') == 2)
       this.mapper.update("EstProdCplDemandaParametro.excluirFiliais", {'cdEmp': message.get('cdEmp'), 'cdCtrDemandaParametro': message.get('cdCtr')});

    if(message.get('acao') == 1 || message.get('acao') == 2){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdUsu': message.get('cdUsu'),
                'cdFilial': message.get('itens').get(i).get('cdFilial'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.incluirFiliais", param);
        }
    }
};

var alterarFabricantes = function(){
    if(message.get('acao') == 4){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdFabric': message.get('itens').get(i).get('cdFabric'),
                'cdCtrDemandaParametro': message.get('cdCtr'),
                'percVariacao':  message.get('itens').get(i).get('percVariacao')
            };
            this.mapper.update("EstProdCplDemandaParametro.elterarFabricantes", param);
        }
    }

    if(message.get('acao') == 3){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdFabric': message.get('itens').get(i).get('cdFabric'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.excluirFabricantes", param);
        }
    }

    if(message.get('acao') == 2)
       this.mapper.update("EstProdCplDemandaParametro.excluirFabricantes", {'cdEmp': message.get('cdEmp'), 'cdCtrDemandaParametro': message.get('cdCtr')});

    if(message.get('acao') == 1 || message.get('acao') == 2){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdUsu': message.get('cdUsu'),
                'cdFabric': message.get('itens').get(i).get('cdFabric'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.incluirFabricantes", param);
        }
    }
};

var alterarLinhas = function(){
    if(message.get('acao') == 4){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdArvMercLinha': message.get('itens').get(i).get('cdArvMercLinha'),
                'cdCtrDemandaParametro': message.get('cdCtr'),
                'percVariacao':  message.get('itens').get(i).get('percVariacao')
            };
            this.mapper.update("EstProdCplDemandaParametro.elterarLinhas", param);
        }
    }

     if(message.get('acao') == 3){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdArvMercLinha': message.get('itens').get(i).get('cdArvMercLinha'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.excluirLinhas", param);
        }
    }

    if(message.get('acao') == 2)
        this.mapper.update("EstProdCplDemandaParametro.excluirLinhas", {'cdEmp': message.get('cdEmp'), 'cdCtrDemandaParametro': message.get('cdCtr')});

    if(message.get('acao') == 1 || message.get('acao') == 2){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdUsu': message.get('cdUsu'),
                'cdArvMercLinha': message.get('itens').get(i).get('cdArvMercLinha'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.incluirLinhas", param);
        }
    }
};

var alterarCategorias = function(){
    if(message.get('acao') == 4){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdArvMercCateg': message.get('itens').get(i).get('cdArvMercCateg'),
                'cdCtrDemandaParametro': message.get('cdCtr'),
                'percVariacao':  message.get('itens').get(i).get('percVariacao')
            };
            this.mapper.update("EstProdCplDemandaParametro.elterarCategorias", param);
        }
    }

    if(message.get('acao') == 3){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdArvMercCateg': message.get('itens').get(i).get('cdArvMercCateg'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.excluirCategorias", param);
        }
    }

    if(message.get('acao') == 2)
        this.mapper.update("EstProdCplDemandaParametro.excluirCategorias", {'cdEmp': message.get('cdEmp'), 'cdCtrDemandaParametro': message.get('cdCtr')});

    if(message.get('acao') == 1 || message.get('acao') == 2){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdUsu': message.get('cdUsu'),
                'cdArvMercCateg': message.get('itens').get(i).get('cdArvMercCateg'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.incluirCategorias", param);
        }
    }
};

var alterarMarcas = function(){
    if(message.get('acao') == 4){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdMc': message.get('itens').get(i).get('cdMc'),
                'cdCtrDemandaParametro': message.get('cdCtr'),
                'percVariacao':  message.get('itens').get(i).get('percVariacao')
            };
            this.mapper.update("EstProdCplDemandaParametro.elterarMarcas", param);
        }
    }

    if(message.get('acao') == 3){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdMc': message.get('itens').get(i).get('cdMc'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.excluirMarcas", param);
        }
    }

    if(message.get('acao') == 2)
        this.mapper.update("EstProdCplDemandaParametro.excluirMarcas", message);

    if(message.get('acao') == 1 || message.get('acao') == 2){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdUsu': message.get('cdUsu'),
                'cdMc': message.get('itens').get(i).get('cdMc'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.incluirMarcas", param);
        }
    }
};

var alterarFamilias = function(){
    if(message.get('acao') == 4){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdArvMercFamilia': message.get('itens').get(i).get('cdArvMercFamilia'),
                'cdCtrDemandaParametro': message.get('cdCtr'),
                'percVariacao':  message.get('itens').get(i).get('percVariacao')
            };
            this.mapper.update("EstProdCplDemandaParametro.elterarFamilias", param);
        }
    }

    if(message.get('acao') == 3){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdArvMercFamilia': message.get('itens').get(i).get('cdArvMercFamilia'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.excluirFamilias", param);
        }
    }

    if(message.get('acao') == 2)
        this.mapper.update("EstProdCplDemandaParametro.excluirFamilias", message);

    if(message.get('acao') == 1 || message.get('acao') == 2){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdUsu': message.get('cdUsu'),
                'cdArvMercFamilia': message.get('itens').get(i).get('cdArvMercFamilia'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.incluirFamilias", param);
        }
    }
};

var alterarProdutos = function(){
    if(message.get('acao') == 4){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdArvMercFamilia': message.get('itens').get(i).get('cdArvMercFamilia'),
                'cdCtrDemandaParametro': message.get('cdCtr'),
                'percMargem':  message.get('itens').get(i).get('percMargem'),
                'percVariacaoAumento':  message.get('itens').get(i).get('percVariacaoAumento')
            };
            this.mapper.update("EstProdCplDemandaParametro.elterarProdutos", param);
        }
    }


    if(message.get('acao') == 3){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdProd': message.get('itens').get(i).get('cdProd'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.excluirProdutos", param);
        }
    }

    if(message.get('acao') == 2)
        this.mapper.update("EstProdCplDemandaParametro.excluirProdutos", message);

    if(message.get('acao') == 1 || message.get('acao') == 2){
        for(let i = 0; i<message.get('itens').size(); i++){
            let param = {
                'cdEmp': message.get('cdEmp'),
                'cdUsu': message.get('cdUsu'),
                'cdProd': message.get('itens').get(i).get('cdProd'),
                'cdCtrDemandaParametro': message.get('cdCtr')
            };
            this.mapper.insert("EstProdCplDemandaParametro.incluirProdutos", param);
        }
    }
};

try{

    if(message.get('atributo') == 'filiais'){
        alterarFiliais();
    }else if(message.get('atributo') == 'fabricantes'){
        alterarFabricantes();
    }else if(message.get('atributo') == 'linhas'){
        alterarLinhas();
    }else if(message.get('atributo') == 'categorias'){
        alterarCategorias();
    }else if(message.get('atributo') == 'marcas'){
        alterarMarcas();
    }else if(message.get('atributo') == 'familias'){
        alterarFamilias();
    }else if(message.get('atributo') == 'produtos'){
        alterarProdutos();
    }

    mapper.update('EstProdCplDemandaParametro.alterarEstProdCplDemandaParametro', {'cdCtr': message.get('cdCtr'), 'cdUsu': message.get('cdUsu')});

    mapper.commit();

}catch(err){
    mapper.rollback();
    if(err.code){
        throw JSON.stringify(err);
    }else{
        throw err;
    }
}