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.AbastoBoletoDAO;
import com.rjconsultores.ventaboletos.entidad.AbastoBoleto;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.service.AbastoBoletoService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;

@Service("abastoBoletoService")
public class AbastoBoletoServiceImpl implements AbastoBoletoService {

	@Autowired
	private AbastoBoletoDAO abastoBoletoDAO;

	@Override
	public List<AbastoBoleto> obtenerTodos() {
		return abastoBoletoDAO.obtenerTodos();
	}

	@Override
	public AbastoBoleto obtenerID(Integer id) {
		return abastoBoletoDAO.obtenerID(id);
	}

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

		return abastoBoletoDAO.suscribir(entidad);
	}

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

		return abastoBoletoDAO.actualizacion(entidad);
	}

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

		abastoBoletoDAO.actualizacion(entidad);
	}
	
	@Transactional
	@Override
	public AbastoBoleto movimentaAbasto(
			AbastoBoleto abastoBoleto, 
			PuntoVenta destino) throws BusinessException {
		
		if( abastoBoleto == null ) {
			throw new BusinessException("abastoService.msg.semOrigem");
		}
		
		try {
			AbastoBoleto novo = new AbastoBoleto();
			novo.setArticulo(abastoBoleto.getArticulo());
			novo.setCantfajilla(abastoBoleto.getCantfajilla());
			novo.setClasificacion(abastoBoleto.getClasificacion());
			novo.setEmpresa(abastoBoleto.getEmpresa());
			novo.setEstacion(abastoBoleto.getEstacion());
			novo.setFechorfirma(abastoBoleto.getFechorfirma());
			novo.setFechorreq(abastoBoleto.getFechorreq());
			novo.setNumrequisicion(abastoBoleto.getNumrequisicion());
			novo.setNumservidor(abastoBoleto.getNumservidor());			
			novo.setPuntoventacentral(abastoBoleto.getPuntoventacentral());
			novo.setStatusEnvio(abastoBoleto.getStatusEnvio());
			novo.setStatusfirma(abastoBoleto.getStatusfirma());
			novo.setUsuariogeneracionId(abastoBoleto.getUsuariogeneracionId());
			novo.setUsuarioreqId(abastoBoleto.getUsuarioreqId());
			novo.setPuntoventa(destino);
			novo.setFechorgeneracion(Calendar.getInstance().getTime());
			return novo;
		}catch (Exception e) {
			throw new BusinessException(e.getMessage());
		}
		
	}

}
