package com.rjconsultores.ventaboletos.vo.esquemaoperacional;

import java.math.BigDecimal;

import com.rjconsultores.ventaboletos.entidad.CoeficienteTarifa;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Via;
import com.rjconsultores.ventaboletos.utilerias.HoraSistema;

public class SecuenciaRutaTramoCoeficienteVO {

	private Parada origen;
	private Parada destino;
	private Via via;
	private Integer secuencia;
	private BigDecimal kmReal;
	private BigDecimal kmSaidaOrigen;
	private BigDecimal kmEntradaDestino;
	private HoraSistema tiempoRecorrido;
	private Integer tramoId;
	private Integer tramoServicioId;
	private String numRuta;
	private Integer orgaoTramoId;
	private CoeficienteTarifa coeficienteTarifa1;
	private BigDecimal kmCoeficiente1;
	private CoeficienteTarifa coeficienteTarifa2;
	private BigDecimal kmCoeficiente2;
	private CoeficienteTarifa coeficienteTarifa3;
	private BigDecimal kmCoeficiente3;
	private Boolean permiteVenda;
	private Boolean claseServicioRutaOrigemUtilizadaNaPesquisa;

	public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, HoraSistema tiempoRecorrido) {
		super();
		this.origen = origen;
		this.destino = destino;
		this.via = via;
		this.secuencia = secuencia;
		this.kmReal = kmReal;
		this.setTiempoRecorrido(tiempoRecorrido);
	}

	public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, HoraSistema tiempoRecorrido, String numruta) {
		this(origen, destino, via, secuencia, kmReal, tiempoRecorrido);
		this.numRuta = numruta;
	}

	public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, HoraSistema tiempoRecorrido, String numruta, BigDecimal kmSaidaOrigen) {
		this(origen, destino, via, secuencia, kmReal, tiempoRecorrido);
		this.numRuta = numruta;
		this.kmSaidaOrigen = kmSaidaOrigen;
	}
	
	public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Integer secuencia, Via via) {
		super();
		this.origen = origen;
		this.destino = destino;
		this.secuencia = secuencia;
		this.via = via;
		this.setTiempoRecorrido(null);
	}

	public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Integer secuencia, Via via, String numruta) {
		this(origen, destino, secuencia, via);
		this.numRuta = numruta;
	}

	public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal,
			HoraSistema tiempoRecorrido, Integer tramoId, Integer tramoServicioId) {
		super();
		this.origen = origen;
		this.destino = destino;
		this.via = via;
		this.secuencia = secuencia;
		this.kmReal = kmReal;
		this.setTiempoRecorrido(tiempoRecorrido);
		this.tramoId = tramoId;
		this.tramoServicioId = tramoId;
	}

	public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal,
			HoraSistema tiempoRecorrido, Integer tramoId, Integer tramoServicioId, String numruta) {
		this(origen, destino, via, secuencia, kmReal, tiempoRecorrido, tramoId, tramoServicioId);
		this.numRuta = numruta;
	}
	
	public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal,
			HoraSistema tiempoRecorrido, Integer tramoId, Integer tramoServicioId, String numruta, BigDecimal kmSaidaOrigen) {
		this(origen, destino, via, secuencia, kmReal, tiempoRecorrido, tramoId, tramoServicioId);
		this.numRuta = numruta;
		this.kmSaidaOrigen = kmSaidaOrigen;
	}

	public Parada getOrigen() {
		return origen;
	}

	public void setOrigen(Parada origen) {
		this.origen = origen;
	}

	public Parada getDestino() {
		return destino;
	}

	public HoraSistema getTiempoRecorrido() {
		return tiempoRecorrido;
	}

	public void setTiempoRecorrido(HoraSistema tiempoRecorrido) {
		if (tiempoRecorrido == null) {
			tiempoRecorrido = new HoraSistema();
		}
		this.tiempoRecorrido = tiempoRecorrido;
	}

	public void setDestino(Parada destino) {
		this.destino = destino;
	}

	public Via getVia() {
		return via;
	}

	public void setVia(Via via) {
		this.via = via;
	}

	public Integer getSecuencia() {
		return secuencia;
	}

	public void setSecuencia(Integer secuencia) {
		this.secuencia = secuencia;
	}

	public BigDecimal getKmReal() {
		return kmReal;
	}

	public void setKmReal(BigDecimal kmReal) {
		this.kmReal = kmReal;
	}

	public Integer getTramoId() {
		return tramoId;
	}

	public void setTramoId(Integer tramoId) {
		this.tramoId = tramoId;
	}

	public Integer getTramoServicioId() {
		return tramoServicioId;
	}

	public void setTramoServicioId(Integer tramoServicioId) {
		this.tramoServicioId = tramoServicioId;
	}

	public String getNumRuta() {
		return numRuta;
	}

	public void setNumRuta(String numRuta) {
		this.numRuta = numRuta;
	}

	@Override
	public String toString() {
		HoraSistema hora = getTiempoRecorrido();

		return secuencia + ";" + origen + ";" + destino + ";" + via + ";" + kmReal + ";"
				+ ((hora != null) ? hora.getHora() : "-") + ";" + ((hora != null) ? hora.getMinuto() : "-");
	}

	public Integer getOrgaoTramoId() {
		return orgaoTramoId;
	}

	public void setOrgaoTramoId(Integer orgaoTramoId) {
		this.orgaoTramoId = orgaoTramoId;
	}

	public CoeficienteTarifa getCoeficienteTarifa1() {
		return coeficienteTarifa1;
	}

	public void setCoeficienteTarifa1(CoeficienteTarifa coeficienteTarifa1) {
		this.coeficienteTarifa1 = coeficienteTarifa1;
	}

	public BigDecimal getKmCoeficiente1() {
		return kmCoeficiente1;
	}

	public void setKmCoeficiente1(BigDecimal kmCoeficiente1) {
		this.kmCoeficiente1 = kmCoeficiente1;
	}

	public CoeficienteTarifa getCoeficienteTarifa2() {
		return coeficienteTarifa2;
	}

	public void setCoeficienteTarifa2(CoeficienteTarifa coeficienteTarifa2) {
		this.coeficienteTarifa2 = coeficienteTarifa2;
	}

	public BigDecimal getKmCoeficiente2() {
		return kmCoeficiente2;
	}

	public void setKmCoeficiente2(BigDecimal kmCoeficiente2) {
		this.kmCoeficiente2 = kmCoeficiente2;
	}
	
	public CoeficienteTarifa getCoeficienteTarifa3() {
		return coeficienteTarifa3;
	}
	
	public void setCoeficienteTarifa3(CoeficienteTarifa coeficienteTarifa3) {
		this.coeficienteTarifa3 = coeficienteTarifa3;
	}
	
	public BigDecimal getKmCoeficiente3() {
		return kmCoeficiente3;
	}
	
	public void setKmCoeficiente3(BigDecimal kmCoeficiente3) {
		this.kmCoeficiente3 = kmCoeficiente3;
	}

	public Boolean getPermiteVenda() {
		return permiteVenda;
	}

	public void setPermiteVenda(Boolean permiteVenda) {
		this.permiteVenda = permiteVenda;
	}

	public BigDecimal getKmSaidaOrigen() {
		return kmSaidaOrigen;
	}

	public void setKmSaidaOrigen(BigDecimal kmSaidaOrigen) {
		this.kmSaidaOrigen = kmSaidaOrigen;
	}

	/**
	 * @return the kmEntradaDestino
	 */
	public BigDecimal getKmEntradaDestino() {
		return kmEntradaDestino;
	}

	/**
	 * @param kmEntradaDestino the kmEntradaDestino to set
	 */
	public void setKmEntradaDestino(BigDecimal kmEntradaDestino) {
		this.kmEntradaDestino = kmEntradaDestino;
	}

	public Boolean getClaseServicioRutaOrigemUtilizadaNaPesquisa() {
		return claseServicioRutaOrigemUtilizadaNaPesquisa==null?false:claseServicioRutaOrigemUtilizadaNaPesquisa;
	}

	public void setClaseServicioRutaOrigemUtilizadaNaPesquisa(Boolean claseServicioRutaOrigemUtilizadaNaPesquisa) {
		this.claseServicioRutaOrigemUtilizadaNaPesquisa = claseServicioRutaOrigemUtilizadaNaPesquisa;
	}
	
	

}
