/*
 * 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 org.springframework.transaction.annotation.Transactional;

import com.rjconsultores.ventaboletos.dao.PrecioFixoPedagioDAO;
import com.rjconsultores.ventaboletos.dao.hibernate.PrecioFixoPedagioHibernateDAO;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.PrecioFixoPedagio;
import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.service.PrecioFixoPedagioService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;

/**
 *
 * @author Administrador
 */
@Service("precioFixoPedagioService")
public class PrecioFixoPedagioServiceImpl implements PrecioFixoPedagioService {

    @Autowired
    private PrecioFixoPedagioDAO precioFixoPedagioDAO;
    @Autowired
    private PrecioFixoPedagioHibernateDAO precioFixoPedagioHibernateDAO;

    public List<PrecioFixoPedagio> obtenerTodos() {
        return precioFixoPedagioDAO.obtenerTodos();
    }

    public PrecioFixoPedagio obtenerID(Integer id) {
        return precioFixoPedagioDAO.obtenerID(id);
    }


    public List<PrecioFixoPedagio> buscarPorNome(String nomeClaseServicio) {
        return precioFixoPedagioDAO.buscarPorNome(nomeClaseServicio);
    }
    
    public List<PrecioFixoPedagio> buscarTodosExceto(Integer ... idClase){
        return precioFixoPedagioDAO.buscarTodosExceto(idClase);
    }
    
    public List<PrecioFixoPedagio> buscarPorEmpresasDoUsuario (List<Empresa> empresasUsuario) {
		
    	if(empresasUsuario == null || empresasUsuario.isEmpty()) {
    		return null;
    	}
    	    	
    	StringBuilder idEmpresasBuilder = new StringBuilder();
    	String idEmpresas = "";
		
		for (Empresa empresa : empresasUsuario) {
			idEmpresasBuilder.append(empresa.getEmpresaId().toString()).append(",");
		}
		
		idEmpresasBuilder = idEmpresasBuilder.deleteCharAt(idEmpresasBuilder.length() -1);
		idEmpresas = idEmpresasBuilder.toString();
		
		List<PrecioFixoPedagio> result = (List<PrecioFixoPedagio>) precioFixoPedagioDAO.buscarPorEmpresasDoUsuario(idEmpresas);				
    	return result;
    }

    @Transactional
	public PrecioFixoPedagio suscribir(PrecioFixoPedagio entidad) {
		
		return precioFixoPedagioDAO.suscribir(entidad);
	}

	@Transactional
	public PrecioFixoPedagio actualizacion(PrecioFixoPedagio entidad) {
		return precioFixoPedagioDAO.actualizacion(entidad);
	}

	@Transactional
	public void borrar(PrecioFixoPedagio entidad) {
        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(new java.util.Date());
        entidad.setActivo(false);
		precioFixoPedagioDAO.actualizacion(entidad);
		
	}
	@Override
	public Boolean validarInclusaoPrecoFixo(PrecioFixoPedagio precoFixoPedagio) {
		List<PrecioFixoPedagio> precos = buscar(precoFixoPedagio);
		
	
		if(precos.isEmpty()){
				return Boolean.TRUE;
		} 
			
		return Boolean.FALSE;	
			
		
	}

	private List<PrecioFixoPedagio> buscar(PrecioFixoPedagio precoFixoPedagio) {
	    
		return precioFixoPedagioHibernateDAO.buscarPrecioFixoPedagio(precoFixoPedagio);
	}

	@Override
	public List<PrecioFixoPedagio> buscarPrecioFixoPedagio(PrecioFixoPedagio obj) {
		
		return precioFixoPedagioDAO.buscarPrecioFixoPedagio(obj);
	}

	
}
