Subversion Repositories SmartDukaan

Rev

Rev 7068 | Rev 7096 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.recharge.controllers;

import in.shop2020.model.v1.order.DenominationType;
import in.shop2020.model.v1.order.DeviceNumberInfo;
import in.shop2020.model.v1.order.RechargeDenomination;
import in.shop2020.model.v1.order.RechargePlan;
import in.shop2020.model.v1.order.RechargeType;
import in.shop2020.thrift.clients.TransactionClient;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;

public class HomeController extends BaseController {
    
    /**
     * 
     */
    private String deviceType = null; //Default is Mobile , 2 is for DTH
    private String deviceNumber = "";
    private String form = "";
    private String error = "";
    private String operatorId;
    private String operatorName;
    private String serviceName;
    private String denominationType;
    private String circleCode;
    private List<RechargeDenomination> rechargeDenominations = null;
    private static final long serialVersionUID = 2079308723099307749L;

    private static Logger log = Logger.getLogger(Class.class);
    private static Map<Long, String> mobileProvidersMap;
    private static Map<Long, String> dthProvidersMap;
    private static Map<Long, List<RechargePlan>> operatorPlanMap;
    private static String errorMsg = "";
    
    
    static {
        TransactionClient tcl;
        try {
            operatorPlanMap = new HashMap<Long, List<RechargePlan>>();
            tcl = new TransactionClient();
            mobileProvidersMap = tcl.getClient().getServiceProviders(RechargeType.MOBILE, true);
            setDthProvidersMap(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);
                }
            }
        } catch(Exception e) {
            setErrorMsg("There seems to be some problem. Please try again.");
        }
    }
    
    
    @Action("/")
    public String index() {
        System.out.println("Index method");
        
//        uri = request.getRequestURI();
//        uri = uri.replace("/", "");
//        log.info("Uri: " + uri);
//        Map<String, String> valueMap = Utils.getOperatorByUri(uri);
//        operatorId  = valueMap.get("Id");
//        operatorName = valueMap.get("Name"); 
//        serviceName  = valueMap.get("ServiceName");
//        if(deviceType == null){
//            deviceType  = valueMap.get("deviceType");
//        }
        
        return "index";
    }
    
    public String create() {
        return index();
    }
    
//    public Map<Long, String> getProviderMap() {
//        if(deviceType.equals("1"))
//            providers = Utils.getMobileProvidersMap();
//        else
//            providers = Utils.getDthProvidersMap();
//        return providers;
//    }
//    
    public String getServiceProvider() {
        return "service-provider";
    }
    
    public String getProvider(){
        TransactionClient tcl;
        try {
            tcl = new TransactionClient();
            DeviceNumberInfo deviceInfo =  tcl.getClient().getServiceProviderForDevice(RechargeType.findByValue(Integer.parseInt(this.deviceType)), deviceNumber);
            return deviceInfo.getOperatorId() + ":" + deviceInfo.getCircleCode();
        } catch (Exception e) {
            log.error("Unable to get service provider for Device number " + deviceNumber + " and rechargeType : " +  deviceType, e);
            return ":";
        }
    }
    
    public String getAllDenominations() {
        TransactionClient tcl;
        try {
            tcl = new TransactionClient();
            rechargeDenominations =  tcl.getClient().getRechargeDenominations(Long.parseLong(operatorId), circleCode, DenominationType.findByValue(Integer.parseInt(denominationType)));
            if(rechargeDenominations == null || rechargeDenominations.isEmpty()) {
                setError("This information is unavailable for now.<br>You can recharge with the amount you normally use or you can try later.");
            }
        } catch (Exception e) {
            log.error("Unable to get rechargeDenominations for operatorId " + operatorId + " and circleCode : " +  circleCode + " and DenominationType : " + denominationType, e);
            setError("This information is unavailable for now.<br>You can recharge with the amount you normally use or you can try later.");
        }
        return "recharge-denomination";
    }
    
//    public String getPlanMapInJson() {
//        Gson gson = new Gson();
//            return (gson.toJson(Utils.getOperatorPlanMap()));
//    }

    public void setDeviceType(String incomingdeviceType) {
        deviceType = incomingdeviceType;
    }
    
    public void setDeviceNumber(String deviceNumber){
        this.deviceNumber = deviceNumber;
    }

    public String getDeviceType() {
        return deviceType;
    }

    public String getForm() {
        return form;
    }

    public void setForm(String form) {
        this.form = form;
    }

    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }
    
    public String getPageName() {
        return operatorName  + " online recharge";
    }
    
    public String getPageTitle() {
        return operatorName  + " online recharge";
    }
    
    public String getPageMetaDesc() {
        return "Recharge your " + this.operatorName +  " " + this.serviceName +  " online for all cities using Credit/Debit card & net banking. Fast, Secure and Hassle Free Recharge";
    }
    
    public String getPageMetaKeywords() {
        return "mobile, recharge";
    }
    
    public long getOperatorId(){
        return Long.parseLong(this.operatorId);
    }

    public String getDenominationType() {
        return denominationType;
    }

    public void setDenominationType(String denominationType) {
        this.denominationType = denominationType;
    }

    public String getCircleCode() {
        return circleCode;
    }

    public void setCircleCode(String circleCode) {
        this.circleCode = circleCode;
    }

    public List<RechargeDenomination> getRechargeDenominations() {
        return rechargeDenominations;
    }

    public void setRechargeDenominations(
            List<RechargeDenomination> rechargeDenominations) {
        this.rechargeDenominations = rechargeDenominations;
    }

    public void setOperatorId(String operatorId) {
        this.operatorId = operatorId;
    }

    public static void setErrorMsg(String errorMsg) {
        HomeController.errorMsg = errorMsg;
    }

    public static String getErrorMsg() {
        return errorMsg;
    }

    public static void setDthProvidersMap(Map<Long, String> dthProvidersMap) {
        HomeController.dthProvidersMap = dthProvidersMap;
    }

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

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