package com.rjconsultores.ventaboletos.rest.service;

import org.springframework.stereotype.Service;

import com.rjconsultores.routing.ReadOnlyConnection;
import com.rjconsultores.ventaboletos.dao.MarcaDAO;
import com.rjconsultores.ventaboletos.dao.OperadorEmbarcadaServicoDAO;
import com.rjconsultores.ventaboletos.dao.PuntoVentaDAO;
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.rest.bean.ParamsOperadorDetalhesCorrida;
import com.rjconsultores.ventaboletos.vo.corrida.CorridaVO;
import com.rjconsultores.ventaboletos.vo.embarcada.DetalheCorridaVO;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;

@Service("consultarOperadorDetalhesCorridaService")
public class ConsultarOperadorDetalhesCorridaService {

	@ReadOnlyConnection
	public DetalheCorridaVO buscarDetalhesCorrida(ParamsOperadorDetalhesCorrida params) {
		CorridaVO corrida = new CorridaVO();
		corrida.setCorridaId(params.getCorridaId());
		corrida.setFeccorrida(params.getFeccorrida());
		corrida.setRutaId(params.getRutaId());
		corrida.setMarcaId(params.getMarcaId());
		corrida.setClaseServicioId(params.getClaseServicioId());
		
		OperadorEmbarcadaServicoDAO operadorEmbarcadaServicoDAO = (OperadorEmbarcadaServicoDAO)AppContext.getApplicationContext().getBean("operadorEmbarcadaServicoDAO");
		PuntoVentaDAO puntoventaDAO = (PuntoVentaDAO)AppContext.getApplicationContext().getBean("puntoVentaDAO");
		MarcaDAO marcaDAO = (MarcaDAO)AppContext.getApplicationContext().getBean("marcaDAO");
		
		Marca marca = marcaDAO.obtenerID(params.getMarcaId().shortValue());
		if (marca != null){
			corrida.setEmpresaId(marca.getEmpresa().getEmpresaId());
		}
		
		operadorEmbarcadaServicoDAO.preencherCorrida(corrida, puntoventaDAO.obtenerID(params.getPuntoVentaId()),
				marca != null ? marca.getEmpresa() : null);
		
		DetalheCorridaVO vo = new DetalheCorridaVO();
		vo.setLsTramoVO(corrida.getLsTramoVO());
		vo.setLsSecuenciaVO(corrida.getLsSecuenciaVO());

		return vo;
	}
	
}
