package com.fitbank.web;

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.fitbank.dto.management.Detail;
import com.fitbank.dto.management.Field;

public class Trn {
	private HttpServletRequest request;

	private Map<String, String> parameters = new HashMap<String, String>();

	private Detail detail = null;

	
	@SuppressWarnings("unchecked")
	public Trn(HttpServletRequest pRequest) throws Exception {
		request = pRequest;
		Enumeration<String> param = request.getParameterNames();
		while (param.hasMoreElements()) {
			String paramName = param.nextElement();
			String val = request.getParameter(paramName).trim();
			parameters.put(paramName, val);
		}
		DataManage dm = (DataManage) request.getSession().getAttribute(DataManage.KEY);
		detail = new Detail();
		detail.setType(MessageTypes.CON.name());
		detail.setSubsystem(request.getParameter("sub"));
		detail.setTransaction(request.getParameter("trn"));
		detail.setVersion(request.getParameter("ver"));
		dm.prepareHeaderData(detail,this.request);
		for (String key : this.parameters.keySet()) {
			detail.findFieldByNameCreate(key).setValue(this.parameters.get(key));
		}
		BussinessDelegate bd = new BussinessDelegate();
		this.detail = bd.process(detail);
		String realMSG=(String)this.detail.findFieldByNameCreate("_REAL_MSG").getValue();
		if(realMSG!=null){
		  request.getSession().setAttribute("_REAL_MSG", realMSG);
		}else{
			request.getSession().removeAttribute("_REAL_MSG");
		}
			
	}

	  
		public String getData() {
			String data = "{identifier:\"ID\",";
			data += "items: [";
			data += "{";
			data +=  "ID:'" + "_RESPONSE" + "'";
		  data += ",VALUE:'" + detail.getResponse().getCode() + "'";				
			data += "}";
			data += ",{";
			data +=  "ID:'" + "_USER_MESSAGE" + "'";
		  data += ",VALUE:'" + detail.getResponse().getUserMessage() + "'";				
			data += "}";			
			for (Field field : this.detail.getFields()) {
				data += ",";
				data += "{";
				data +=  "ID:'" + field.getName() + "'";
			  data += ",VALUE:'" + field.getValue() + "'";				
				data += "}";
		}
			return data + "]}";
		}
	
}