/*
Copyright 2012-2017 Jose Robson Mariano Alves
This file is part of bgfinancas.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package badernageral.bgfinancas.modulo.transferencia;
import badernageral.bgfinancas.biblioteca.ajuda.Ajuda;
import badernageral.bgfinancas.biblioteca.contrato.Categoria;
import badernageral.bgfinancas.biblioteca.contrato.Controlador;
import badernageral.bgfinancas.biblioteca.utilitario.Animacao;
import badernageral.bgfinancas.biblioteca.sistema.Kernel;
import badernageral.bgfinancas.biblioteca.utilitario.Validar;
import badernageral.bgfinancas.biblioteca.sistema.Janela;
import badernageral.bgfinancas.biblioteca.sistema.Tabela;
import badernageral.bgfinancas.biblioteca.tipo.Duracao;
import badernageral.bgfinancas.biblioteca.tipo.Operacao;
import badernageral.bgfinancas.biblioteca.tipo.Posicao;
import badernageral.bgfinancas.biblioteca.tipo.Status;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableView;
import badernageral.bgfinancas.modelo.Conta;
import badernageral.bgfinancas.modelo.Transferencia;
import badernageral.bgfinancas.modelo.TransferenciaCategoria;
import badernageral.bgfinancas.template.cena.CenaMovimento;
public final class TransferenciaControlador implements Initializable, Controlador {
private final String TITULO = idioma.getMensagem("transferencias");
@FXML private CenaMovimento cenaController;
private ObservableList<Transferencia> itens;
private final Tabela<Transferencia> tabela = new Tabela<>();
private final TableView<Transferencia> tabelaLista = new TableView<>();
@Override
public void initialize(URL url, ResourceBundle rb) {
Kernel.setTitulo(TITULO);
cenaController.setTitulo(TITULO);
cenaController.setTabela(tabelaLista);
tabela.prepararTabela(tabelaLista);
tabela.adicionarColuna(tabelaLista, idioma.getMensagem("categoria"), "nomeCategoria");
tabela.adicionarColuna(tabelaLista, idioma.getMensagem("item"), "nomeItem");
tabela.adicionarColuna(tabelaLista, idioma.getMensagem("descricao"), "descricao");
tabela.adicionarColunaNumero(tabelaLista, idioma.getMensagem("valor"), "valor");
tabela.adicionarColuna(tabelaLista, idioma.getMensagem("conta_origem"), "nomeContaOrigem");
tabela.adicionarColuna(tabelaLista, idioma.getMensagem("conta_destino"), "nomeContaDestino");
tabela.adicionarColunaDataHora(tabelaLista, idioma.getMensagem("data"), "dataHora");
new TransferenciaCategoria().montarSelectCategoria(cenaController.getChoiceCategoria());
acaoFiltrar(false);
}
@Override
public void acaoFiltrar(Boolean animacao){
String id_categoria = null;
Categoria despesaCategoria = cenaController.getCategoriaSelecionada();
if(!despesaCategoria.getIdCategoria().equals("todas")) {
id_categoria = despesaCategoria.getIdCategoria();
}
tabelaLista.setItems(new Transferencia().setFiltro(cenaController.getFiltro().getText()).setIdCategoria(id_categoria).listar());
if(animacao){
Animacao.fadeOutIn(tabelaLista);
}
cenaController.atualizarTabelaConta(animacao);
}
@Override
public void acaoVoltar() {
Kernel.principal.acaoVoltar();
}
@Override
public void acaoCadastrar(int botao) {
if(botao==1){
TransferenciaFormularioControlador Controlador = Janela.abrir(Transferencia.FXML_FORMULARIO, TITULO);
Controlador.cadastrar(null);
}
}
@Override
public void acaoAlterar(int tabela) {
if(tabela==1){
itens = tabelaLista.getSelectionModel().getSelectedItems();
if(Validar.alteracao(itens, cenaController.getBotaoAlterar())){
TransferenciaFormularioControlador Controlador = Janela.abrir(Transferencia.FXML_FORMULARIO, TITULO);
Controlador.alterar(itens.get(0));
}
}else if(tabela==2){
cenaController.alterarConta(TITULO);
}
}
@Override
public void acaoExcluir(int botao) {
itens = tabelaLista.getSelectionModel().getSelectedItems();
if(Validar.exclusao(itens,cenaController.getBotaoExcluir())){
itens.forEach((Transferencia d) -> {
d.excluir();
new Conta().alterarSaldo(Operacao.INCREMENTAR, d.getIdContaOrigem(), d.getValor().toString());
new Conta().alterarSaldo(Operacao.DECREMENTAR, d.getIdContaDestino(), d.getValor().toString());
});
Janela.showTooltip(Status.SUCESSO, idioma.getMensagem("operacao_sucesso"), Duracao.CURTA);
acaoFiltrar(true);
}
}
@Override
public void acaoGerenciar(int botao) {
if(botao==1){
Kernel.principal.acaoTransferenciaCategoria();
}else if(botao==2){
Kernel.principal.acaoTransferenciaItem();
}
}
@Override
public void acaoAjuda() {
Ajuda.getInstance().setObjetos(cenaController,tabelaLista);
Ajuda.getInstance().capitulo(Posicao.CENTRO, idioma.getMensagem("tuto_trans_1"));
Ajuda.getInstance().capitulo(cenaController.getBotaoCadastrar(), Posicao.BAIXO,
idioma.getMensagem("tuto_cadastrar"));
Ajuda.getInstance().capitulo(cenaController.getBotaoAlterar(), Posicao.BAIXO,
idioma.getMensagem("tuto_alterar"));
Ajuda.getInstance().capitulo(cenaController.getBotaoExcluir(), Posicao.BAIXO,
idioma.getMensagem("tuto_excluir"));
Ajuda.getInstance().capitulo(cenaController.getChoiceCategoria(),
Posicao.BAIXO, idioma.getMensagem("tuto_trans_2"));
Ajuda.getInstance().capitulo(cenaController.getBotaoGerenciarCategoria(),
Posicao.BAIXO, idioma.getMensagem("tuto_categoria"));
Ajuda.getInstance().capitulo(cenaController.getBotaoGerenciarItem(),
Posicao.BAIXO, idioma.getMensagem("tuto_item"));
Ajuda.getInstance().apresentarProximo();
}
}