package com.softgraf.model.vo;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import com.softgraf.model.abstrato.AbstractVO;

// 13
final public class Cheque implements AbstractVO {

	private int idCheque, idAgencia, numConta, numCheque, idCliente, 
				historico, totalFolhas, numFolha, idFinalidade;
	private float valor;
	private Date dataDesde, dataEmissao, dataBomPara;
	private boolean uso;
	private static final ArrayList<String> listaCampos;

	static {
		listaCampos = new ArrayList<String>();
		listaCampos.add("ID Cheque");
		listaCampos.add("ID Agência");
		listaCampos.add("Número da Conta");
		listaCampos.add("Número do Cheque");
		listaCampos.add("ID Cliente");
		listaCampos.add("Histórico");
		listaCampos.add("Total Folhas");
		listaCampos.add("Folha N.");
		listaCampos.add("ID Finalidade");
		listaCampos.add("Valor");
		listaCampos.add("Desde");
		listaCampos.add("Emissão");
		listaCampos.add("Bom para");
		listaCampos.add("Uso");
	}
	
	public Cheque() {
		this(0, 0, 0, 0, 1, 1, 1, 0, 0.0f, new Date(), new Date(), new Date(), true);
	}
	
	public Cheque(int idAgencia, int numConta, int numCheque, int idCliente,
			int historico, int totalFolhas, int numFolha, int idFinalidade,
			float valor, Date dataDesde, Date dataEmissao, Date dataBomPara,
			boolean uso) {
		this.idAgencia = idAgencia;
		this.numConta = numConta;
		this.numCheque = numCheque;
		this.idCliente = idCliente;
		this.historico = historico;
		this.totalFolhas = totalFolhas;
		this.numFolha = numFolha;
		this.idFinalidade = idFinalidade;
		this.valor = valor;
		this.dataDesde = dataDesde;
		this.dataEmissao = dataEmissao;
		this.dataBomPara = dataBomPara;
		this.uso = uso;
	}
	
	
	public static List<String> getCampos() {
		return Collections.unmodifiableList(listaCampos);
	}
	
	// getters e setters
	public int getIdCheque() {
		return idCheque;
	}

	public void setIdCheque(int idCheque) {
		this.idCheque = idCheque;
	}

	public int getIdAgencia() {
		return idAgencia;
	}

	public void setIdAgencia(int idAgencia) {
		this.idAgencia = idAgencia;
	}

	public int getNumConta() {
		return numConta;
	}

	public void setNumConta(int numConta) {
		this.numConta = numConta;
	}

	public int getNumCheque() {
		return numCheque;
	}

	public void setNumCheque(int numCheque) {
		this.numCheque = numCheque;
	}

	public int getIdCliente() {
		return idCliente;
	}

	public void setIdCliente(int idCliente) {
		this.idCliente = idCliente;
	}

	public int getHistorico() {
		return historico;
	}

	public void setHistorico(int historico) {
		this.historico = historico;
	}

	public int getTotalFolhas() {
		return totalFolhas;
	}

	public void setTotalFolhas(int totalFolhas) {
		this.totalFolhas = totalFolhas;
	}

	public int getNumFolha() {
		return numFolha;
	}

	public void setNumFolha(int numFolha) {
		this.numFolha = numFolha;
	}

	public int getIdFinalidade() {
		return idFinalidade;
	}

	public void setIdFinalidade(int idFinalidade) {
		this.idFinalidade = idFinalidade;
	}

	public float getValor() {
		return valor;
	}

	public void setValor(float valor) {
		this.valor = valor;
	}

	public Date getDataDesde() {
		return dataDesde;
	}

	public void setDataDesde(Date dataDesde) {
		this.dataDesde = dataDesde;
	}

	public Date getDataEmissao() {
		return dataEmissao;
	}

	public void setDataEmissao(Date dataEmissao) {
		this.dataEmissao = dataEmissao;
	}

	public Date getDataBomPara() {
		return dataBomPara;
	}

	public void setDataBomPara(Date dataBomPara) {
		this.dataBomPara = dataBomPara;
	}

	public boolean isUso() {
		return uso;
	}

	public void setUso(boolean uso) {
		this.uso = uso;
	}

	@Override
	public String toString() {
		return String.valueOf(numCheque); // não usado
	}

	@Override
	public String[] toArray() {
		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
		String[] array = {
				idCheque == 0 ? "" : String.valueOf(idCheque),
				idAgencia == 0 ? "" : String.valueOf(idAgencia),
				numConta == 0 ? "" : String.valueOf(numConta),
				numCheque == 0 ? "" : String.valueOf(numCheque),
				idCliente == 0 ? "" : String.valueOf(idCliente),
				String.valueOf(historico),
				totalFolhas == 0 ? "" : String.valueOf(totalFolhas),
			    numFolha == 0 ? "" : String.valueOf(numFolha),
			  	idFinalidade == 0 ? "" : String.valueOf(idFinalidade),
			  	valor == 0 ? "" : String.valueOf(valor),
			  	formatador.format(dataDesde),
			  	formatador.format(dataEmissao),
			  	formatador.format(dataBomPara),
			  	uso ? "Depositar" : "Trocar"
		};
		
		return array;
	}

}
