package br.edu.ifba.inf008.contabil.session;

import br.edu.ifba.inf008.contabil.model.Ativo;
import br.edu.ifba.inf008.contabil.model.Conta;
import br.edu.ifba.inf008.contabil.model.Lancamento;
import br.edu.ifba.inf008.contabil.model.Passivo;
import br.edu.ifba.inf008.contabil.model.PatrimonioLiquido;
import br.edu.ifba.inf008.contabil.model.RegistroContabil;
import br.edu.inf008.contabil.exceptions.ContaNaoExistenteException;
import br.edu.inf008.contabil.exceptions.SaldoInsuficienteException;

public class AppContabil {
	
    public void registrarFatoContabil(long timestamp,
            String descricao, 
            String nomeContaCredito, 
            String nomeContaDebito, 
            double valor){
    	Conta credito = null;
    	Conta debito = null;
    	try{
    		credito = this.balanco.buscarPeloNome(nomeContaCredito);                                    
    		debito = this.balanco.buscarPeloNome(nomeContaDebito);      
    		this.balanco.ajustar(nomeContaCredito, nomeContaDebito, valor);
    		Lancamento lancamento = new Lancamento(timestamp, descricao, credito, debito, valor);
    		this.livro.registrar(lancamento);
    	}catch(ContaNaoExistenteException ex){
    		System.out.println("Lancamento no efetuado.");
    		System.out.println("Causa: Conta Inexistente - " + ex.getNomeConta());
    	} catch (SaldoInsuficienteException e) {
    		System.out.println("Lancamento no efetuado: " + descricao);
    		System.out.println("Causa: Saldo Insuficiente - " + e.getNomeConta());
    		System.out.println("Valor Disponivel - " + e.getSaldoDisponivel());
    		System.out.println("Valor Necessario - " + e.getSaldoNecessario());
    	}
    } 

	
	

}
