Subversion Repositories SmartDukaan

Rev

Rev 2159 | Rev 2199 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
419 rajveer 1
package in.shop2020.serving.controllers;
2
 
2183 vikas 3
import java.util.List;
4
 
5
import in.shop2020.model.v1.order.Order;
894 rajveer 6
import in.shop2020.model.v1.user.ShoppingCartException;
419 rajveer 7
import in.shop2020.serving.controllers.BaseController;
1905 chandransh 8
import in.shop2020.serving.services.EbsPaymentService;
1318 rajveer 9
import in.shop2020.serving.services.HdfcPaymentService;
1905 chandransh 10
import in.shop2020.serving.services.IPaymentService;
2183 vikas 11
import in.shop2020.serving.utils.DataLogger;
12
import in.shop2020.serving.utils.DataLogger.Event;
13
import in.shop2020.thrift.clients.TransactionServiceClient;
517 rajveer 14
import in.shop2020.thrift.clients.UserContextServiceClient;
15
 
832 rajveer 16
import org.apache.log4j.Logger;
822 vikas 17
import org.apache.struts2.convention.annotation.InterceptorRef;
18
import org.apache.struts2.convention.annotation.InterceptorRefs;
419 rajveer 19
import org.apache.struts2.convention.annotation.Result;
20
import org.apache.struts2.convention.annotation.Results;
517 rajveer 21
import org.apache.thrift.TException;
419 rajveer 22
 
2159 chandransh 23
@SuppressWarnings("serial")
822 vikas 24
@InterceptorRefs({
25
    @InterceptorRef("myDefault"),
26
    @InterceptorRef("login")
27
})
28
 
419 rajveer 29
@Results({
693 rajveer 30
    @Result(name="shipping-redirect", type="redirectAction", 
1905 chandransh 31
    		params = {"actionName" , "shipping"}),
32
	@Result(name="ebs-pay-redirect", type="redirect", location="/ebs-pay/${paymentId}")
419 rajveer 33
})
650 rajveer 34
public class OrderController extends BaseController {
419 rajveer 35
 
1905 chandransh 36
	public long getPaymentId() {
37
		return paymentId;
38
	}
419 rajveer 39
 
832 rajveer 40
	private static Logger log = Logger.getLogger(Class.class);
507 rajveer 41
	private String id;
712 rajveer 42
	private long txnId = 0;
650 rajveer 43
 
1905 chandransh 44
	private long paymentId;
45
 
1318 rajveer 46
	private String redirectURL;
681 rajveer 47
 
419 rajveer 48
	public OrderController(){
507 rajveer 49
		super();
419 rajveer 50
	}
51
 
507 rajveer 52
    // GET /order/ orderid
53
    public String show() {
54
    	log.info("id=" + id);
822 vikas 55
    	htmlSnippets.put("MYACCOUNT_HEADER", pageLoader.getMyaccountHeaderHtml());
1527 ankur.sing 56
    	htmlSnippets.put("ORDER_DETAILS", pageLoader.getOrderDetailsHtml(Long.parseLong(id), userinfo.getUserId()));
507 rajveer 57
    	return "show";
419 rajveer 58
    }
517 rajveer 59
 
572 chandransh 60
    // POST /order/
61
    public String create(){
786 rajveer 62
    	String addressIdString = this.request.getParameter("addressid");
63
    	if(addressIdString == null){
894 rajveer 64
    		addActionError("Please specify shipping address to continue.");
786 rajveer 65
    		return "shipping-redirect";
66
    	}
2159 chandransh 67
 
68
    	String paymentOption = request.getParameter("payment_option");
69
    	log.info("Payment Option Selected: " + paymentOption);
70
    	if(paymentOption == null || paymentOption.equals("")){
71
    		addActionError("Please select a payment method to continue.");
72
    		return "shipping-redirect";
73
    	}
74
 
75
 
786 rajveer 76
    	long addressId = Long.parseLong(addressIdString);
572 chandransh 77
    	long currentCartId = userinfo.getCartId();
894 rajveer 78
    	try{
1318 rajveer 79
    		if(!createOrders(addressId, currentCartId)){
1128 rajveer 80
    			addActionError("We are experiencing some problems. Please try later.");
894 rajveer 81
    			return "shipping-redirect";
82
    		}
83
    	}catch (Exception e) {
1128 rajveer 84
    		addActionError("We are experiencing some problems. Please try later.");
894 rajveer 85
    		log.error("Exception in createOrders function. Something want wrong.");
86
    		e.printStackTrace();
87
    		return "shipping-redirect";
693 rajveer 88
		}
2159 chandransh 89
 
90
		if (paymentOption.equals(IPaymentService.EBS_MASTERCARD) || paymentOption.equals(IPaymentService.EBS_VISA)) {
91
			// User has selected Visa or MasterCard CC
92
			IPaymentService hdfcPaymentService = new HdfcPaymentService();
93
			paymentId = hdfcPaymentService.createPayment(userinfo.getCartId(), userinfo.getUserId(), txnId, paymentOption);
1905 chandransh 94
			if (paymentId == IPaymentService.PAYMENT_NOT_CREATED) {
95
				addActionError("We are experiencing some problems. Please try later.");
96
				return "shipping-redirect";
97
			} else {
2159 chandransh 98
				this.redirectURL = ((HdfcPaymentService)hdfcPaymentService).getRedirectUrl();
1905 chandransh 99
				log.info(this.redirectURL);
100
				return "success";
101
			}
102
		} else {
2159 chandransh 103
			IPaymentService ebsPaymentService = new EbsPaymentService();
104
			paymentId = ebsPaymentService.createPayment(userinfo.getCartId(), userinfo.getUserId(), txnId, paymentOption);
1905 chandransh 105
			if(paymentId == IPaymentService.PAYMENT_NOT_CREATED){
106
				addActionError("We are experiencing some problems. Please try later.");
107
				return "shipping-redirect";
108
			}else{
2159 chandransh 109
				log.info("Successfully created payment for EBS to process. Redirecting to /ebs-pay/" + paymentId);
1905 chandransh 110
				return "ebs-pay-redirect";
111
			}
112
		}
572 chandransh 113
    }
114
 
507 rajveer 115
	public String getId(){
116
		return id;
117
	}
419 rajveer 118
 
507 rajveer 119
	public void setId(String id){
120
		this.id = id;
121
	}
419 rajveer 122
 
507 rajveer 123
	public String getMyaccountHeaderSnippet(){
124
		return htmlSnippets.get("MYACCOUNT_HEADER");
125
	}
126
 
127
	public String getOrderDetailsSnippet(){
128
		return htmlSnippets.get("ORDER_DETAILS");
129
	}
130
 
712 rajveer 131
	public long getTxn(){
132
		return this.txnId;
517 rajveer 133
	}
894 rajveer 134
 
135
	/**
136
	 * 
137
	 * @param addressId
138
	 * @param currentCartId
139
	 * @return
140
	 */
1318 rajveer 141
	private boolean createOrders(long addressId, long currentCartId){
894 rajveer 142
		UserContextServiceClient userServiceClient = null;
143
		try {
144
			userServiceClient = new UserContextServiceClient();
145
		} catch (Exception e) {
146
			e.printStackTrace();
147
			return false;
148
		}
149
 
150
		in.shop2020.model.v1.user.UserContextService.Client userClient = userServiceClient.getClient();
151
		try {
152
			userClient.addAddressToCart(currentCartId, addressId);
153
		} catch (ShoppingCartException e1) {
154
			log.error("Not able to set address in the cart." + e1.getId() + e1.getMessage());
155
			e1.printStackTrace();
156
			return false;
157
		} catch (TException e1) {
158
			log.error("Thrift exception while setting address in cart." + e1.getMessage());
159
			e1.printStackTrace();
160
			return false;
161
		}
162
 
163
 
164
		try {
1466 ankur.sing 165
			String errorMsg = userClient.validateCart(currentCartId); 
166
			if(!errorMsg.isEmpty()){
167
				addActionError(errorMsg);
894 rajveer 168
				return false;
169
			}
170
		} catch (ShoppingCartException e1) {
171
			log.error("Error while validating shopping cart." + e1.getId() + e1.getMessage());
172
			e1.printStackTrace();
173
			return false;
174
		} catch (TException e) {
175
			log.error("Thrift exception while validating cart." + e.getMessage());
176
			e.printStackTrace();
177
			return false;
178
		}
179
 
180
 
181
		try {
182
			txnId = userClient.createOrders(currentCartId);
183
		} catch (ShoppingCartException e1) {
184
			log.error("Error while creating orders from cart." + e1.getId() + e1.getMessage());
185
			e1.printStackTrace();
186
			return false;
187
		} catch (TException e) {
188
			log.error("Thrift exception while creating orders from cart." + e.getMessage());
189
			e.printStackTrace();
190
			return false;
191
		}
192
 
2183 vikas 193
		TransactionServiceClient transactionServiceClient = null;
194
        try {
195
            transactionServiceClient = new TransactionServiceClient();
196
            List<Order> orders = transactionServiceClient.getClient().getOrdersForTransaction(txnId, userinfo.getUserId());
197
            for (Order order : orders) {
198
                DataLogger.logData(Event.ORDER_CREATION.name(), session.getId(),
199
                        Long.toString(userinfo.getUserId()),
200
                        userinfo.getEmail(), Long.toString(order.getId()));
201
            }
202
        } catch (Exception e1) {
203
            e1.printStackTrace();
204
        }
894 rajveer 205
 
206
		return true;
207
	}
1318 rajveer 208
 
209
	public String getRedirectURL(){
210
		return this.redirectURL;
211
	}
419 rajveer 212
}