/**
 * Módulo: Bairro
 */
import * as bairroService from './BairroService';

//TODO: Criar busca paginada
/**
 *
 * @param {type} commit
 */
export const _limparBairro = ({
    commit
}) => {
    commit('LIMPAR_BAIRRO')
}
/**
 * Obtém todos os bairros
 */
export const _obterTodosBairros = ({
    commit,
    dispatch
}) => {
    bairroService.todos()
        .then((response, erro) => {
            let resultado = response.data;
            if (resultado.execucao == "sucesso") {
                commit('CARREGAR_BAIRROS', resultado.dados);
            } else if (resultado.execucao == "erro") {
                notyf.alert(resultado.mensagem);
                console.error(resultado.log);
            }
        })
        .catch((erro) => {
            notyf.alert('Ocorreu um erro desconchecido!');
            console.error('Módulo Bairro: ' + erro);
        })
}
/**
 * Pesquisa bairro por nome
 */
export const _pesquisarBairroPorNome = ({
    commit,
    dispatch
}, nome) => {
    bairroService.pesquisarPorNome(nome)
        .then((response, erro) => {
            let resultado = response.data;
            if (resultado.execucao == "sucesso") {
                commit('CARREGAR_BAIRROS', resultado.dados);
            } else if (resultado.execucao == "erro") {
                notyf.alert(resultado.mensagem);
                console.error(resultado.log);
            }
        })
        .catch((erro) => {
            notyf.alert('Ocorreu um erro desconchecido!');
            console.error('Módulo Bairro: ' + erro);
        })
}
/**
 * Pesquisa bairro por id
 */
export const _pesquisarBairroPorId = ({
    commit,
    dispatch
}, id) => {
    return new Promise((resolve, reject) => {
        bairroService.pesquisarPorId(id)
            .then((response, erro) => {
                let resultado = response.data;
                if (resultado.execucao == "sucesso") {
                    resolve(resultado.dados);
                } else if (resultado.execucao == "erro") {
                    notyf.alert(resultado.mensagem);
                    console.error(resultado.log);
                }
            })
            .catch((erro) => {
                notyf.alert('Ocorreu um erro desconchecido!');
                console.error('Módulo Bairro: ' + erro);
            })
    })
}
/**
 * Salvar bairro
 */
//REVIEW: É realizado um novo carregamento de todos os bairro ao salvar, isso é necessário?
export const _salvarBairro = ({
    commit,
    dispatch
}, bairro) => {
    return new Promise((resolve, reject) => {
        bairroService.salvar(bairro)
            .then((response, erro) => {
                let resultado = response.data;
                if (resultado.execucao == 'sucesso') {
                    notyf.confirm(resultado.mensagem);
                    //commit('SALVAR_BAIRRO', bairro);
                    //dispatch('_obterTodosBairros');
                    resolve();
                } else if (resultado.execucao == 'erro') {
                    notyf.alert(resultado.mensagem);
                    console.error(resultado.log);
                    reject(resultado.mensagem)
                }
            })
            .catch((erro) => {
                notyf.alert('Ocorreu um erro desconchecido!');
                console.error('Módulo Bairro: ' + erro);
            })
    })
}









/**
 * Pesquisa bairro por municipio
 */
export const _pesquisarBairroPorMunicipio = ({
    commit,
    dispatch
}, id) => {
    bairroService.pesquisarPorMunicipio(id)
        .then((response, erro) => {
            let resultado = response.data;
            if (resultado.execucao == "sucesso") {
                commit('CARREGAR_BAIRROS', resultado.dados);
            } else if (resultado.execucao == "erro") {
                notyf.alert(resultado.mensagem);
                console.error(resultado.log);
            }
        })
        .catch((erro) => {
            notyf.alert('Ocorreu um erro desconchecido!');
            console.error('Módulo Bairro: ' + erro);
        })
}
