package com.rjconsultores.ventaboletos.service.impl;

import java.util.Calendar;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.rjconsultores.ventaboletos.dao.ConexionDAO;
import com.rjconsultores.ventaboletos.entidad.Conexion;
import com.rjconsultores.ventaboletos.service.ConexionService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.vo.conexion.ConexionVO;

@Service("conexionService")
public class ConexionServiceImpl implements ConexionService {

	@Autowired
	private ConexionDAO conexionDAO;

	@Override
	@Transactional
	public void gerarConexiones() {
		conexionDAO.generarConexiones(UsuarioLogado.getUsuarioLogado().getUsuarioId());
	}

	@Override
	public List<ConexionVO> buscarConexionesValidas() {
		return conexionDAO.buscarConexionesValidas();
	}

	@Override
	public List<ConexionVO> buscarConexiones(boolean isBuscaAgrupada, Integer origenId, Integer destinoId) {
		return conexionDAO.buscarConexiones(isBuscaAgrupada, origenId, destinoId);
	}

	@Override
	@Transactional
	public Conexion suscribir(Conexion conexion) {
		conexion.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
		conexion.setFecmodif(Calendar.getInstance().getTime());
		conexion.setActivo(Boolean.TRUE);

		return conexionDAO.suscribir(conexion);
	}

	@Override
	@Transactional
	public Conexion actualizacion(Conexion conexion) {
		conexion.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
		conexion.setFecmodif(Calendar.getInstance().getTime());
		conexion.setActivo(Boolean.TRUE);

		return conexionDAO.actualizacion(conexion);
	}

	@Override
	public List<Conexion> buscarPorConexionCtrl(Long conexcionCtrlId) {
		return conexionDAO.buscarPorConexionCtrl(conexcionCtrlId);
	}

	@Override
	@Transactional
	public void borrar(Conexion conexion) {
		conexion.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
		conexion.setFecmodif(Calendar.getInstance().getTime());
		conexion.setActivo(Boolean.FALSE);

		conexionDAO.actualizacion(conexion);
	}

	@Override
	@Transactional
	public void borrar(List<Conexion> lsConexion) {
		for (Conexion conexion : lsConexion) {
			borrar(conexion);
		}

	}

	@Override
	@Transactional
	public void suscribirTodos(List<Conexion> conexiones) {
		conexionDAO.suscribirTodos(conexiones);
	}

	@Override
	@Transactional
	public Conexion buscarPorConexionRutaTramoCtrl(Integer conexionRutaTramoId) {
		return conexionDAO.buscarPorConexionRutaTramoCtrl(conexionRutaTramoId);
	}
}
