Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.serving.controllers;

import in.shop2020.datalogger.EventType;
import in.shop2020.model.v1.order.Order;
import in.shop2020.model.v1.order.TransactionServiceException;
import in.shop2020.model.v1.user.Cart;
import in.shop2020.model.v1.user.ShoppingCartException;
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.serving.utils.Utils;
import in.shop2020.thrift.clients.PaymentClient;
import in.shop2020.thrift.clients.TransactionClient;
import in.shop2020.thrift.clients.UserClient;
import in.shop2020.utils.DataLogger;

import java.util.Date;
import java.util.List;

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 PaySuccessController extends BaseController{
        private static final long serialVersionUID = 1L;

        private static Logger log = Logger.getLogger(Class.class);
        private FormattingUtils formattingUtils = new FormattingUtils();
    
        
        long merchantPaymentId;
        List<Order> orders = null;
        String message = null;
        
        public PaySuccessController(){
                super();
        }
        
        public String 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();
                        orders = transactionServiceClient.getClient().getOrdersForTransaction(txnId, userinfo.getUserId());
                        Cart cart = userServiceClient.getClient().getCart(userinfo.getCartId());
                        int totalItems = 0;
                        if(cart != null){
                                totalItems = cart.getLinesSize();
                        }
                        userinfo.setTotalItems(totalItems);
                        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());
                }
                        if(orders.get(0).isCod())
                            this.message = "Order placed successfully";
                        else
                            this.message = "Payment completed successfully.";      
                } 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 (ShoppingCartException e) {
                        log.error("Shopping cart 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 List<Order> getOrders(){
                return this.orders;
        }
        
        public String getMessage(){
                return this.message;
        }       
}