package com.rjconsultores.ventaboletos.enums;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public enum RelatorioMovimentacaoBilheteStatusEnum {

	VENDIDO("Vendido", "VENDIDO"), CANCELADO("Cancelado", "CANCELADO"), DEVOLVIDO("Devolvido", "DEVOLVIDO"), CANCELADO_EMERGENCIAL("Cancelado emergencial", "CANCEC. EMERG"), TROCA("Troca", "TROCA", "TROCA PASSAGEM"), TRANSFERENCIA("Transferência", "TRANSFERIDO", "TRANSFERÊNCIA"), REATIVACAO("Reativação", "CHECKIN REATIVADO", "REATIVADO"), TROCA_TITULARIDADE("Troca de Titularidade", "TITULARIDADE TROCADA", "TROCA TITULARIDADE"), TROCA_POLTRONA("Troca de Poltrona", "POLTRONA ALTERADA", "TROCA POLTRONA"), NO_SHOW("No-Show", "NO-SHOW"), CHECK_IN("Check-in", "CHECK-IN"), ENTREGA("Entrega", "ENTREGUE"), RESERVA("Reserva", "RESERVA", "CONFIRMA RESERVA", "LIBERA RESERVA");

	private String descricaoTela;
	private String statusRelatorio;
	private List<String> statusRelatorioAnterior;

	private RelatorioMovimentacaoBilheteStatusEnum(String descricaoTela, String statusRelatorio) {
		this.descricaoTela = descricaoTela;
		this.statusRelatorio = statusRelatorio;
	}

	private RelatorioMovimentacaoBilheteStatusEnum(String descricaoTela, String statusRelatorio, String... statusRelatorioAnterior) {
		this.descricaoTela = descricaoTela;
		this.statusRelatorio = statusRelatorio;
		if (statusRelatorioAnterior != null) {
			this.statusRelatorioAnterior = Arrays.asList(statusRelatorioAnterior);
		}
	}

	public String getDescricaoTela() {
		return descricaoTela;
	}

	public String getStatusRelatorio() {
		return statusRelatorio;
	}

	public List<String> getStatusRelatorioAnterior() {
		return statusRelatorioAnterior;
	}

	@Override
	public String toString() {
		return this.descricaoTela;
	}

	public static List<RelatorioMovimentacaoBilheteStatusEnum> getListaOrdenada() {
		List<RelatorioMovimentacaoBilheteStatusEnum> listaOrdenada = Arrays.asList(values());
		Collections.sort(listaOrdenada, new Comparator<RelatorioMovimentacaoBilheteStatusEnum>() {
			@Override
			public int compare(RelatorioMovimentacaoBilheteStatusEnum o1, RelatorioMovimentacaoBilheteStatusEnum o2) {
				return o1.getDescricaoTela().compareToIgnoreCase(o2.getDescricaoTela());
			}
		});

		return listaOrdenada;
	}
}