/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.service.impl;

import java.util.List;

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

import com.rjconsultores.ventaboletos.dao.DispositivoEmbarcadaDAO;
import com.rjconsultores.ventaboletos.entidad.DispositivoEmbarcada;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.exception.DispositivoEmbarcadaJaCadastradoException;
import com.rjconsultores.ventaboletos.service.DispositivoEmbarcadaService;

/**
 *
 * @author Administrador
 */
@Service("dispositivoEmbarcadaService")
public class DispositivoEmbarcadaServiceImpl implements DispositivoEmbarcadaService {

	@Autowired
	private DispositivoEmbarcadaDAO dispositivoEmbarcadaDAO;

	@Override
	public List<DispositivoEmbarcada> obtenerTodos() {
		return dispositivoEmbarcadaDAO.obtenerTodos();
	}
	
	private void validaDispositivoJaCadastrado(DispositivoEmbarcada dispositivoEmbarcada) throws DispositivoEmbarcadaJaCadastradoException{
		if (buscarDispositivoPorId(dispositivoEmbarcada) == null) {
			if (buscarImeiDuplicado(dispositivoEmbarcada.getImei()) != null) throw new DispositivoEmbarcadaJaCadastradoException("Já existe um dispositivo cadastrado com esse Imei");
			if (buscarVersaoUltimaSinc(dispositivoEmbarcada.getVersaoUltimaSinc()) != null) throw new DispositivoEmbarcadaJaCadastradoException("Já existe um dispositivo cadastrado com esse MAC");
		}
	}

	@Override
	public DispositivoEmbarcada suscribirActualizar(DispositivoEmbarcada dispositivoEmbarcada) throws DispositivoEmbarcadaJaCadastradoException {
		validaDispositivoJaCadastrado(dispositivoEmbarcada);
		return dispositivoEmbarcadaDAO.suscribirActualizar(dispositivoEmbarcada);
	}

	@Override
	public DispositivoEmbarcada buscarVersaoUltimaSinc(String versaoUltimaSinc) {
		return dispositivoEmbarcadaDAO.buscarVersaoUltimaSinc(versaoUltimaSinc);
	}
	@Override
	public  List<String> buscarAllVersaoUltimaSinc() {
		return dispositivoEmbarcadaDAO.buscarAllVersaoUltimaSinc();
	}

	@Override
	public DispositivoEmbarcada buscarImeiDuplicado(String imei) {
		return dispositivoEmbarcadaDAO.buscarImeiDuplicado(imei);
	}

	@Override
	public DispositivoEmbarcada suscribir(DispositivoEmbarcada entidad) throws DispositivoEmbarcadaJaCadastradoException {
		validaDispositivoJaCadastrado(entidad);
		return dispositivoEmbarcadaDAO.suscribir(entidad);
	}

	@Override
	public DispositivoEmbarcada actualizacion(DispositivoEmbarcada entity) {
		return dispositivoEmbarcadaDAO.actualizacion(entity);
	}

	@Override
	public DispositivoEmbarcada suscribirActualizacion(DispositivoEmbarcada entidad) {
		return dispositivoEmbarcadaDAO.suscribirActualizar(entidad);
	}

	@Override
	public DispositivoEmbarcada buscarDispositivoPorId(DispositivoEmbarcada dispositivoEmbarcada) {
		return dispositivoEmbarcadaDAO.buscarDispositivoPorId(dispositivoEmbarcada);
	}

	@Override
	public List<DispositivoEmbarcada> buscarPorEmpresaPuntoVenta(Empresa empresa, PuntoVenta puntoventa) {
		return dispositivoEmbarcadaDAO.buscarPorEmpresaPuntoVenta(empresa, puntoventa);
	}
	
}
