package com.rjconsultores.ventaboletos.service.impl;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.rjconsultores.ventaboletos.constantes.ConstantesVendaEmbarcada;
import com.rjconsultores.ventaboletos.dao.CajaDAO;
import com.rjconsultores.ventaboletos.dao.hibernate.CajaHibernateDAO;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaBoletoException;
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaBoletoFormapagoException;
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaCajaException;
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaCajaFormapagoException;
import com.rjconsultores.ventaboletos.service.VendaEmbarcadaService;
import com.rjconsultores.ventaboletos.vo.caja.VendaEmbarcadaVO;

@Service("VendaEmbarcadaService")
public class VendaEmbarcadaServiceImpl implements VendaEmbarcadaService {
	
	private static Logger log = LogManager.getLogger(CajaHibernateDAO.class);
	
	@Autowired
	CajaDAO cajaDao;

	@Override
	public int gerarVendaEmbarcada(VendaEmbarcadaVO vendaEmbarcada) throws BusinessException {
		try {
			cajaDao.gerarVendaEmbarcada(vendaEmbarcada);
			
			return ConstantesVendaEmbarcada.VENDA_GERADA;
		} catch (VendaEmbarcadaBoletoException e) {
			log.error(e.getMessage(), e);
			return ConstantesVendaEmbarcada.VENDA_BOLETO_ERROR;
		} catch (VendaEmbarcadaBoletoFormapagoException e) {
			log.error(e.getMessage(), e);
			return ConstantesVendaEmbarcada.VENDA_BOLETO_FORMAPAGO_ERROR;
		} catch (VendaEmbarcadaCajaException e) {
			log.error(e.getMessage(), e);
			return ConstantesVendaEmbarcada.VENDA_CAJA_ERROR;
		} catch (VendaEmbarcadaCajaFormapagoException e) {
			log.error(e.getMessage(), e);
			return ConstantesVendaEmbarcada.VENDA_CAJA_FORMAPAGO_ERROR;
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			throw new BusinessException(e.getMessage(), e);
		}
	
	}

}
