Subversion Repositories SmartDukaan

Rev

Rev 6056 | Go to most recent revision | 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.TransactionServiceException;
import in.shop2020.model.v1.user.Affiliate;
import in.shop2020.model.v1.user.TrackLogType;
import in.shop2020.model.v1.user.UserAffiliateException;
import in.shop2020.payments.PaymentException;
import in.shop2020.serving.interceptors.TrackingInterceptor;
import in.shop2020.serving.utils.FormattingUtils;
import in.shop2020.thrift.clients.PaymentClient;
import in.shop2020.thrift.clients.TransactionClient;
import in.shop2020.thrift.clients.UserClient;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.thrift.TException;

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

public class RechargeResultController extends BaseController {
    private static final long serialVersionUID = 1L;

    private static final String SHOOGLOO_AFF_NAME = "shoogloo";

    private static Logger log = Logger.getLogger(Class.class);
    private FormattingUtils formattingUtils = new FormattingUtils();

    private boolean isShooglooAff  = false;

    long merchantPaymentId;
    RechargeOrder rechargeOrder = null;
    String message = null;

    public RechargeResultController(){
        super();
    }

    public String index() {
        long i = 2;
        if (i == 2) {
            return "index";
        }
        PaymentClient paymentServiceClient = null;
        TransactionClient transactionServiceClient = null;
        UserClient userServiceClient = null;

        try {
            paymentServiceClient = new PaymentClient();
            transactionServiceClient = new TransactionClient();
            userServiceClient = new UserClient();
        } catch (Exception e1) {
            // TODO Nothing to worry
            log.error("Unable to initialize the client for either payment or transaction or user service", e1);
        }


        merchantPaymentId = Long.parseLong(this.request.getParameter("paymentId"));

        long txnId;
        try {
            txnId = paymentServiceClient.getClient().getPayment(merchantPaymentId).getMerchantTxnId();
            rechargeOrder = transactionServiceClient.getClient().getRechargeOrdersForTransaction(txnId);

            this.message = "You have successfully recharged your mobile.";

            if (cookiesMap.containsKey(TrackingInterceptor.AFF_COOKIE)) {
                long affId = Long.parseLong(cookiesMap.get(TrackingInterceptor.AFF_COOKIE).getValue());
                userServiceClient.getClient().addTrackLog(affId, userinfo.getUserId(), TrackLogType.PAYMENT_SUCCESS, "",
                        Long.toString(merchantPaymentId), (new Date()).getTime());
                Affiliate aff = userServiceClient.getClient().getAffiliateById(affId);
                if (aff.getName().equals(SHOOGLOO_AFF_NAME)) {
                    isShooglooAff = true;
                }
            }

        } catch (PaymentException e) {
            log.error("Payment service not responding. Payment id is" + merchantPaymentId, e);
        } catch (TException e) {
            log.error("Thrift service exception. Payment id is" + merchantPaymentId, e);
        } catch (TransactionServiceException e) {
            log.error("Transaction service exception. Payment id is" + merchantPaymentId, e);
        } catch (UserAffiliateException e) {
            log.error("Affiliate service exception. Payment id is" + merchantPaymentId, e);
        }

//        DataLogger.logData(EventType.PAYMENT_SUCCESS, getSessionId(), userinfo.getUserId(), 
//                userinfo.getEmail(), Long.toString(merchantPaymentId), Utils.getItemIdStringFromOrders(orders));

        return "index";
    }

    public String formatPrice(double price)    {
        return formattingUtils.formatPrice(price);
    }

    public String getMessage(){
        return this.message;
    }

    public boolean getIsShooglooAff() {
        return this.isShooglooAff;
    }

    public long getMerchantPaymentId() {
        return merchantPaymentId;
    }

    public static String formatDate(long timestamp){
        SimpleDateFormat dateformat = new SimpleDateFormat("dd MMMM yyyy");
        return dateformat.format(new Date(timestamp));  
    }


    @Override
    public String getHeaderSnippet() {
        String url = request.getQueryString();
        if (url == null) {
            url = "";
        } else {
            url = "?" + url;
        }
        url = request.getRequestURI() + url;
        return pageLoader.getHeaderHtml(userinfo.isLoggedIn(), userinfo.getEmail(), url , 0, false);
    }

    public RechargeOrder getRechargeOrder() {
        return rechargeOrder;
    }

    public void setRechargeOrder(RechargeOrder rechargeOrder) {
        this.rechargeOrder = rechargeOrder;
    }
}