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.OCDParamDAO;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.OCDParam;
import com.rjconsultores.ventaboletos.service.OCDParamService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;

@Service("ocdParamService")
public class OCDParamServiceImpl implements OCDParamService {

	@Autowired
	private OCDParamDAO ocdParamDAO;
	
	private void setUsuarioFecmodifActivoOCD(OCDParam entidad){
		 entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
	     entidad.setFecmodif(Calendar.getInstance().getTime());
	     entidad.setActivo(Boolean.TRUE);
	}
	
	@Override
	public List<OCDParam> obtenerTodos() {
		List<OCDParam> params = ocdParamDAO.obtenerTodos();
		return params;
	}

	@Override
	public OCDParam obtenerID(Integer id) {
		OCDParam param = ocdParamDAO.obtenerID(id);		
		return param;
	}
	
	@Transactional
	public OCDParam suscribirActualizar(OCDParam entidad){
		if (entidad.getOcdparamId() == null && ocdParamDAO.buscaOCDParamPorEmpresa(entidad.getEmpresa()) != null){
			return null;
		} else{
			return ocdParamDAO.suscribirActualizar(entidad);
		}
	}

	@Transactional
	public OCDParam suscribir(OCDParam entidad) {
		setUsuarioFecmodifActivoOCD(entidad);
		OCDParam param = ocdParamDAO.suscribir(entidad);
		return param;
	}

	@Transactional
	public OCDParam actualizacion(OCDParam entidad) {
		setUsuarioFecmodifActivoOCD(entidad);
		OCDParam param = ocdParamDAO.actualizacion(entidad);
		return param;
	}

	@Transactional
	public void borrar(OCDParam entidad) {
		setUsuarioFecmodifActivoOCD(entidad);
		entidad.setActivo(Boolean.FALSE);
		ocdParamDAO.borrar(entidad);
	}

	@Override
	public OCDParam buscaOCDParamPorEmpresa(Empresa empresa) {
		OCDParam param = ocdParamDAO.buscaOCDParamPorEmpresa(empresa);		
		return param;
	}

	@Override
	public List<OCDParam> buscaOCDParams(Empresa empresa) {
		List<OCDParam> params = ocdParamDAO.buscaOCDParams(empresa);
		return params;
	}
}
