Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.serving.controllers;

import in.shop2020.model.v1.order.RechargeOrder;
import in.shop2020.model.v1.order.RechargeOrderStatus;
import in.shop2020.model.v1.order.RechargeType;
import in.shop2020.model.v1.order.UserWallet;
import in.shop2020.serving.utils.FormattingUtils;
import in.shop2020.serving.utils.Utils;
import in.shop2020.thrift.clients.TransactionClient;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

/**
 * @author rajveer
 *
 */

@SuppressWarnings("serial")
@InterceptorRefs({
    @InterceptorRef("myDefault"),
    @InterceptorRef("login")
})

@Results({
    @Result(name="redirect", type="redirectAction", 
                params = {"actionName" , "login"})
})
public class MyRechargesController extends BaseController {

        private static Logger logger = Logger.getLogger(Class.class);
        
    private FormattingUtils formattingUtils = new FormattingUtils();
    
    Map<Long, String> providerNames = new HashMap<Long, String>();
    List<RechargeOrder> rechargeOrders = null;
    List<String> orderDate = new ArrayList<String>();
    private long orderId = 0;

    private Map<Long, String> rechargeProviderMap = new HashMap<Long, String>() ;
    private UserWallet wallet = null;

    private String errorMessage = "";
        
        public MyRechargesController() {
                super();
        }
    
        public String index(){
        logger.info("this.request=" + this.request);
        
        try {
            TransactionClient transactionServiceClient = new TransactionClient();
            in.shop2020.model.v1.order.TransactionService.Client orderClient = transactionServiceClient.getClient();
            rechargeOrders = orderClient.getRechargeOrders(userinfo.getUserId());
            //Reverse the list of order. Last come first displayed 
            Collections.reverse(rechargeOrders);
            //LogisticsClient logisticsServiceClient = new LogisticsClient();
            //in.shop2020.logistics.LogisticsService.Client logisticsClient = logisticsServiceClient.getClient();
            //List<Provider> providers = logisticsClient.getAllProviders();
            
            //for(Provider provider: providers)
              //  providerNames.put(provider.getId(), provider.getName());
            
        } catch (Exception e)   {
            logger.error("Error while getting the recharge orders for the user", e);
        }
        if(rechargeOrders != null && !rechargeOrders.isEmpty()){
            for(RechargeOrder rechargeOrder: rechargeOrders) {
                if(rechargeOrder.getRechargeType() == RechargeType.MOBILE){
                        rechargeProviderMap.put(rechargeOrder.getId(), Utils.getMobileProvidersMap().get(rechargeOrder.getOperatorId()));
                }
                if(rechargeOrder.getRechargeType() == RechargeType.DTH){
                        rechargeProviderMap.put(rechargeOrder.getId(), Utils.getDthProvidersMap().get(rechargeOrder.getOperatorId()));
                }
            }
        }
                return "index";
    }
    
        public String formatDate(long timestamp){
        Date date = new Date(timestamp);
        SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");
        return dateformat.format(date);
    }
        
        public boolean shouldShowExtraColumn() {
            try {
            TransactionClient transactionServiceClient = new TransactionClient();
            in.shop2020.model.v1.order.TransactionService.Client orderClient = transactionServiceClient.getClient();
            wallet = orderClient.getUserWallet(userinfo.getUserId());
            if (wallet.getAmount() > 0) {
                for(RechargeOrder rechargeOrder : rechargeOrders) {
                    if (Utils.refundableRechargeStatusList.contains(rechargeOrder.getStatus()) && 
                            (rechargeOrder.getWalletAmount() != (rechargeOrder.getTotalAmount() - rechargeOrder.getCouponAmount()))) {
                        return true;
                    }
                }
            } else {
                for(RechargeOrder rechargeOrder : rechargeOrders) {
                    if (rechargeOrder.getStatus() == RechargeOrderStatus.RECHARGE_SUCCESSFUL) {
                        return true;
                    }    
                }
            }
        } catch (Exception e) {
            logger.error("Unable to get Wallet", e);
        }
        return false;
        }
        
        public boolean isRefundPossible(RechargeOrder rechargeOrder) {
            if (wallet.getAmount() > 0 && Utils.refundableRechargeStatusList.contains(rechargeOrder.getStatus()) && 
                (rechargeOrder.getWalletAmount() != (rechargeOrder.getTotalAmount() - rechargeOrder.getCouponAmount()))) {
            return true;
        }
            return false;
        }
        
        public String create() {
            try {
            TransactionClient transactionServiceClient = new TransactionClient();
            if(!transactionServiceClient.getClient().refundRechargeOrder(orderId)) {
                errorMessage = "Refund failed";
            }
        } catch (Exception e) {
            logger.error("Unable to refund rechargeOrder : " + orderId, e);
            errorMessage = "Refund failed";
        }
        return index();
        }
        
        public String getDisplayStatus(RechargeOrderStatus status) {
            return Utils.statusMap.get(status);
        }
        
    public List<RechargeOrder> getRechargeOrders()  {
        return rechargeOrders;
    }
    
    public List<String> getOrderDate()  {
        return orderDate;
    }
    
    public String getProviderName(Long rechargeOrderId) {
        return rechargeProviderMap.get(rechargeOrderId);
    }

    public long getOrderId() {
        return orderId;
    }

    public void setOrderId(long orderId) {
        this.orderId = orderId;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }
}