package siprp.database.cayenne.objects;

import java.util.HashMap;

import siprp.MedicinaConstants;
import siprp.ProcessoConstants;
import siprp.database.cayenne.objects.auto._TrabalhadoresProcesso;

public class TrabalhadoresProcesso extends _TrabalhadoresProcesso implements ProcessoConstants {

	private static final long serialVersionUID = 1L;
	
	
	private static final HashMap<Integer,String> MOTIVOS_BY_ID = new HashMap<Integer,String>();
	
	static
	{
		MOTIVOS_BY_ID.put( MedicinaConstants.MOTIVO_ADMISSAO_INTEGER, MedicinaConstants.MOTIVO_ADMISSAO_STR );
		MOTIVOS_BY_ID.put( MedicinaConstants.MOTIVO_PERIODICO_INTEGER, MedicinaConstants.MOTIVO_PERIODICO_STR );
		MOTIVOS_BY_ID.put( MedicinaConstants.MOTIVO_OCASIONAL_INTEGER, MedicinaConstants.MOTIVO_OCASIONAL_STR );
		MOTIVOS_BY_ID.put( MedicinaConstants.MOTIVO_PERIODICO_INICIAL_INTEGER, MedicinaConstants.MOTIVO_PERIODICO_INICIAL_STR );
	}
	
	private String getDescricaoEstadoProcessoByCodigo()
	{
		return ESTADO_PROCESSO_BY_CODE.get( getEstado() );
	}
	
	private String getMotivoString()
	{
		return getMotivo() == null ? "" : MOTIVOS_BY_ID.get( getMotivo() );
	}
	
	private String getDataInicioString()
	{
		return getDataInicio() == null ? "" : sdf.format( getDataInicio() );
	}
	
	@Override
	public String toString()
	{
		return getDataInicioString()  + ": " + getMotivoString() + " : " + getDescricaoEstadoProcessoByCodigo();
	}
	
	public HashMap<String, String> getEstados()
	{
		HashMap<String,String> result = new HashMap<String, String>();
		result.put( PROCESSO_ABERTO_CODE, PROCESSO_ABERTO_DESCRIPTION );
		result.put( PROCESSO_CANCELADO_CODE, PROCESSO_CANCELADO_DESCRIPTION );
		result.put( PROCESSO_FECHADO_CODE, PROCESSO_FECHADO_DESCRIPTION );
		return result;
	}
	
	public HashMap<Integer, String> getMotivos()
	{
		HashMap<Integer,String> result = new HashMap<Integer, String>();
		result.put( MedicinaConstants.MOTIVO_ADMISSAO_INTEGER, MedicinaConstants.MOTIVO_ADMISSAO_STR);
		result.put( MedicinaConstants.MOTIVO_OCASIONAL_INTEGER, MedicinaConstants.MOTIVO_OCASIONAL_STR);
		result.put( MedicinaConstants.MOTIVO_PERIODICO_INICIAL_INTEGER, MedicinaConstants.MOTIVO_PERIODICO_INICIAL_STR);
		result.put( MedicinaConstants.MOTIVO_PERIODICO_INTEGER, MedicinaConstants.MOTIVO_PERIODICO_STR);
		return result;
	}
	
	public boolean isEmpty()
	{
		boolean noConsultas = (getTrabalhadoresConsultasArray() == null || getTrabalhadoresConsultasArray().size() == 0);
		boolean noExames= ( getTrabalhadoresEcdsArray() == null || getTrabalhadoresEcdsArray().size() == 0);
		boolean noFicha = ( getTrabalhadoresFichasAptidaoArray() == null || getTrabalhadoresFichasAptidaoArray().size() == 0);
		return noConsultas && noExames && noFicha;
	}
}



