package controller;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import modelo.ParceiroNegocio;
import repository.BairroRepository;
import repository.ParceiroNegocioRepository;
import service.ParceiroNegocioService;
import util.jsf.FacesUtil;
import modelo.Bairro;
import modelo.EnumEstadoCivil;
import modelo.EnumTipoPessoa;
import modelo.EnumTipoRelacionamento;


@Named
@ViewScoped
public class ParceiroNegocioBean implements Serializable {

	private static final long serialVersionUID = 1L;

	
	@Inject
	private BairroRepository bairroRepository;
	@Inject
	private ParceiroNegocioService parceiroNegocioService;
	@Inject
	private ParceiroNegocioRepository parceiroNegocioRepository;
	
	private ParceiroNegocio parceiroNegocio;
	private ParceiroNegocio itemSelecionado;
	
	private List<ParceiroNegocio> parceiroNegocioListagem;
	
	////////////////////////////////
	//		     Métodos		  //
	////////////////////////////////
	public ParceiroNegocioBean() {
		limpar();
	}
	
	private void limpar() {
		parceiroNegocio = new ParceiroNegocio();
		
	}
	
	public void inicializarPesquisa() {
		if (FacesUtil.isNotPostback()) {
			parceiroNegocioListagem = parceiroNegocioRepository.consulta();
		}
	}
	
	public void inicializarCadastro() {
		if (FacesUtil.isNotPostback()) {
			
		}
	}
	
	public void salvar() {
		System.out.println(".:: Bean - salvar ::.");
		parceiroNegocioService.verificarDuplicidade(parceiroNegocio);
		limpar();
	}
	
	public void excluir() {
		parceiroNegocioRepository.remover(itemSelecionado);
		parceiroNegocioListagem.remove(itemSelecionado);
		
		FacesUtil.addInfoMessage("Cadastro de "+ itemSelecionado.getNome() + " foi removido com sucesso;");
	}
	
	public List<Bairro> completarBairro (String descricao){
		return this.bairroRepository.porNome(descricao);
	}
	
	////////////////////////////////
	//     Getters and Setters    //
	////////////////////////////////
	
	public EnumTipoPessoa[] getTipoPessoas() {
		return EnumTipoPessoa.values();
	}
	
	public EnumTipoRelacionamento[] getTipoRelacionamentos() {
		return EnumTipoRelacionamento.values();
	}
	
	public EnumEstadoCivil[] getTipoEstadoCivil() {
		return EnumEstadoCivil.values();
	}

	public ParceiroNegocio getParceiroNegocio() {
		return parceiroNegocio;
	}

	public void setParceiroNegocio(ParceiroNegocio parceiroNegocio) {
		this.parceiroNegocio = parceiroNegocio;
	}

	public List<ParceiroNegocio> getParceiroNegocioListagem() {
		return parceiroNegocioListagem;
	}

	public ParceiroNegocio getItemSelecionado() {
		return itemSelecionado;
	}

	public void setItemSelecionado(ParceiroNegocio itemSelecionado) {
		this.itemSelecionado = itemSelecionado;
	}
	
	
	
	
}
