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

import com.rjconsultores.ventaboletos.dao.ClasseServicoDAO;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.service.ClaseServicioService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;

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;

/**
 *
 * @author Administrador
 */
@Service("claseServicioService")
public class ClaseServicioServiceImpl implements ClaseServicioService {

    @Autowired
    private ClasseServicoDAO claseServicoDAO;

    public List<ClaseServicio> obtenerTodos() {
        return claseServicoDAO.obtenerTodos();
    }

    public ClaseServicio obtenerID(Integer id) {
        return claseServicoDAO.obtenerID(id);
    }

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

        return claseServicoDAO.suscribir(entidad);
    }

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

        return claseServicoDAO.actualizacion(entidad);
    }

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

        claseServicoDAO.actualizacion(entidad);
    }

    public List<ClaseServicio> buscarPorNome(Integer idClaseServicio, String nomeClaseServicio) {
        return claseServicoDAO.buscarPorNome(idClaseServicio, nomeClaseServicio);
    }
    
    public List<ClaseServicio> buscarTodosExceto(Integer ... idClase){
        return claseServicoDAO.buscarTodosExceto(idClase);
    }
    
    public List<ClaseServicio> 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<ClaseServicio> result = (List<ClaseServicio>) claseServicoDAO.buscarPorEmpresasDoUsuario(idEmpresas);				
    	return result;
    }
}
