Subversion Repositories SmartDukaan

Rev

Rev 7207 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.recharge.controllers;

import in.shop2020.model.v1.order.HotspotStore;
import in.shop2020.model.v1.order.RechargePlan;
import in.shop2020.model.v1.order.RechargeType;
import in.shop2020.thrift.clients.TransactionClient;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.apache.shiro.SecurityUtils;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ValidationAwareSupport;

/**
 * Base class for all user action handlers i.e. controllers
 * 
 * @author Vikas
 */
public abstract class BaseController extends ValidationAwareSupport implements
        ServletResponseAware, ServletRequestAware, SessionAware
{
    private static final long serialVersionUID = 3339523094497219816L;
    protected static Logger log = Logger.getLogger(BaseController.class);

    protected static final String INPUT = "input";
    protected static final String INDEX = "index";
    protected static final String EDIT_NEW = "editNew";
    protected static final String EDIT = "edit";
    protected static final String SHOW = "show";
    protected static final String EXCEPTION = "exception";
    
    public static Map<Long, HotspotStore> hotspotStores = new HashMap<Long, HotspotStore>();

    protected final SimpleDateFormat SDF = new SimpleDateFormat("dd MMM, yyyy hh:mm a");

    protected HttpServletResponse response;
    protected HttpServletRequest request;
    protected HttpSession session;
    protected Map<String, Object> sessionMap;
    
    protected Long storeId;
    public static final String HEADER_X_FORWARDED_FOR = "X-FORWARDED-FOR";
    public static Map<Long, String> mobileProvidersMap;
    public static Map<Long, String> dthProvidersMap;
    public static Map<Long, List<RechargePlan>> operatorPlanMap;
    public static Map<String, Long> operatorNametoValueMap = new HashMap<String, Long>();
    
    static {
        TransactionClient tcl;
        try {
            operatorPlanMap = new HashMap<Long, List<RechargePlan>>();
            tcl = new TransactionClient();
            mobileProvidersMap = tcl.getClient().getServiceProviders(RechargeType.MOBILE, true);
            dthProvidersMap = tcl.getClient().getServiceProviders(RechargeType.DTH, true);
            for (Long operatorId : mobileProvidersMap.keySet()) {
                List<RechargePlan> plans = tcl.getClient().getPlansForOperator(operatorId);
                if (!plans.isEmpty()) {
                    operatorPlanMap.put(operatorId, plans);
                }
            }
            for (Entry<Long, String> entry : mobileProvidersMap.entrySet()) {
                operatorNametoValueMap.put(entry.getValue(), entry.getKey());
            }
        } catch(Exception e) {
            log.error("Could not get all plans", e);
        }
    }
    
    public void setServletResponse(HttpServletResponse response) {
        this.response = response;
    }

    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
        this.session = request.getSession();
    }
    
    public void setSession(Map<String, Object> sessionMap) {
        this.sessionMap = sessionMap;
    }
    
    /**
     * Utility method to convert a date to a readable format 
     */
    public String convertDate(Long date) {
        if (date == null || date == 0) {
            return "N/A";
        }

        return SDF.format(new Date(date));
    }
    
    public String remoteAddr(HttpServletRequest request) {
        String remoteAddr = "";
        String x;
        x = request.getHeader(HEADER_X_FORWARDED_FOR);
        if (x != null && !x.isEmpty()) {
            remoteAddr = x;
            int idx = remoteAddr.lastIndexOf(',');
            if (idx > -1) {
                remoteAddr = remoteAddr.substring(idx + 1).trim();
            }
        } else {
            remoteAddr = request.getRemoteAddr();
        }
        return remoteAddr;
    }

    public String index() {
        return INDEX;
    }

    public String editNew() {
        return EDIT_NEW;
    }

    public String edit() {
        return EDIT;
    }

    public boolean isPermitted(String permission) {
        return SecurityUtils.getSubject().isPermitted(permission);
    }
    
    public String getStoreCode(){
        return hotspotStores.get(storeId).getHotspotId();   
    }
    
    public String getCollectedAmount(){
        return hotspotStores.get(storeId).getCollectedAmount()+"";
    }
    
    public Long getStoreId() {
        return storeId;
    }

    public void setStoreId(Long storeId) {
        this.storeId = storeId;
    }
    
    public static void setDthProvidersMap(Map<Long, String> dthProvidersMap) {
        BaseController.dthProvidersMap = dthProvidersMap;
    }

    public static Map<Long, String> getDthProvidersMap() {
        return dthProvidersMap;
    }
    
    public static void setMobileProvidersMap(Map<Long, String> mobileProvidersMap) {
        BaseController.mobileProvidersMap = mobileProvidersMap;
    }

    public static Map<Long, String> getMobileProvidersMap() {
        return mobileProvidersMap;
    }

}