package com.fp.base.persistence.util.helper;

import com.fp.common.messages.MessageUtil;
import com.fp.dto.Request;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc;
import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDescKey;
import com.fp.persistence.pgeneral.trans.TgeneTransaction;

/**
 * Clase que encarga de completar plantillas de mesajes.
 * 
 * @author Jorge Vaca.
 * @version 2.1
 */
public class MessageManager {

    /**
     * Verifica que la transaccion tienga definida una plantilla de mensajes, busca el template de mensaje y compelta
     * informacion dado el request.
     * 
     * @param request Datos del mensaje de entrada.
     * @return String
     * @throws Exception
     */
    public static String getMessage(Request request) throws Exception {
        // Fija datos del subject de la agenda, si no tiene un valor previo y el codigo de plantilla de mensaje es
        String message = "";
        if ((request.mbeans == null) || !request.mbeans.containsKey("tgenetransaction")) {
            return message;
        }
        Integer messagecode = ((TgeneTransaction) request.mbeans.get("tgenetransaction")).getMessagecode();
        if (messagecode != null) {
            MessageDescriptions md = new MessageDescriptions();
            TgeneMessageTemplatesDescKey key = new TgeneMessageTemplatesDescKey(messagecode, request.getLanguage());
            TgeneMessageTemplatesDesc msg = TgeneMessageTemplatesDesc.find(PersistenceHelper.getEntityManager(), key);
            MessageUtil mu = new MessageUtil("es", msg.getTemplate());
            mu.setValue("request", request);
            mu.setValue("messagedescripciones", md);
            message = mu.getMessage();
        }
        return message;
    }

}