package com.rjconsultores.ventaboletos.vo.comissao;

import java.util.Date;

import com.rjconsultores.ventaboletos.enums.comissao.CoresConferencia;

public class DiaConferenciaComissaoVO implements Comparable<DiaConferenciaComissaoVO> {

	private Integer dia;
	private Date data;
	private Long conferenciaId;

	private Boolean indboletogerado;
	private Boolean indconferido;
	private Boolean indpendencia;
	private Boolean indsemmovimento;
	private Boolean indmaloterecebido;

	public DiaConferenciaComissaoVO() {
		super();
		this.indboletogerado = Boolean.FALSE;
		this.indconferido = Boolean.FALSE;
		this.indpendencia = Boolean.FALSE;
		this.indsemmovimento = Boolean.FALSE;
		this.indmaloterecebido = Boolean.FALSE;
	}

	public DiaConferenciaComissaoVO(Integer dia) {
		this();
		this.dia = dia;
	}

	public Integer getDia() {
		return dia;
	}

	public void setDia(Integer dia) {
		this.dia = dia;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((dia == null) ? 0 : dia.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		DiaConferenciaComissaoVO other = (DiaConferenciaComissaoVO) obj;
		if (dia == null) {
			if (other.dia != null)
				return false;
		} else if (!dia.equals(other.dia))
			return false;
		return true;
	}

	@Override
	public int compareTo(DiaConferenciaComissaoVO o) {
		return this.getDia().compareTo(o.getDia());
	}

	public CoresConferencia getCor() {
		CoresConferencia cor = CoresConferencia.BRANCO;
		
		if (getIndsemmovimento() != null && getIndsemmovimento()) {
			cor = CoresConferencia.BRANCO;
		}

		if ((getIndsemmovimento() == null || !getIndsemmovimento()) && (getIndmaloterecebido() == null || !getIndmaloterecebido())) {
			cor = CoresConferencia.PRETO;
		}
		
		if (getIndmaloterecebido() != null && getIndmaloterecebido()) {
			if (getIndconferido() == null || !getIndconferido()) {
				cor = CoresConferencia.VERMELHO;
			}
		}

		if (getIndconferido() != null && getIndconferido()) {
			if (getIndboletogerado() != null && getIndboletogerado()) {
				cor = CoresConferencia.AZUL;
				if (getIndpendencia() != null && getIndpendencia()) {
					cor = CoresConferencia.AMARELO;
				}
			} else if (getIndboletogerado() == null || !getIndboletogerado()) {
				cor = CoresConferencia.LARANJA;
			}
		}

		return cor;
	}

	public Boolean getIndboletogerado() {
		return indboletogerado;
	}

	public void setIndboletogerado(Boolean indboletogerado) {
		this.indboletogerado = indboletogerado;
	}

	public Boolean getIndconferido() {
		return indconferido;
	}

	public void setIndconferido(Boolean indconferido) {
		this.indconferido = indconferido;
	}

	public Boolean getIndpendencia() {
		return indpendencia;
	}

	public void setIndpendencia(Boolean indpendencia) {
		this.indpendencia = indpendencia;
	}

	public Boolean getIndsemmovimento() {
		return indsemmovimento;
	}

	public void setIndsemmovimento(Boolean indsemmovimento) {
		this.indsemmovimento = indsemmovimento;
	}

	public Boolean getIndmaloterecebido() {
		return indmaloterecebido;
	}

	public void setIndmaloterecebido(Boolean indmaloterecebido) {
		this.indmaloterecebido = indmaloterecebido;
	}

	public Long getConferenciaId() {
		return conferenciaId;
	}

	public void setConferenciaId(Long conferenciaId) {
		this.conferenciaId = conferenciaId;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

}
