package com.rjconsultores.ventaboletos.utilerias;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.rjconsultores.ventaboletos.entidad.Categoria;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.CorridaCtrl;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Pricing;
import com.rjconsultores.ventaboletos.entidad.PricingClase;
import com.rjconsultores.ventaboletos.entidad.PricingClasseTarifaria;
import com.rjconsultores.ventaboletos.entidad.PricingTipoPtoVta;
import com.rjconsultores.ventaboletos.entidad.PricingTipoServicio;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta;
import com.rjconsultores.ventaboletos.entidad.TipoServicio;
import com.rjconsultores.ventaboletos.vo.pricing.PricingAsiento;
import com.rjconsultores.ventaboletos.vo.pricing.PricingCanalVenta;
import com.rjconsultores.ventaboletos.vo.pricing.PricingCategoria;
import com.rjconsultores.ventaboletos.vo.pricing.PricingClasse;
import com.rjconsultores.ventaboletos.vo.pricing.PricingCorrida;
import com.rjconsultores.ventaboletos.vo.pricing.PricingDia;
import com.rjconsultores.ventaboletos.vo.pricing.PricingMarca;
import com.rjconsultores.ventaboletos.vo.pricing.PricingMercado;
import com.rjconsultores.ventaboletos.vo.pricing.PricingOcupaAntecipa;
import com.rjconsultores.ventaboletos.vo.pricing.PricingPuntoVenta;
import com.rjconsultores.ventaboletos.vo.pricing.PricingRuta;
import com.rjconsultores.ventaboletos.vo.pricing.PricingTipoCorrida;
import com.rjconsultores.ventaboletos.vo.pricing.PricingVigencia;

public class PricingConverterVOToEntidad {
	
	private static final Logger log = LogManager.getLogger(PricingConverterVOToEntidad.class);
	
	private static PricingConverterVOToEntidad INSTANCE;

	private PricingConverterVOToEntidad() {
		super();
	}
	
	public synchronized static PricingConverterVOToEntidad getInstance() {
		if(INSTANCE == null) {
			INSTANCE = new PricingConverterVOToEntidad();
		}
		return INSTANCE;
	}
	
	public Pricing convertVOToEntidad(com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		try {
			Pricing retorno = new Pricing();
			retorno.setPricingId(pricingVO.getPricingId());
			retorno.setNombPricing(pricingVO.getNomePricing());
			retorno.setCantboleto(pricingVO.getQtdePoltronas() != null ? pricingVO.getQtdePoltronas().shortValue() : null);
			retorno.setDescuentoporcentaje(pricingVO.getPorcentagemIda());
			retorno.setDescuentoporcredondo(pricingVO.getPorcentagemIdaVolta());
			retorno.setIndtransferible(pricingVO.getPodeTransferir() != null ? pricingVO.getPodeTransferir().equals(1) : true);
			retorno.setIndreservable(pricingVO.getPodeReservar() != null ? pricingVO.getPodeReservar().equals(1): true);
			retorno.setExibeVenda(pricingVO.getExibirVenda() != null ? pricingVO.getExibirVenda().equals(1) : true);
			retorno.setIndcancelable(pricingVO.getPodeCancelar() != null ? pricingVO.getPodeCancelar().equals(1) : true);
			retorno.setActivo(Pricing.ATIVO);
			retorno.setFecmodif(new Date());
			retorno.setCantdiasanticipacion(pricingVO.getDiasAtencipacao());
			retorno.setEmpresa(new Empresa(pricingVO.getEmpresaId()));
			retorno.setIndGeneraFeriadoViaje(StringUtils.isNotBlank(pricingVO.getAplicaFeriadoDtViagem()) ? pricingVO.getAplicaFeriadoDtViagem() : "S");
			retorno.setIndGeneraFeriadoVenta(StringUtils.isNotBlank(pricingVO.getAplicaFeriadoDtVenda()) ? pricingVO.getAplicaFeriadoDtVenda() : "S");
			
			convertVOToEntidadPoltronas(retorno, pricingVO);
			convertVOToEntidadCanalVendas(retorno, pricingVO);
			convertVOToEntidadCategorias(retorno, pricingVO);
			convertVOToEntidadClasses(retorno, pricingVO);
			convertVOToEntidadServicos(retorno, pricingVO);
			convertVOToEntidadDias(retorno, pricingVO);
			convertVOToEntidadOcupacoes(retorno, pricingVO);
			convertVOToEntidadPuntoventas(retorno, pricingVO);
			convertVOToEntidadLinhas(retorno, pricingVO);
			convertVOToEntidadTiposervicos(retorno, pricingVO);
			convertVOToEntidadMercados(retorno, pricingVO);
			convertVOToEntidadVigencias(retorno, pricingVO);
			convertVOToEntidadMarcas(retorno, pricingVO);

			return retorno;
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		}
		return null;
	}

	public void convertVOToEntidadPoltronas(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getPoltronas() != null && !pricingVO.getPoltronas().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingAsiento> asientos = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingAsiento>();
			for (PricingAsiento pricingAsientoVO : pricingVO.getPoltronas()) {
				com.rjconsultores.ventaboletos.entidad.PricingAsiento pricingAsiento = new com.rjconsultores.ventaboletos.entidad.PricingAsiento();
				pricingAsiento.setPricing(retorno);
				pricingAsiento.setActivo(Pricing.ATIVO);
				pricingAsiento.setFecmodif(new Date());
				pricingAsiento.setUsuarioId(retorno.getUsuarioId());
				pricingAsiento.setNombImagen(pricingAsientoVO.getNombImagen());
				pricingAsiento.setNumeasiento(pricingAsientoVO.getNumeasiento());
				pricingAsiento.setPorcentaje(pricingAsientoVO.getPorcentaje());
				
				asientos.add(pricingAsiento);
			}
			retorno.setPricingAsientoList(asientos);
		}
	}

	public void convertVOToEntidadCanalVendas(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getCanalvendas() != null && !pricingVO.getCanalvendas().isEmpty()) {
			List<PricingTipoPtoVta> tipoPtoVtas = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingTipoPtoVta>();
			for (PricingCanalVenta pricingCanalVentaVO : pricingVO.getCanalvendas()) {
				com.rjconsultores.ventaboletos.entidad.PricingTipoPtoVta pricingTipoPtoVta = new com.rjconsultores.ventaboletos.entidad.PricingTipoPtoVta();
				pricingTipoPtoVta.setPricing(retorno);
				pricingTipoPtoVta.setActivo(Pricing.ATIVO);
				pricingTipoPtoVta.setFecmodif(new Date());
				pricingTipoPtoVta.setUsuarioId(retorno.getUsuarioId());
				pricingTipoPtoVta.setTipoPtovta(new TipoPuntoVenta(pricingCanalVentaVO.getCanalventaId().shortValue()));
		
				tipoPtoVtas.add(pricingTipoPtoVta);
			}
			
			if(tipoPtoVtas.isEmpty()) {
				com.rjconsultores.ventaboletos.entidad.PricingTipoPtoVta pricingTipoPtoVta = new com.rjconsultores.ventaboletos.entidad.PricingTipoPtoVta();
				pricingTipoPtoVta.setPricing(retorno);
				pricingTipoPtoVta.setActivo(Pricing.ATIVO);
				pricingTipoPtoVta.setFecmodif(new Date());
				pricingTipoPtoVta.setUsuarioId(retorno.getUsuarioId());
				pricingTipoPtoVta.setTipoPtovta(new TipoPuntoVenta(Short.valueOf("-1")));

				tipoPtoVtas.add(pricingTipoPtoVta);
			}
			retorno.setPricingTipoptovtaList(tipoPtoVtas);
		}
	}

	public void convertVOToEntidadCategorias(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getCategorias() != null && !pricingVO.getCategorias().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingCategoria> categorias = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingCategoria>();
			for (PricingCategoria pricingCategoriaVO : pricingVO.getCategorias()) {
				com.rjconsultores.ventaboletos.entidad.PricingCategoria pricingCategoria = new com.rjconsultores.ventaboletos.entidad.PricingCategoria();
				pricingCategoria.setPricing(retorno);
				pricingCategoria.setActivo(Pricing.ATIVO);
				pricingCategoria.setFecmodif(new Date());
				pricingCategoria.setUsuarioId(retorno.getUsuarioId());
				pricingCategoria.setCategoria(new Categoria(pricingCategoriaVO.getCategoriaId()));
				
				categorias.add(pricingCategoria);
			}

			if(categorias.isEmpty()) {
				com.rjconsultores.ventaboletos.entidad.PricingCategoria pricingCategoria = new com.rjconsultores.ventaboletos.entidad.PricingCategoria();
				pricingCategoria.setPricing(retorno);
				pricingCategoria.setActivo(Pricing.ATIVO);
				pricingCategoria.setFecmodif(new Date());
				pricingCategoria.setUsuarioId(retorno.getUsuarioId());
				pricingCategoria.setCategoria(new Categoria(1));
				
				categorias.add(pricingCategoria);

				pricingCategoria = new com.rjconsultores.ventaboletos.entidad.PricingCategoria();
				pricingCategoria.setPricing(retorno);
				pricingCategoria.setActivo(Pricing.ATIVO);
				pricingCategoria.setFecmodif(new Date());
				pricingCategoria.setUsuarioId(retorno.getUsuarioId());
				pricingCategoria.setCategoria(new Categoria(48));
				
				categorias.add(pricingCategoria);
			}
			
			retorno.setPricingCategoriaList(categorias);
		}
	}

	public void convertVOToEntidadClasses(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getClasses() != null && !pricingVO.getClasses().isEmpty()) {
			List<PricingClase> clases = new ArrayList<PricingClase>();
			for (PricingClasse pricingClasseVO : pricingVO.getClasses()) {
				com.rjconsultores.ventaboletos.entidad.PricingClase pricingClase = new com.rjconsultores.ventaboletos.entidad.PricingClase();
				pricingClase.setPricing(retorno);
				pricingClase.setActivo(Pricing.ATIVO);
				pricingClase.setFecmodif(new Date());
				pricingClase.setUsuarioId(retorno.getUsuarioId());
				pricingClase.setClaseServicio(new ClaseServicio(pricingClasseVO.getClasseservicioId()));

				clases.add(pricingClase);
			}
			
			if(clases.isEmpty()) {
				com.rjconsultores.ventaboletos.entidad.PricingClase pricingClase = new com.rjconsultores.ventaboletos.entidad.PricingClase();
				pricingClase.setPricing(retorno);
				pricingClase.setActivo(Pricing.ATIVO);
				pricingClase.setFecmodif(new Date());
				pricingClase.setUsuarioId(retorno.getUsuarioId());
				pricingClase.setClaseServicio(new ClaseServicio(1));
				
				clases.add(pricingClase);
			}
			retorno.setPricingClaseList(clases);
		}
	}

	public void convertVOToEntidadServicos(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getServicos() != null && !pricingVO.getServicos().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingCorrida> corridas = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingCorrida>();
			for (PricingCorrida pricingServicoVO : pricingVO.getServicos()) {
				com.rjconsultores.ventaboletos.entidad.PricingCorrida pricingCorrida = new com.rjconsultores.ventaboletos.entidad.PricingCorrida();
				pricingCorrida.setPricing(retorno);
				pricingCorrida.setActivo(Pricing.ATIVO);
				pricingCorrida.setFecmodif(new Date());
				pricingCorrida.setUsuarioId(retorno.getUsuarioId());
				pricingCorrida.setCorridaCtrl(new CorridaCtrl(pricingServicoVO.getNumservico()));
				
				corridas.add(pricingCorrida);
			}
			retorno.setPricingCorridaList(corridas);
		}
	}

	public void convertVOToEntidadDias(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) throws ParseException {
		if(pricingVO.getDias() != null && !pricingVO.getDias().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingDia> dias = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingDia>();
			for (PricingDia pricingDiaVO : pricingVO.getDias()) {
				com.rjconsultores.ventaboletos.entidad.PricingDia pricingDia = new com.rjconsultores.ventaboletos.entidad.PricingDia();
				pricingDia.setPricing(retorno);
				pricingDia.setActivo(Pricing.ATIVO);
				pricingDia.setFecmodif(new Date());
				pricingDia.setUsuarioId(retorno.getUsuarioId());
				
				if(StringUtils.isNotBlank(pricingDiaVO.getHorariofim())) {
					pricingDia.setHorariofin(DateUtil.getFecInicio(DateUtil.getDateFromString(pricingDiaVO.getHorariofim(), "HH:mm")).getTime());
				}
				
				if(StringUtils.isNotBlank(pricingDiaVO.getHorarioinicio())) {
					pricingDia.setHorarioinicio(DateUtil.getFecInicio(DateUtil.getDateFromString(pricingDiaVO.getHorarioinicio(), "HH:mm")).getTime());
				}
				
				pricingDia.setIndlunes(pricingDiaVO.getSegunda() != null ? pricingDiaVO.getSegunda().equals(1) : false);
				pricingDia.setIndmartes(pricingDiaVO.getTerca() != null ? pricingDiaVO.getTerca().equals(1) : false);
				pricingDia.setIndmiercoles(pricingDiaVO.getQuarta() != null ? pricingDiaVO.getQuarta().equals(1) : false);
				pricingDia.setIndjueves(pricingDiaVO.getQuinta() != null ? pricingDiaVO.getQuinta().equals(1) : false);
				pricingDia.setIndviernes(pricingDiaVO.getSexta() != null ? pricingDiaVO.getSexta().equals(1) : false);
				pricingDia.setIndsabado(pricingDiaVO.getSabado() != null ? pricingDiaVO.getSabado().equals(1) : false);
				pricingDia.setIndfecventa(pricingDiaVO.getDataviagem() == null || !pricingDiaVO.getDataviagem().equals(1));
				pricingDia.setIndfecviaje(!pricingDia.getIndfecventa());
				
				dias.add(pricingDia);
			}
			retorno.setPricingDiaList(dias);
		}
	}

	public void convertVOToEntidadOcupacoes(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getOcupacoes() != null && !pricingVO.getOcupacoes().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingOcupaAntecipa> ocupacoes = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingOcupaAntecipa>();
			for (PricingOcupaAntecipa pricingOcupaAntecipaVO : pricingVO.getOcupacoes()) {
				com.rjconsultores.ventaboletos.entidad.PricingOcupaAntecipa pricingOcupaAntecipa = new com.rjconsultores.ventaboletos.entidad.PricingOcupaAntecipa();
				pricingOcupaAntecipa.setPricing(retorno);
				pricingOcupaAntecipa.setActivo(Pricing.ATIVO);
				pricingOcupaAntecipa.setFecmodif(new Date());
				pricingOcupaAntecipa.setUsuarioId(retorno.getUsuarioId());
				pricingOcupaAntecipa.setCantasientosmax(pricingOcupaAntecipaVO.getCantasientosmax());
				pricingOcupaAntecipa.setCantasientosmin(pricingOcupaAntecipaVO.getCantasientosmin());
				pricingOcupaAntecipa.setCantdiasmax(pricingOcupaAntecipaVO.getCantdiasmax());
				pricingOcupaAntecipa.setCantdiasmin(pricingOcupaAntecipaVO.getCantdiasmin());
				pricingOcupaAntecipa.setImporte(pricingOcupaAntecipaVO.getImporte());
				pricingOcupaAntecipa.setOcupacionfinal(pricingOcupaAntecipaVO.getOcupacionfinal());
				pricingOcupaAntecipa.setOcupacioninicial(pricingOcupaAntecipaVO.getOcupacioninicial());
				pricingOcupaAntecipa.setPorcentaje(pricingOcupaAntecipaVO.getPorcentaje());
				if(pricingOcupaAntecipaVO.getClasseId() != null) {
					pricingOcupaAntecipa.setPricingClasseTarifaria(new PricingClasseTarifaria(pricingOcupaAntecipaVO.getClasseId()));
				}
				
				ocupacoes.add(pricingOcupaAntecipa);
			}
			retorno.setPricingOcupaAntecipaList(ocupacoes);
		}
	}

	public void convertVOToEntidadPuntoventas(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getPuntoventas() != null && !pricingVO.getPuntoventas().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingPuntoVenta> puntoventas = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingPuntoVenta>();
			for (PricingPuntoVenta pricingPuntoVentaVO : pricingVO.getPuntoventas()) {
				com.rjconsultores.ventaboletos.entidad.PricingPuntoVenta pricingPuntoVenta = new com.rjconsultores.ventaboletos.entidad.PricingPuntoVenta();
				pricingPuntoVenta.setPricing(retorno);
				pricingPuntoVenta.setActivo(Pricing.ATIVO);
				pricingPuntoVenta.setFecmodif(new Date());
				pricingPuntoVenta.setUsuarioId(retorno.getUsuarioId());
				pricingPuntoVenta.setPuntoVenta(new PuntoVenta(pricingPuntoVentaVO.getPuntoventaId()));
				
				puntoventas.add(pricingPuntoVenta);
			}

			if(puntoventas.isEmpty()) {
				com.rjconsultores.ventaboletos.entidad.PricingPuntoVenta pricingPuntoVenta = new com.rjconsultores.ventaboletos.entidad.PricingPuntoVenta();
				pricingPuntoVenta.setPricing(retorno);
				pricingPuntoVenta.setActivo(Pricing.ATIVO);
				pricingPuntoVenta.setFecmodif(new Date());
				pricingPuntoVenta.setUsuarioId(retorno.getUsuarioId());
				pricingPuntoVenta.setPuntoVenta(new PuntoVenta(-1));
				
				puntoventas.add(pricingPuntoVenta);
			}
			
			retorno.setPricingPuntoventaList(puntoventas);
		}
	}

	public void convertVOToEntidadLinhas(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getLinhas() != null && !pricingVO.getLinhas().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingRuta> rutas = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingRuta>();
			for (PricingRuta pricingLinhaVO : pricingVO.getLinhas()) {
				com.rjconsultores.ventaboletos.entidad.PricingRuta pricingRuta = new com.rjconsultores.ventaboletos.entidad.PricingRuta();
				pricingRuta.setPricing(retorno);
				pricingRuta.setActivo(Pricing.ATIVO);
				pricingRuta.setFecmodif(new Date());
				pricingRuta.setUsuarioId(retorno.getUsuarioId());
				pricingRuta.setRuta(new Ruta(pricingLinhaVO.getRutaId()));
				
				rutas.add(pricingRuta);
			}
			
			if(rutas.isEmpty()) {
				com.rjconsultores.ventaboletos.entidad.PricingRuta pricingRuta = new com.rjconsultores.ventaboletos.entidad.PricingRuta();
				pricingRuta.setPricing(retorno);
				pricingRuta.setActivo(Pricing.ATIVO);
				pricingRuta.setFecmodif(new Date());
				pricingRuta.setUsuarioId(retorno.getUsuarioId());
				pricingRuta.setRuta(new Ruta(-1));
				
				rutas.add(pricingRuta);
			}
			retorno.setPricingRutaList(rutas);
		}
	}

	public void convertVOToEntidadTiposervicos(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getTiposervicos() != null && !pricingVO.getTiposervicos().isEmpty()) {
			List<PricingTipoServicio> tipoServicios = new ArrayList<PricingTipoServicio>();
			for (PricingTipoCorrida pricingTipoCorridaVO : pricingVO.getTiposervicos()) {
				com.rjconsultores.ventaboletos.entidad.PricingTipoServicio pricingTipoServicio = new com.rjconsultores.ventaboletos.entidad.PricingTipoServicio();
				pricingTipoServicio.setPricing(retorno);
				pricingTipoServicio.setActivo(Pricing.ATIVO);
				pricingTipoServicio.setFecmodif(new Date());
				pricingTipoServicio.setUsuarioId(retorno.getUsuarioId());
				pricingTipoServicio.setTipoServicio(new TipoServicio(pricingTipoCorridaVO.getTipocorridaId()));
				
				tipoServicios.add(pricingTipoServicio);
			}
			retorno.setPricingTipoServicioList(tipoServicios);
		}
	}
	
	public void convertVOToEntidadMercados(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getMercados() != null && !pricingVO.getMercados().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingMercado> mercados = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingMercado>();
			for (PricingMercado pricingMercadoVO : pricingVO.getMercados()) {
				com.rjconsultores.ventaboletos.entidad.PricingMercado pricingMercado = new com.rjconsultores.ventaboletos.entidad.PricingMercado();
				pricingMercado.setPricing(retorno);
				pricingMercado.setActivo(Pricing.ATIVO);
				pricingMercado.setFecmodif(new Date());
				pricingMercado.setUsuarioId(retorno.getUsuarioId());
				pricingMercado.setOrigen(new Parada(pricingMercadoVO.getOrigemId()));
				pricingMercado.setDestino(new Parada(pricingMercadoVO.getDestinoId()));
				
				mercados.add(pricingMercado);
			}
			retorno.setPricingMercadoList(mercados);
		}
	}
	
	public void convertVOToEntidadVigencias(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) throws ParseException {
		if(pricingVO.getVigencias() != null && !pricingVO.getVigencias().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingVigencia> vigencias = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingVigencia>();
			for (PricingVigencia pricingVigenciaVO : pricingVO.getVigencias()) {
				com.rjconsultores.ventaboletos.entidad.PricingVigencia pricingVigencia = new com.rjconsultores.ventaboletos.entidad.PricingVigencia();
				pricingVigencia.setPricing(retorno);
				pricingVigencia.setActivo(Pricing.ATIVO);
				pricingVigencia.setFecmodif(new Date());
				pricingVigencia.setUsuarioId(retorno.getUsuarioId());
				
				if(StringUtils.isNotBlank(pricingVigenciaVO.getInicioDataVenda())) {
					pricingVigencia.setFecinicioventa(DateUtil.getDateFromString(pricingVigenciaVO.getInicioDataVenda(), "dd/MM/yyyy HH:mm"));
				}
				
				if(StringUtils.isNotBlank(pricingVigenciaVO.getFimDataVenda())) {
					pricingVigencia.setFecfinventa(DateUtil.getDateFromString(pricingVigenciaVO.getFimDataVenda(), "dd/MM/yyyy HH:mm"));
				}
				
				if(StringUtils.isNotBlank(pricingVigenciaVO.getInicioDataViagem())) {
					pricingVigencia.setFecinicioviaje(DateUtil.getDateFromString(pricingVigenciaVO.getInicioDataViagem(), "dd/MM/yyyy HH:mm"));
				}
				
				if(StringUtils.isNotBlank(pricingVigenciaVO.getFimDataViagem())) {
					pricingVigencia.setFecfinviaje(DateUtil.getDateFromString(pricingVigenciaVO.getFimDataViagem(), "dd/MM/yyyy HH:mm"));
				}
				
				vigencias.add(pricingVigencia);
			}
			retorno.setPricingVigenciaList(vigencias);
		}
	}
	
	public void convertVOToEntidadMarcas(Pricing retorno, com.rjconsultores.ventaboletos.vo.pricing.Pricing pricingVO) {
		if(pricingVO.getMarcas() != null && !pricingVO.getMarcas().isEmpty()) {
			List<com.rjconsultores.ventaboletos.entidad.PricingMarca> marcas = new ArrayList<com.rjconsultores.ventaboletos.entidad.PricingMarca>();
			for (PricingMarca pricingMarcaVO : pricingVO.getMarcas()) {
				com.rjconsultores.ventaboletos.entidad.PricingMarca pricingMarca = new com.rjconsultores.ventaboletos.entidad.PricingMarca();
				pricingMarca.setPricing(retorno);
				pricingMarca.setActivo(Pricing.ATIVO);
				pricingMarca.setFecmodif(new Date());
				pricingMarca.setUsuarioId(retorno.getUsuarioId());
				pricingMarca.setMarca(new Marca(pricingMarcaVO.getMarcaId().shortValue()));
				
				marcas.add(pricingMarca);
			}
			retorno.setPricingMarcaList(marcas);
		}
	}
	
}
