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

import java.util.Calendar;
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.CategoriaDescuentoDAO;
import com.rjconsultores.ventaboletos.entidad.CategoriaDescuento;
import com.rjconsultores.ventaboletos.service.CategoriaDescuentoService;
import com.rjconsultores.ventaboletos.service.LogAuditoriaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;

/**
 *
 * @author Administrador
 */
@Service("categoriaDescuentoService")
public class CategoriaDescuentoServiceImpl implements CategoriaDescuentoService {

    @Autowired
    private CategoriaDescuentoDAO categoriaDescuentoDAO;
	private static Logger log = LogManager.getLogger(CategoriaDescuentoServiceImpl.class);
	@Autowired
	private LogAuditoriaService logAuditoriaService;


    public List<CategoriaDescuento> obtenerTodos() {
        return categoriaDescuentoDAO.obtenerTodos();
    }

    public CategoriaDescuento obtenerID(Integer id) {
		return categoriaDescuentoDAO.obtenerID(id);
    }

    @Transactional
    public CategoriaDescuento suscribir(CategoriaDescuento entidad) {
        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.TRUE);
    	entidad = categoriaDescuentoDAO.suscribir(entidad);	
		logAuditoriaService.auditar(null, entidad,  null);
		return entidad;
    }

    @Transactional
    public CategoriaDescuento actualizacion(CategoriaDescuento entidad) {
    	
    	CategoriaDescuento originalClone = null;
		try {
			originalClone = entidad.getCloneObject();
		} catch (Exception e) {
			log.error("Erro ao clonar TitularId",e);
		}
        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.TRUE);

        entidad = categoriaDescuentoDAO.actualizacion(entidad);	
		logAuditoriaService.auditar(originalClone, entidad, null);
        return entidad;
    }

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

        categoriaDescuentoDAO.actualizacion(entidad);
		logAuditoriaService.auditarExclusao(entidad, null);

    }
}
