package br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl;

import com.liferay.portal.kernel.exception.SystemException;

import br.mp.mprj.portal.portlet.gestaomensagens.service.NoSuchGrupoDestinatarioException;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.GrupoDestinatario;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.base.GrupoDestinatarioServiceBaseImpl;
import br.mp.mprj.portal.portlet.gestaomensagens.ws.vo.CodigoDescricaoRetorno;

/**
 * The implementation of the grupo destinatario remote service.
 *
 * <p>
 * All custom service methods should be put in this class. Whenever methods are added, rerun ServiceBuilder to copy their definitions into the {@link br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioService} interface.
 *
 * <p>
 * This is a remote service. Methods of this service are expected to have security checks based on the propagated JAAS credentials because this service can be accessed remotely.
 * </p>
 *
 * @author Henrique Simoes
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.service.base.GrupoDestinatarioServiceBaseImpl
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioServiceUtil
 */
public class GrupoDestinatarioServiceImpl
    extends GrupoDestinatarioServiceBaseImpl {
    /*
     * NOTE FOR DEVELOPERS:
     *
     * Never reference this interface directly. Always use {@link br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioServiceUtil} to access the grupo destinatario remote service.
     */
	
	public CodigoDescricaoRetorno getListaDestinatario(String nomeLista) {
		
		CodigoDescricaoRetorno wsReturn = new CodigoDescricaoRetorno();
		
		if (nomeLista == null || "".equals(nomeLista)) {
			wsReturn.setError("[Gestão de Mensagens] - Informe o nome da conta  de envio.");
			return wsReturn;
		}
		
		GrupoDestinatario grupoDestinatario = null;
		
		try {

			grupoDestinatario = grupoDestinatarioPersistence.findByNomeTipoListaAtivo(nomeLista, 0, true);
			
			if (grupoDestinatario != null){
				wsReturn.setCodigo(String.valueOf(grupoDestinatario.getGrupoDestinatarioId()));
				wsReturn.setDescricao(grupoDestinatario.getNome());	
			} else {
				wsReturn.setError("[Gestão de Mensagens] - A lista de destinatário "+ nomeLista +", não foi localizada.");
			}
			
			
		} catch (NoSuchGrupoDestinatarioException | SystemException e) {
			wsReturn.setError("[Gestão de Mensagens] - A lista de destinatário "+ nomeLista +", não foi localizada.");
		}
		
		return wsReturn;
	}
	
	public CodigoDescricaoRetorno getContaEnvio(String nomeContaEnvio){
		
		CodigoDescricaoRetorno wsReturn = new CodigoDescricaoRetorno();
		
		if (nomeContaEnvio == null || "".equals(nomeContaEnvio)) {
			wsReturn.setError("[Gestão de Mensagens] - Informe o nome da conta  de envio.");
			return wsReturn;
		}
		
		GrupoDestinatario grupoDestinatario = null;
		
		try {
			grupoDestinatario = grupoDestinatarioPersistence.findByNomeTipoListaAtivo(nomeContaEnvio, 1, true);
			
			if (grupoDestinatario != null){
				wsReturn.setCodigo(String.valueOf(grupoDestinatario.getGrupoDestinatarioId()));
				wsReturn.setDescricao(grupoDestinatario.getNome());
			} else {
				wsReturn.setError("[Gestão de Mensagens] - A conta de envio "+ nomeContaEnvio +", não foi localizada.");

			}
			
		} catch (NoSuchGrupoDestinatarioException | SystemException e) {
			wsReturn.setError("[Gestão de Mensagens] - A conta de envio "+ nomeContaEnvio +", não foi localizada.");
		}
		
		return wsReturn;
		 
	}
}
