package com.rjconsultores.ventaboletos.rest.service;

import java.util.Calendar;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.rjconsultores.ventaboletos.dao.UsuarioDAO;
import com.rjconsultores.ventaboletos.entidad.Usuario;
import com.rjconsultores.ventaboletos.rest.bean.ParamsAlterarSenha;
import com.rjconsultores.ventaboletos.rest.returns.AlteracaoSenhaRetorno;

@Service("alterarSenhaService")
public class AlterarSenhaService {
	@Autowired
	private UsuarioDAO usuarioDAO;
	
	@Transactional
	public AlteracaoSenhaRetorno alterarSenha(ParamsAlterarSenha params) {
		AlteracaoSenhaRetorno retorno = new AlteracaoSenhaRetorno();
		retorno.setStatus("SUCCESS");

		if (params.getUsuarioId() == null || 
				params.getSenhaAtual() == null || params.getSenhaAtual().isEmpty() || 
				params.getNovaSenha() == null || params.getNovaSenha().isEmpty()) {
			retorno.setStatus("ERROR");
			retorno.setMensagem("Parametros invalidos");
			
			return retorno;
		}
		
		Usuario usuario = usuarioDAO.obtenerID(params.getUsuarioId());
		
		if (usuario == null) {
			retorno.setStatus("ERROR");
			retorno.setMensagem("Usuario nao encontrado");
		} else if (!usuario.getSenha().equals(params.getSenhaAtual())) {
			retorno.setStatus("ERROR");
			retorno.setMensagem("Senha atual invalida");
		} else {
			usuario.setSenha(params.getNovaSenha());
			usuario.setFecContrasena(Calendar.getInstance().getTime());
			usuario.setUsuariomodifId(usuario.getUsuarioId());
			usuario.setFecmodif(Calendar.getInstance().getTime());
			
			usuarioDAO.actualizacion(usuario);
		}
		
		return retorno;
	}
}
