package br.mp.mprj.portal.portlet.gestaomensagens.workflow;

import com.liferay.portal.kernel.workflow.WorkflowConstants;

/**
 * Enum concentrando os principais status do workflow utilizados pelo portlet, baseados no {@link WorkflowConstants}.
 * @author Henrique Simoes
 *
 */
public enum StatusWorkflowEnum {
	
	/**
	 * Equivalente ao {@link WorkflowConstants#STATUS_APPROVED}.
	 */
	APROVADO(WorkflowConstants.STATUS_APPROVED, "Aprovada"),
	/**
	 * Equivalente ao {@link WorkflowConstants#STATUS_DENIED}.
	 */	
	REPROVADO(WorkflowConstants.STATUS_DENIED, "Reprovada"),
	/**
	 * Equivalente ao {@link WorkflowConstants#STATUS_DRAFT}.
	 */		
	PENDENTE_APROVACAO(WorkflowConstants.STATUS_DRAFT, "Pendente de aprovação"),
	/**
	 * Equivalente ao {@link WorkflowConstants#STATUS_PENDING}.
	 */		
	PENDENTE_REVISAO(WorkflowConstants.STATUS_PENDING, "Pendente de retificação"),
	/**
	 * Equivalente ao {@link WorkflowConstants#STATUS_PENDING}.
	 */		
	CANCELADO(WorkflowConstants.STATUS_INACTIVE, "Cancelada");
	
	private int status;
	private String descricao;
	
	StatusWorkflowEnum(int status, String descricao) {
		this.status = status;
		this.descricao = descricao;
	}
	
	public int getStatus() {
		return status;
	}
	
	public String getDescricao() {
		return descricao;
	}
	
	/**
	 * Retorna a descri&ccedil;&atilde;o do status de acordo com os 
	 * c&oacute;digos utilizados pelo portlet. <br>
	 * Caso n&atilde;o encontre, retorna a descri&ccedil;&atilde;o 
	 * definida originalmente em {@link WorkflowConstants}.
	 * @param status - c&oacute;digo do status do workflow (o mesmo definido em {@link WorkflowConstants}).
	 */
	public static String getDescricao(int status) {
		for (StatusWorkflowEnum s : values()) {
			if (s.getStatus() == status) {
				return s.getDescricao();
			}
		}
		return WorkflowConstants.getStatusLabel(status);
	}

}
