package br.mp.mprj.portal.portlet.gestaomensagens.action;

import java.util.ArrayList;
import java.util.List;

import javax.portlet.PortletException;
import javax.portlet.PortletPreferences;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
import javax.portlet.PortletURL;

import br.mp.mprj.portal.portlet.gestaomensagens.service.model.EmailDestinatario;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.EmailDestinatarioLocalServiceUtil;
import br.mp.mprj.portal.portlet.gestaomensagens.util.GestaoMensagensUtil;

import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PrefsParamUtil;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.PortletURLFactoryUtil;
import com.liferay.util.bridges.mvc.ActionCommand;
import com.liferay.util.portlet.PortletProps;

public class ExcluirEmailDestinatarioActionCommand implements ActionCommand{

	private static final Log _log = LogFactoryUtil.getLog(ExcluirEmailDestinatarioActionCommand.class);
	
	public String EMAIL_USUARIO_EXCLUIR = null;
	
	
	
	@Override
	public boolean processCommand(PortletRequest portletRequest, PortletResponse response) throws PortletException {
		
		try {
			
			if (!ParamUtil.getString(portletRequest, "email_usuario").isEmpty()) {
				EMAIL_USUARIO_EXCLUIR = ParamUtil.getString(portletRequest,"email_usuario");				
			}else{
				return false;
			}
					
			PortletPreferences preferences = portletRequest.getPreferences();
		
			long grupoDestinatarioIdLong = Long.parseLong(PrefsParamUtil.getString(preferences, portletRequest, "grupoDestinatarioId", PortletProps.get("configuracao.valor-padrao.IdgrupoMensagem")));	
						
			List<EmailDestinatario> listaEmail = EmailDestinatarioLocalServiceUtil.findByGrupoDestinatarioId(grupoDestinatarioIdLong);
		
			List<EmailDestinatario> listaEmailExcluir = new ArrayList<EmailDestinatario>();
			
			for (EmailDestinatario email : listaEmail){	
				
				if(EMAIL_USUARIO_EXCLUIR.equals(email.getEmail())){
					listaEmailExcluir.add(email);
				}
			}		
			
			if (!listaEmailExcluir.isEmpty()) {
				for (EmailDestinatario email : listaEmailExcluir) {
					EmailDestinatarioLocalServiceUtil.deleteEmailDestinatario(email);
				}
			
			}else{
				_log.error("Problemas ao gravar !");
				SessionErrors.add(portletRequest, "nao-cadastrado");
				return false;
			}			
				
			SessionMessages.add(portletRequest, "sucesso-excluir");
		
            return true;
				
			
		} catch (Exception ex) {
			_log.error("Problemas ao gravar:", ex);
			SessionErrors.add(portletRequest, "erro-gravar");
			SessionErrors.add(portletRequest, "duplicado");
			GestaoMensagensUtil.descartarRascunhos(portletRequest);
			return false;
		}		
	}	
	
}
	
