package com.rjconsultores.ventaboletos.service.impl;

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

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.rjconsultores.ventaboletos.dao.MonitoramentoCRZDAO;
import com.rjconsultores.ventaboletos.entidad.MonitoramentoCRZ;
import com.rjconsultores.ventaboletos.service.MonitoramentoCRZService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;

@Service("monitoramentoCRZService")
public class MonitoramentoCRZServiceImpl implements MonitoramentoCRZService{
	private static final Logger log = LogManager.getLogger(MonitoramentoCRZServiceImpl.class);
	
	@Autowired
    private MonitoramentoCRZDAO monitoramentoCRZDAO;
	
	public List<MonitoramentoCRZ> obtenerTodos() {
        return monitoramentoCRZDAO.obtenerTodos();
    }

    public MonitoramentoCRZ obtenerID(Integer id) {
        return monitoramentoCRZDAO.obtenerID(id);
    }
    
	@Transactional
    public MonitoramentoCRZ suscribir(MonitoramentoCRZ entidad) {
        entidad.setUsuarioModif(UsuarioLogado.getUsuarioLogado());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.TRUE);

        try{
        	return monitoramentoCRZDAO.suscribir(entidad);
        } catch (Exception e){
        	log.error("", e);
        	return entidad;
        }
    }

    @Transactional
    public MonitoramentoCRZ actualizacion(MonitoramentoCRZ entidad) {
        entidad.setUsuarioModif(UsuarioLogado.getUsuarioLogado());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.TRUE);

        return monitoramentoCRZDAO.actualizacion(entidad);
    }

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

        monitoramentoCRZDAO.actualizacion(entidad);
    }

    @Override
    public List<MonitoramentoCRZ> buscaQuebraCRZ(Date data){
    	return monitoramentoCRZDAO.buscaQuebraCRZ(data);
    }
}
