Rev 6146 | Rev 6215 | 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.RechargeOrder;import in.shop2020.model.v1.order.RechargeOrderStatus;import in.shop2020.model.v1.order.RechargeType;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 in.shop2020.utils.DataLogger;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import org.apache.log4j.Logger;import org.apache.thrift.TException;import org.apache.thrift.transport.TTransportException;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;private static Map<Long,String> allProviders;static {try {allProviders = new TransactionClient().getClient().getServiceProviders(RechargeType.DTH);allProviders.putAll(new TransactionClient().getClient().getServiceProviders(RechargeType.MOBILE));} catch (TTransportException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (TException e) {// TODO Auto-generated catch blocke.printStackTrace();}}long merchantPaymentId;RechargeOrder rechargeOrder = null;String message = null;public RechargeResultController(){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 worrylog.error("Unable to initialize the client for either payment or transaction or user service", e1);}String returningPayIdString = this.request.getParameter("paymentId");if (returningPayIdString == null || returningPayIdString.isEmpty()) {this.message = "Payment Failed at payment gateway. Please try again.";return "index";}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);}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));}@Overridepublic String getHeaderSnippet() {String url = request.getQueryString();if (url == null) {url = "";} else {url = "?" + url;}url = request.getRequestURI() + url;return pageLoader.getHeaderHtml(userinfo.isLoggedIn(), userinfo.getEmail(), userinfo.getTotalItems(), url , 0, false);}public RechargeOrder getRechargeOrder() {return rechargeOrder;}public void setRechargeOrder(RechargeOrder rechargeOrder) {this.rechargeOrder = rechargeOrder;}public boolean isDTH() {return rechargeOrder.getRechargeType().equals(RechargeType.DTH);}public String getProvider() {return allProviders.get(rechargeOrder.getOperatorId());}public String[] getOrderStatus(){RechargeOrderStatus status = rechargeOrder.getStatus();if(status.equals(RechargeOrderStatus.PAYMENT_FAILED)||status.equals(RechargeOrderStatus.PAYMENT_PENDING)){DataLogger.logData(EventType.RECHARGE_PAYMENT_FAILED, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),rechargeOrder.getRechargeType().toString());return new String[]{"red", "PAYMENT FAILED", "Payment failed at the payment gateway. Try to <a href='/recharge'>recharge again</a>"};}else if(status.equals(RechargeOrderStatus.PAYMENT_SUCCESSFUL)||status.equals(RechargeOrderStatus.RECHARGE_FAILED)){DataLogger.logData(EventType.RECHARGE_PAYMENT_SUCCESSFUL, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),rechargeOrder.getRechargeType().toString());return new String[]{"red", "RECHARGE FAILED", "Your Payment was successful but unfortunately the recharge failed.<br>" +"Don't worry your payment is safe with us. The entire Amount has been refunded to your " +"<a href='/my-wallet'>recharge wallet</a>.<br><br> You " +"will need to <a href='/login?redirectUrl=/recharge'>login</a> to use your Wallet.<br> If you are registered on" +" Saholic.com please use your username and password to Login.<br> In case you are " +"a first time user, we have sent your login details on the emailId you gave us. " +"<br>For more information <a href='/static/recharge-faq'>click here</a>"};} else {DataLogger.logData(EventType.RECHARGE_SUCCESSFUL, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),rechargeOrder.getRechargeType().toString());return new String[] {"", "SUCCESS", "Congratulations your device is successfully recharged."};}}}