Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
410 rajveer 1
package in.shop2020.serving.controllers;
2
 
555 chandransh 3
import in.shop2020.model.v1.user.ShoppingCartException;
410 rajveer 4
import in.shop2020.serving.controllers.BaseController;
5
import in.shop2020.serving.pages.PageContentKeys;
6
import in.shop2020.serving.pages.PageEnum;
7
import in.shop2020.serving.pages.PageManager;
419 rajveer 8
import in.shop2020.serving.utils.Utils;
410 rajveer 9
import in.shop2020.thrift.clients.UserContextServiceClient;
10
 
11
import java.util.*;
12
 
13
import org.apache.juli.logging.Log;
14
import org.apache.juli.logging.LogFactory;
15
import org.apache.struts2.convention.annotation.Result;
16
import org.apache.struts2.convention.annotation.Results;
17
import org.apache.struts2.interceptor.ParameterAware;
18
import org.apache.struts2.rest.DefaultHttpHeaders;
19
import org.apache.struts2.rest.HttpHeaders;
20
import org.apache.thrift.TException;
21
 
507 rajveer 22
public class CartController extends BaseController implements ParameterAware{
410 rajveer 23
 
24
	private static final long serialVersionUID = 1L;
507 rajveer 25
	private static Log log = LogFactory.getLog(CartController.class);
26
	Map<String, String[]> reqparams = null;
410 rajveer 27
 
28
	private Map<String,String> htmlSnippets;
507 rajveer 29
	private PageManager pageManager = null;
410 rajveer 30
 
31
	public CartController(){
507 rajveer 32
		super();
33
		pageManager = PageManager.getPageManager();	
34
	}
35
 
36
	 // GET /cart
37
	 public HttpHeaders index() {
555 chandransh 38
    	long userId = userinfo.getUserId();
507 rajveer 39
		Map<PageContentKeys, String> params = new HashMap<PageContentKeys, String>();
410 rajveer 40
 
507 rajveer 41
		params.put(PageContentKeys.CUSTOMER_ID, userId+"");
555 chandransh 42
		params.put(PageContentKeys.IS_LOGGED_IN, userinfo.isLoggedIn()+"");
507 rajveer 43
		params.put(PageContentKeys.CART_ID, userinfo.getCartId()+"");
44
 
45
		params.put(PageContentKeys.ITEM_COUNT, userinfo.getTotalItems()+"");
517 rajveer 46
		params.put(PageContentKeys.USER_NAME, userinfo.getNameOfUser());
507 rajveer 47
		htmlSnippets = PageManager.getPageManager().getPageContents(PageEnum.SHOPPING_CART_PAGE, params);
48
 
49
    	return new DefaultHttpHeaders("index").disableCaching();
50
	 }
51
 
52
		// POST /entity
53
		public String create() {
54
	    	log.info("CartController.create");
55
 
56
	    	printParams();
57
 
555 chandransh 58
	    	long userId = userinfo.getUserId();
59
	    	boolean isSessionId = !userinfo.isLoggedIn();
507 rajveer 60
 
61
	    	log.info("item id is " + this.reqparams.get("productid"));
62
 
63
	    	String itemIds = "1000008_1000005"; 
64
	    	if(this.reqparams.get("productid") != null){
65
	    		itemIds = this.reqparams.get("productid")[0];
66
	    	}
555 chandransh 67
 
507 rajveer 68
			long cartId = 0;
69
 
70
			StringTokenizer tokenizer = new StringTokenizer(itemIds,"_");
71
			while(tokenizer.hasMoreTokens()){
72
				long itemId = Long.parseLong(tokenizer.nextToken());
536 rajveer 73
 
74
				try {
555 chandransh 75
					UserContextServiceClient userServiceClient = new UserContextServiceClient();
76
					in.shop2020.model.v1.user.UserContextService.Client userClient = userServiceClient.getClient();
77
					cartId = userClient.createCart(userId);
78
					userClient.addItemToCart(cartId, itemId, 1);
536 rajveer 79
 
80
				} catch (ShoppingCartException e) {
81
					e.printStackTrace();
82
				} catch (TException e) {
83
					e.printStackTrace();
84
				} catch (Exception e) {
85
					e.printStackTrace();
86
				}
87
 
507 rajveer 88
			}
89
 
90
	    	//long cartId = Utils.addItemToCart(Long.parseLong(itemId), userId, isSessionId);
91
 
92
	    	userinfo.setCartId(cartId);
93
	    	userinfo.setTotalItems(Utils.getNumberOfItemsInCart(cartId) );
94
 
95
	    	this.session.setAttribute("userinfo", userinfo);
96
 
97
			return "success";
98
	    }
99
 
100
 
101
		// DELETE /entity
102
		public String destroy() {
103
	    	log.info("CartController.destroy");
104
	    	printParams();
105
	    	log.info("item id is " + this.request.getParameter("productid"));
106
			String itemIdString = this.request.getParameter("productid");
107
			long itemId = Long.parseLong(itemIdString);
517 rajveer 108
			if(userinfo.getCartId() == -1){
109
				log.info("Cart does not exist. Nothing to delete.");
110
			}else{
111
				if(Utils.deleteItemFromCart(userinfo.getCartId(), itemId, userinfo.getUserId(), userinfo.isSessionId())){
112
					userinfo.setTotalItems(userinfo.getTotalItems() - 1 );
555 chandransh 113
				// FIXME: Remove the next line of code. We should not be
114
				// required to set the user info again and again if we update the
115
				// same referenced object.
116
					//setUserSessionInfo();
517 rajveer 117
					return "delsuccess";	
118
				}
507 rajveer 119
			}
120
			return "delfailure";
121
		}
122
 
123
 
124
		// DELETE /entity
125
		public String update() {
126
	    	log.info("CartController.update");
127
	    	printParams();
128
	    	log.info("item id is " + this.request.getParameter("productid"));
129
	    	log.info("item id is " + this.request.getParameter("quantity"));
130
			String itemIdString = this.request.getParameter("productid");
131
			String quantityString = this.request.getParameter("quantity");
132
			long itemId = Long.parseLong(itemIdString);
133
			long quantity = Long.parseLong(quantityString);
517 rajveer 134
			if(quantity <= 0){
135
				log.info("Not valid item quantity. Unable to change item quantity.");
136
			}else{
137
				if(Utils.updateItemQuantityInCart(userinfo.getCartId(), itemId, quantity)){
138
					return "delsuccess";	
139
				}
507 rajveer 140
			}
141
			return "delfailure";
142
		}
143
 
144
 
145
    public void printParams(){
146
    	for(String param : reqparams.keySet()) {
147
    		log.info("param name is " + param);
148
    		log.info("param first is " + reqparams.get(param)[0]);
149
    	}
150
    	log.info(this.reqparams);
151
    }
152
 
153
	@Override
154
	public void setParameters(Map<String, String[]> reqmap) {
155
		log.info("setParameters:" + reqmap);
156
 
157
		this.reqparams = reqmap;
410 rajveer 158
	}
507 rajveer 159
 
160
    public String getHeaderSnippet(){
161
		return htmlSnippets.get("HEADER");
162
	}
410 rajveer 163
 
507 rajveer 164
	public String getMainMenuSnippet(){
165
		return htmlSnippets.get("MAIN_MENU");
166
	}
410 rajveer 167
 
507 rajveer 168
	public String getSearchBarSnippet(){
169
		return htmlSnippets.get("SEARCH_BAR");
170
	}
171
 
172
 
173
	public String getCustomerServiceSnippet(){
174
		return htmlSnippets.get("CUSTOMER_SERVICE");
175
	}
176
 
177
	public String getCartHeaderSnippet(){
178
		return htmlSnippets.get("CART_HEADER");
179
	}
180
 
181
	public String getCartDetailsSnippet(){
182
		return htmlSnippets.get("CART_DETAILS");
183
	}
184
 
185
	public String getMyResearchSnippet(){
186
		return htmlSnippets.get("MY_RESEARCH");
187
	}
188
 
189
	public String getFooterSnippet(){
190
		return htmlSnippets.get("FOOTER");
191
	}
192
 
193
	public String getJsFileSnippet(){
194
		return htmlSnippets.get("JS_FILES");
195
	}
196
 
197
	public String getCssFileSnippet(){
198
		return htmlSnippets.get("CSS_FILES");
199
	}
200
 
201
	public long getNumberOfItems(){
202
		return userinfo.getTotalItems();
203
	}
204
}
205
/*
419 rajveer 206
	 // GET /cart
507 rajveer 207
	 public HttpHeaders index() {
208
    	 changed on 18 august
410 rajveer 209
    	Cookie loginCookie = new Cookie("userId", "Rajveer");
210
    	Map cookiesMap = new HashMap();
211
    	cookiesMap.put("USER_ID", loginCookie);
212
    	setCookiesMap(cookiesMap);
213
 
214
    	log.info( "Cookies map is " + this.getCookiesMap());
215
    	log.info("CartController.index");
216
 
217
		Map<PageContentKeys, String> params = new HashMap<PageContentKeys, String>();
218
 
416 rajveer 219
    	long userId = 0;
220
    	boolean isSessionId = true;
419 rajveer 221
    	//if(this.session.getAttribute("loggedin")!=null){
222
	    	if(this.session.getAttribute("loggedin").toString().equals("true")){
223
	    		userId = Long.parseLong(this.session.getAttribute("userid").toString());
224
	    		isSessionId = false;
225
	    	}else{
226
	    		userId = Long.parseLong(this.session.getAttribute("userid").toString());
227
	    		isSessionId = true;
228
	    	}
229
//    	}else{
230
//    		System.out.println("No User is logged in. Redirect to login page.");
231
//    		return new DefaultHttpHeaders("fatal");
232
//
233
//    	}
234
 
235
 
236
 
237
		params.put(PageContentKeys.CUSTOMER_ID, userId+"");
238
		params.put(PageContentKeys.IS_SESSION_ID, isSessionId+"");
239
 
507 rajveer 240
 
419 rajveer 241
    	long userId = 0;
242
    	boolean isSessionId = true;
243
		Map<PageContentKeys, String> params = new HashMap<PageContentKeys, String>();
416 rajveer 244
 
419 rajveer 245
		if(userinfo.isLoggedIn()){
246
			userId = userinfo.getUserId();
247
			isSessionId = false;
248
		}
249
		else{
250
			userId = userinfo.getSessionId();
251
			isSessionId = true;
252
		}
253
 
416 rajveer 254
		params.put(PageContentKeys.CUSTOMER_ID, userId+"");
255
		params.put(PageContentKeys.IS_SESSION_ID, isSessionId+"");
256
 
410 rajveer 257
		htmlSnippets = PageManager.getPageManager().getPageContents(PageEnum.SHOPPING_CART_PAGE, params);
258
 
259
 
260
 
261
    	return new DefaultHttpHeaders("index").disableCaching();
262
    }
507 rajveer 263
*/    
410 rajveer 264
    // POST /entity
507 rajveer 265
    /*
410 rajveer 266
    public String create() {
507 rajveer 267
 
410 rajveer 268
    	log.info("CartController.create");
269
    	printParams();
270
    	if(getCookiesMap() != null){
271
    		Cookie loginCookie = (Cookie)getCookiesMap().get("USER_ID");
272
    		log.info("login cookie name is " + loginCookie.getName() );
273
    		log.info("login cookie value is " + loginCookie.getValue());
274
    	}
275
    	log.info("item id is " + this.reqparams.get("item_id"));
276
    	itemId = this.reqparams.get("item_id")[0];
277
 
278
    	addItemToCart(itemId);
416 rajveer 279
    	long userId = 0;
280
    	boolean isSessionId = true;
281
    	if(this.session.getAttribute("loggedin").toString().equals("true")){
282
    		userId = Long.parseLong(this.session.getAttribute("userid").toString());
283
    		isSessionId = false;
284
    	}else{
285
    		userId = Long.parseLong(this.session.getAttribute("userid").toString());
286
    		isSessionId = true;
287
    	}
288
    	addItemToCart(Long.parseLong(itemId), userId, isSessionId);
410 rajveer 289
    	// Add data to the cart
507 rajveer 290
 
419 rajveer 291
    	long userId = 0;
292
    	boolean isSessionId = true;
410 rajveer 293
 
449 rajveer 294
    	log.info("item id is " + this.reqparams.get("productid"));
419 rajveer 295
 
449 rajveer 296
    	String itemIds = "1000008_1000005"; 
297
    	if(this.reqparams.get("productid") != null){
298
    		itemIds = this.reqparams.get("productid")[0];
299
    	}
300
 
301
 
302
//    	log.info("list of item ids is " + this.request.getParameter("productid"));
303
//		String itemIds = this.request.getParameter("productid");
304
 
419 rajveer 305
		if(userinfo.isLoggedIn()){
306
			userId = userinfo.getUserId();
307
			isSessionId = false;
308
		}
309
		else{
310
			userId = userinfo.getSessionId();
311
			isSessionId = true;
312
		}
449 rajveer 313
		long cartId = 0;
314
 
315
		StringTokenizer tokenizer = new StringTokenizer(itemIds,"_");
316
		int numberOfItems = tokenizer.countTokens();
317
		while(tokenizer.hasMoreTokens()){
318
			long itemId = Long.parseLong(tokenizer.nextToken());
319
			cartId = Utils.addItemToCart(itemId, userId, isSessionId);
320
		}
321
 
322
    	//long cartId = Utils.addItemToCart(Long.parseLong(itemId), userId, isSessionId);
419 rajveer 323
 
324
    	userinfo.setCartId(cartId);
449 rajveer 325
    	userinfo.setTotalItems(Utils.getNumberOfItemsInCart(cartId) );
419 rajveer 326
 
327
    	this.session.setAttribute("userinfo", userinfo);
328
 
410 rajveer 329
		return "success";
330
    }
331
 
507 rajveer 332
 
410 rajveer 333
    public void printParams(){
334
    	for(String param : reqparams.keySet()) {
335
    		log.info("param name is " + param);
336
    		log.info("param first is " + reqparams.get(param)[0]);
337
    	}
338
    	log.info(this.reqparams);
339
    }
340
 
341
    private boolean addItemToCart(String itemId){
342
    	log.info("Session Id is "  + request.getSession().getId());
343
    	log.info("Item Id is "  + itemId);
344
    	return true;
345
    }
346
 
347
 
416 rajveer 348
	private	void addItemToCart(long catalogItemId, long userId, boolean isSessionId){
410 rajveer 349
		UserContextServiceClient userContextServiceClient = null;
350
		in.shop2020.model.v1.user.UserContextService.Client userClient = null;
351
 
352
		ShoppingCartClient shoppingCartClient = null;
353
		in.shop2020.model.v1.shoppingcart.ShoppingCartService.Client cartClient = null;
354
		long cartId = -1;
355
 
356
		try {
357
			userContextServiceClient = new UserContextServiceClient();
358
			userClient = userContextServiceClient.getClient();
359
 
360
			shoppingCartClient = new ShoppingCartClient();
361
			cartClient = shoppingCartClient.getClient();
416 rajveer 362
 
363
			cartId = cartClient.createCart(userId, isSessionId);
410 rajveer 364
			cartClient.addItemToCart(cartId, catalogItemId, 1);
419 rajveer 365
 
366
			int NumberOfLines = cartClient.getShadowCart(cartId).getLinesSize();
367
			this.session.setAttribute("totalitems", NumberOfLines+"");
368
 
369
 
410 rajveer 370
		} catch (ShoppingCartException e) {
371
			e.printStackTrace();
372
		} catch (TException e) {
373
			e.printStackTrace();
374
		} catch (Exception e) {
375
			e.printStackTrace();
376
		}
377
 
378
		//if user is logged in create  new cart
379
		//if( userClient.getState(userId, false).isIsLoggedIn()){
380
	}
381
 
458 rajveer 382
	public long getNumberOfItems(){
449 rajveer 383
		return userinfo.getTotalItems();
384
	}
385
 
410 rajveer 386
	public String getShoppingCartSnippets()
387
	{
388
		return htmlSnippets.get("SHOPPING_CART");
389
	}
390
 
391
	@Override
392
	public void setParameters(Map<String, String[]> reqmap) {
393
		log.info("setParameters:" + reqmap);
394
 
395
		this.reqparams = reqmap;
396
	}
507 rajveer 397
	*/
416 rajveer 398
//	
399
//	@Override
400
//	public void setServletRequest(HttpServletRequest request) {
401
//		this.request = request;
402
//	}
403
//    
507 rajveer 404