Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
1961 ankur.sing 1
package in.shop2020.catalog.dashboard.server;
2
 
3
import in.shop2020.catalog.dashboard.client.CatalogService;
6530 vikram.rag 4
 
7190 amar.kumar 5
import in.shop2020.catalog.dashboard.shared.FreebieItem;
1961 ankur.sing 6
import in.shop2020.catalog.dashboard.shared.Item;
4431 phani.kuma 7
import in.shop2020.catalog.dashboard.shared.ItemInventory;
3850 chandransh 8
import in.shop2020.catalog.dashboard.shared.ItemStatus;
2068 ankur.sing 9
import in.shop2020.catalog.dashboard.shared.ItemsComparator;
3558 rajveer 10
import in.shop2020.catalog.dashboard.shared.SourcePricings;
2119 ankur.sing 11
import in.shop2020.catalog.dashboard.shared.VendorItemMapping;
12
import in.shop2020.catalog.dashboard.shared.VendorPricings;
5504 phani.kuma 13
import in.shop2020.catalog.dashboard.shared.VoucherItemMapping;
2378 ankur.sing 14
import in.shop2020.config.ConfigException;
3907 chandransh 15
import in.shop2020.content.ContentService;
16
import in.shop2020.content.ContentServiceException;
5946 rajveer 17
import in.shop2020.model.v1.catalog.CatalogService.Client;
10484 vikram.rag 18
import in.shop2020.model.v1.catalog.CatalogServiceException;
6838 vikram.rag 19
import in.shop2020.model.v1.catalog.Insurer;
5706 amit.gupta 20
import in.shop2020.model.v1.catalog.ItemType;
11671 vikram.rag 21
import in.shop2020.model.v1.catalog.PrivateDeal;
2105 ankur.sing 22
import in.shop2020.model.v1.catalog.status;
6096 amit.gupta 23
import in.shop2020.model.v1.inventory.InventoryService;
6813 amar.kumar 24
import in.shop2020.model.v1.inventory.ItemStockPurchaseParams;
9687 rajveer 25
import in.shop2020.model.v1.inventory.OOSStatus;
5504 phani.kuma 26
import in.shop2020.model.v1.user.VoucherType;
3129 rajveer 27
import in.shop2020.thrift.clients.CatalogClient;
3907 chandransh 28
import in.shop2020.thrift.clients.ContentClient;
5946 rajveer 29
import in.shop2020.thrift.clients.InventoryClient;
2378 ankur.sing 30
import in.shop2020.thrift.clients.config.ConfigClient;
2119 ankur.sing 31
import in.shop2020.utils.CategoryManager;
2359 ankur.sing 32
import in.shop2020.utils.ConfigClientKeys;
6530 vikram.rag 33
import in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems;
34
import in.shop2020.catalog.dashboard.shared.ItemWarehouse;
2427 ankur.sing 35
import java.io.BufferedReader;
36
import java.io.FileReader;
2359 ankur.sing 37
import java.io.IOException;
2427 ankur.sing 38
import java.text.DateFormat;
39
import java.text.SimpleDateFormat;
1961 ankur.sing 40
import java.util.ArrayList;
4957 phani.kuma 41
import java.util.Arrays;
2105 ankur.sing 42
import java.util.Calendar;
2068 ankur.sing 43
import java.util.Collections;
2427 ankur.sing 44
import java.util.Date;
1992 ankur.sing 45
import java.util.HashMap;
5118 mandeep.dh 46
import java.util.HashSet;
1961 ankur.sing 47
import java.util.List;
1992 ankur.sing 48
import java.util.Map;
2359 ankur.sing 49
import java.util.Map.Entry;
5118 mandeep.dh 50
import java.util.Set;
1961 ankur.sing 51
 
2427 ankur.sing 52
import org.apache.log4j.Logger;
3907 chandransh 53
import org.apache.thrift.TException;
54
import org.apache.thrift.transport.TTransportException;
2359 ankur.sing 55
 
1961 ankur.sing 56
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
57
 
58
@SuppressWarnings("serial")
59
public class CatalogServiceImpl extends RemoteServiceServlet implements CatalogService {
60
 
11671 vikram.rag 61
	private static Logger logger = Logger.getLogger(CatalogServiceImpl.class);
62
 
63
	private static Logger pushToProdLogger = Logger.getLogger("pushToProdLogger");
64
 
65
	private static Date pushToProdDate;
66
 
67
	private static String logFile;
68
 
69
	private static int maxCount;
70
 
71
	private static final int EBAYSOURCE = 6;
72
	private static final int SNAPDEALSOURCE = 7;
73
	private static final int FLIPKARTSOURCE = 8;
74
 
75
	List<Item> privateDealitemList;
76
 
77
	static {
78
		try {
79
			logFile = ConfigClient.getClient().get(ConfigClientKeys.push_prices_to_prod_log_file.toString());
80
			maxCount = Integer.parseInt(ConfigClient.getClient().get(ConfigClientKeys.push_prices_to_prod_max_count.toString()));    
81
		} catch(ConfigException ce) {
82
			logger.error("Unable to connect to the config server. Setting sensible defaults.", ce);
83
			logFile = "/var/log/services/pushToProductionCount/pushToProd.log";
84
			maxCount = 5;
85
		}
86
 
87
	}
88
 
89
	@Override
90
	public int getItemCountByStatus(boolean useStatus, ItemStatus itemStatus){
91
		int count = 0;
92
		try{
93
			CatalogClient catalogServiceClient = new CatalogClient();
94
			Client catalogClient = catalogServiceClient.getClient();
95
 
96
			status stat = status.findByValue(itemStatus.getValue());
97
			count = catalogClient.getItemCountByStatus(useStatus, stat);
98
		}catch(Exception e){
99
			logger.error("Error while getting the count of items from the catalog service", e);
100
		}
101
		return count;
102
	}
103
 
104
	@Override
6530 vikram.rag 105
	public List<Item> getInventoryOutofSyncItems(int offset, int limit){
11671 vikram.rag 106
		List<Item> itemList = new ArrayList<Item>();
6530 vikram.rag 107
 
11671 vikram.rag 108
		try {
109
			CatalogClient catalogServiceClient = new CatalogClient();
110
			Client catalogClient = catalogServiceClient.getClient();
6530 vikram.rag 111
 
11671 vikram.rag 112
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllIgnoredInventoryUpdateItemsList(offset, limit);
6530 vikram.rag 113
 
11671 vikram.rag 114
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
115
				itemList.add(getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null, null,null,null));
116
			}
117
		} catch (Exception e) {
118
			logger.error("Error while getting all items from the catalog service", e);
119
		}
120
		return itemList;
121
	}
6530 vikram.rag 122
 
11671 vikram.rag 123
	@Override
124
	public int getInventoryOutofSyncItemsCount(){
125
		int count=0;
126
		try {
127
			InventoryClient inventoryServiceClient = new InventoryClient();
128
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
6530 vikram.rag 129
 
11671 vikram.rag 130
			count = inventoryClient.getAllIgnoredInventoryupdateItemsCount();
2359 ankur.sing 131
 
11671 vikram.rag 132
		} catch (Exception e) {
133
			logger.error("Error while getting all items from the catalog service", e);
134
		}
135
		return count;	
136
	}
2359 ankur.sing 137
 
11671 vikram.rag 138
	public List<Item> getPrivateDealItems(int offset,int limit){
139
		privateDealitemList = new ArrayList<Item>();
140
		try {
141
			CatalogClient catalogServiceClient = new CatalogClient();
142
			Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 143
 
11671 vikram.rag 144
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getPrivateDealItems(offset, limit);
2208 ankur.sing 145
 
11671 vikram.rag 146
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
147
				privateDealitemList.add(getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null, null,null,null));
148
			}
149
		} catch (Exception e) {
150
			logger.error("Error while getting all items from the catalog service", e);
151
		}
152
		return privateDealitemList;
153
	}
154
	public int getPrivateDealItemsCount(){
155
		if(privateDealitemList!=null)
156
			return privateDealitemList.size();
157
		else
158
			return 0;
159
	}
2359 ankur.sing 160
 
11671 vikram.rag 161
	@Override
162
	public List<Item> getAllItems(int start, int limit) {
163
		List<Item> itemList = new ArrayList<Item>();
164
		logger.error("Inside get All Items");
165
		try {
166
			CatalogClient catalogServiceClient = new CatalogClient();
167
			Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 168
 
11671 vikram.rag 169
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItemsInRange(start, limit);
170
			logger.error("Before get item from thrift");
171
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
172
				itemList.add(getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null, null,null,null));
173
			}
174
			logger.error("After get item from thrift");
175
		} catch (Exception e) {
176
			logger.error("Error while getting all items from the catalog service", e);
177
		}
178
		logger.error("Item List return Size "+ itemList.size());
179
		return itemList;
180
	}
2359 ankur.sing 181
 
11671 vikram.rag 182
	public List<Item> getAllActiveItems(int start, int limit){
183
		return getItemsByStatus(status.ACTIVE, start, limit);
184
	}
2359 ankur.sing 185
 
11671 vikram.rag 186
	@Override
187
	public List<Item> getAllPhasedOutItems(int start, int limit){
188
		return getItemsByStatus(status.PHASED_OUT, start, limit);
189
	}
2359 ankur.sing 190
 
11671 vikram.rag 191
	@Override
192
	public List<Item> getAllPausedItems(int start, int limit){
193
		return getItemsByStatus(status.PAUSED, start, limit);
194
	}
2359 ankur.sing 195
 
11671 vikram.rag 196
	@Override
197
	public List<Item> getAllInProcessItems(int start, int limit) {
198
		return getItemsByStatus(status.IN_PROCESS, start, limit);
199
	}
2359 ankur.sing 200
 
11671 vikram.rag 201
	@Override
202
	public List<Item> getAllContentCompleteItems(int start, int limit) {
203
		return getItemsByStatus(status.CONTENT_COMPLETE, start, limit);
204
	}
2359 ankur.sing 205
 
11671 vikram.rag 206
	public List<Item> getBestDeals(){
207
		List<Item> itemList = new ArrayList<Item>();
208
		try {
209
			CatalogClient catalogServiceClient = new CatalogClient();
210
			Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 211
 
11671 vikram.rag 212
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestDeals();
213
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
214
				itemList.add(getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null, null,null,null));
215
			}
216
		} catch(Exception e){
217
			logger.error("Error while getting the best deals from the catalog service", e);
218
		}
219
		//Collections.sort(itemList, new ItemsComparator());
220
		return itemList;
221
	}
2359 ankur.sing 222
 
11671 vikram.rag 223
	@Override
224
	public List<Item> getRiskyItems() {
225
		List<Item> itemList = new ArrayList<Item>();
226
		try {
227
			CatalogClient catalogServiceClient = new CatalogClient();
228
			Client catalogClient = catalogServiceClient.getClient();
229
 
230
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getItemsByRiskyFlag();
231
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
232
				itemList.add(getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null, null,null,null));
233
			}
234
		} catch(Exception e){
235
			logger.error("Error while getting the risky items from the catalog service", e);
236
		}
237
		Collections.sort(itemList, new ItemsComparator());
238
		return itemList;
239
	}
240
 
241
	public List<Item> getBestSellers(){
242
		List<Item> itemList = new ArrayList<Item>();
243
 
244
		try {
245
			CatalogClient catalogServiceClient = new CatalogClient();
246
			Client catalogClient = catalogServiceClient.getClient();
247
 
248
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getBestSellers();
249
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
250
				itemList.add(getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null, null,null,null));
251
			}
252
		} catch(Exception e){
253
			logger.error("Error while getting the best sellers from the catalog service", e);
254
		}
255
		return itemList;        
256
	}
257
 
258
	@Override
259
	public boolean addtoIgnoredInventoryUpdateItemsIdsWarehouseIds(long itemId,long warehouseId){
260
		try {
261
			InventoryClient inventoryServiceClient = new InventoryClient();
262
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
263
			return inventoryClient.insertItemtoIgnoreInventoryUpdatelist(itemId, warehouseId);
6530 vikram.rag 264
		} catch (Exception e) {
6532 amit.gupta 265
			logger.error("Error while inserting item to ignore inventory update list", e);
11671 vikram.rag 266
		}
6530 vikram.rag 267
		return false;
11671 vikram.rag 268
	}
2359 ankur.sing 269
 
11671 vikram.rag 270
	@Override
271
	public boolean deleteFromIgnoredInventoryUpdateItemsIdsWarehouseIds(long itemId,long warehouseId){
272
		try {
273
			InventoryClient inventoryServiceClient = new InventoryClient();
274
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
275
			return inventoryClient.deleteItemFromIgnoredInventoryUpdateList(itemId,warehouseId);
6530 vikram.rag 276
 
11671 vikram.rag 277
		} catch (Exception e) {
278
			logger.error("Error while inserting item to ignore inventory update list", e);
279
		}
280
		return false;
281
	}
6530 vikram.rag 282
 
2359 ankur.sing 283
 
284
 
11671 vikram.rag 285
	@Override
286
	public List<Item> getLatestArrivals(){
287
		List<Item> itemList = new ArrayList<Item>();
2359 ankur.sing 288
 
11671 vikram.rag 289
		try {
290
			CatalogClient catalogServiceClient = new CatalogClient();
291
			Client catalogClient = catalogServiceClient.getClient();
3872 chandransh 292
 
11671 vikram.rag 293
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getLatestArrivals();
294
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
295
				//List<in.shop2020.model.v1.inventory.VendorItemPricing> vip = catalogClient.getAllItemPricing(thriftItem.getId());
296
				itemList.add(getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null, null,null,null));
297
			}
298
		} catch(Exception e){
299
			logger.error("Error while getting the latest arrivals from the catalog service", e);
300
		}
301
		return itemList;
302
	}
3872 chandransh 303
 
11671 vikram.rag 304
	@Override
305
	public List<Item> searchItems(int start, int limit, List<String> searchTerms) {
306
		List<Item> itemList = new ArrayList<Item>();
3872 chandransh 307
 
11671 vikram.rag 308
		try {
309
			CatalogClient catalogServiceClient = new CatalogClient();
310
			Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 311
 
11671 vikram.rag 312
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.searchItemsInRange(searchTerms, start, limit);
313
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
314
				itemList.add(getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null,null));
315
			}
316
		} catch(Exception e){
317
			logger.error("Error while getting the search results from the catalog service", e);
318
		}
319
		return itemList;
320
	}
2359 ankur.sing 321
 
11671 vikram.rag 322
	@Override
323
	public int getSearchResultCount(List<String> searchTerms){
324
		int count = 0;
325
		try {
326
			CatalogClient catalogServiceClient = new CatalogClient();
327
			Client catalogClient = catalogServiceClient.getClient();
2359 ankur.sing 328
 
11671 vikram.rag 329
			count = catalogClient.getSearchResultCount(searchTerms);
330
		} catch(Exception e){
331
			logger.error("Error while getting the search results from the catalog service", e);
332
		}
2359 ankur.sing 333
 
11671 vikram.rag 334
		return count;
335
	}
2359 ankur.sing 336
 
11671 vikram.rag 337
	public Item getItem(long itemId){
338
		try{
339
			CatalogClient catalogServiceClient = new CatalogClient();
340
			Client catalogClient = catalogServiceClient.getClient();
341
			InventoryClient inventoryServiceClient = new InventoryClient();
342
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
343
			in.shop2020.model.v1.catalog.Item thriftItem = catalogClient.getItem(itemId);
344
			PrivateDeal privateDeal = catalogClient.getPrivateDealDetails(itemId);
345
			Long catalogItemId = thriftItem.getCatalogItemId();
346
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getItemsByCatalogId(catalogItemId);
347
			List <Long> sameItemsWithDifferentColors = new ArrayList<Long>();
348
			if(thriftItems.size()>1){
349
				for(in.shop2020.model.v1.catalog.Item tItem : thriftItems ){
350
					Long id = tItem.getId();
351
					if(!id.equals(itemId)){
352
						sameItemsWithDifferentColors.add(id); 
353
					}
354
				}
355
			}
356
			List<in.shop2020.model.v1.inventory.VendorItemPricing> vip = inventoryClient.getAllItemPricing(thriftItem.getId());
357
			Map<Long,String> stateIdNameMap = inventoryClient.getStateMaster();
2359 ankur.sing 358
 
11671 vikram.rag 359
			List<in.shop2020.model.v1.inventory.VendorItemMapping> vim = inventoryClient.getVendorItemMappings(thriftItem.getId());
360
			List<in.shop2020.model.v1.catalog.SourceItemPricing> sip = catalogClient.getAllSourcePricing(thriftItem.getId());
361
			List<in.shop2020.model.v1.catalog.Item> sit = catalogClient.getAllSimilarItems(thriftItem.getId());
362
			in.shop2020.model.v1.inventory.ItemInventory itemInventory = inventoryClient.getItemInventoryByItemId(thriftItem.getId());
363
			ItemStockPurchaseParams stockPurchaseParams = inventoryClient.getItemStockPurchaseParams(thriftItem.getId());
364
			Map<Long, String> saleHistory = new HashMap<Long, String>();
365
			List<OOSStatus> oosStatuses = inventoryClient.getOosStatusesForXDaysForItem(thriftItem.getId(), 0, 5);
366
			String lastNdaySale = getOosString(oosStatuses);
367
			saleHistory.put(0L,lastNdaySale);
368
			List<OOSStatus> webOosStatuses = inventoryClient.getOosStatusesForXDaysForItem(thriftItem.getId(), 1, 5);
369
			String webLastNdaySale = getOosString(webOosStatuses);
370
			saleHistory.put(1L,webLastNdaySale);
371
			List<OOSStatus> amzOosStatuses = inventoryClient.getOosStatusesForXDaysForItem(thriftItem.getId(), 3, 5);
372
			String amzLastNdaySale = getOosString(amzOosStatuses);
373
			saleHistory.put(3L,amzLastNdaySale);
374
			List<OOSStatus> ebayOosStatuses = inventoryClient.getOosStatusesForXDaysForItem(thriftItem.getId(), 6, 5);
375
			String ebayLastNdaySale = getOosString(ebayOosStatuses);
376
			saleHistory.put(6L,ebayLastNdaySale);
377
			List<OOSStatus> spdOosStatuses = inventoryClient.getOosStatusesForXDaysForItem(thriftItem.getId(), 7, 5);
378
			String spdLastNdaySale = getOosString(spdOosStatuses);
379
			saleHistory.put(7L,spdLastNdaySale);
380
			List<OOSStatus> fktOosStatuses = inventoryClient.getOosStatusesForXDaysForItem(thriftItem.getId(), 8, 5);
381
			String fktLastNdaySale = getOosString(fktOosStatuses);
382
			saleHistory.put(8L,fktLastNdaySale);
383
			Long freebieItemId = catalogClient.getFreebieForItem(thriftItem.getId());
384
			List<in.shop2020.model.v1.catalog.VoucherItemMapping> tvouchers = catalogClient.getAllItemVouchers(thriftItem.getId());
385
			Map<String,String> stateNameVatPercentageMap = new HashMap<String,String>();
386
			catalogClient =  new CatalogClient("catalog_service_server_host_prod","catalog_service_server_port").getClient();
387
			double vatrate;
388
			for(Entry<Long, String> entry:stateIdNameMap.entrySet()){
389
				try{
390
					vatrate= catalogClient.getVatPercentageForItem(thriftItem.getId(),entry.getKey(),thriftItem.getSellingPrice());
391
				}
392
				catch(CatalogServiceException cex){
393
					vatrate = -1.0;
394
				}
395
				stateNameVatPercentageMap.put(entry.getValue(),String.valueOf(vatrate));
396
			}
397
			Item it = getItemFromThriftItem(thriftItem, vip, vim, sip, sit, itemInventory, tvouchers, stockPurchaseParams, saleHistory, freebieItemId , stateNameVatPercentageMap,privateDeal);
398
			it.setSameItemsWithDifferentColors(sameItemsWithDifferentColors);
399
			return it;
400
		}catch(Exception e){
401
			logger.error("Error while getting the item from the catalog service", e);
402
		}
403
		return null;
404
	}
405
 
406
	private String getOosString(List<OOSStatus> oosStatuses){
407
		String lastNdaySale = "";
408
		for(OOSStatus oosStatus : oosStatuses){
409
			if(oosStatus.isIs_oos()){
410
				lastNdaySale += "X-";
411
			}else{
412
				lastNdaySale += oosStatus.getNum_orders() + "-";
413
			}
414
		}
415
		if(lastNdaySale!=""){
416
			lastNdaySale = lastNdaySale.substring(0, lastNdaySale.length()-1);
417
		}
418
		return lastNdaySale;
419
	}
420
 
421
	@Override
422
	public boolean updateItem(Item item) {
423
		logger.info("Updating item with Id: " + item.getId());
424
		try{
425
			CatalogClient catalogServiceClient = new CatalogClient();
426
			Client catalogClient = catalogServiceClient.getClient();
6530 vikram.rag 427
			InventoryClient inventoryServiceClient = new InventoryClient();
11671 vikram.rag 428
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
429
 
430
			in.shop2020.model.v1.catalog.Item tItem = catalogClient.getItem(item.getId());
431
			in.shop2020.model.v1.catalog.PrivateDeal privateDeal = new in.shop2020.model.v1.catalog.PrivateDeal(); 
432
			privateDeal.setItem_id(item.getId());
433
			privateDeal.setDealFreebieItemId(item.getPrivateDeal().getDealFreebieItemId());
434
			privateDeal.setDealPrice(item.getPrivateDeal().getDealPrice());
435
			privateDeal.setDealText(item.getPrivateDeal().getDealText());
436
			privateDeal.setDealFreebieOption(item.getPrivateDeal().getDealFreebieOption());
437
			privateDeal.setDealTextOption(item.getPrivateDeal().getDealTextOption());
438
			if(item.getPrivateDeal().getEndDate()!=null){
439
				privateDeal.setEndDate(item.getPrivateDeal().getEndDate());
440
			}
441
			if(item.getPrivateDeal().getStartDate()!=null){
442
				privateDeal.setStartDate(item.getPrivateDeal().getStartDate());
443
			}
444
			privateDeal.setIsCod(item.getPrivateDeal().isCod());
445
			privateDeal.setRank(item.getPrivateDeal().getRank());
446
			privateDeal.setIsActive(item.getPrivateDeal().isActive());
447
			if(privateDeal.getDealPrice() > 0 && privateDeal.getEndDate()!=0 && privateDeal.getStartDate()!=0){
448
				logger.info("Updating Private deal: " + item.getId());
449
				logger.info("Deal Price "+privateDeal.getDealPrice());
450
				logger.info("Deal Start Date "+privateDeal.getStartDate());
451
				logger.info("Deal End Date "+privateDeal.getEndDate());
452
				logger.info("Has COD on deal: " + privateDeal.isIsCod());
453
				logger.info("Response" + catalogClient.addOrUpdatePrivateDeal(privateDeal));
454
				logger.info("Updated Private deal: " + item.getId());
455
			}
456
			else{
457
				logger.info("Skipping Private deal: " + item.getId());
458
				logger.info("Deal Price "+privateDeal.getDealPrice());
459
				logger.info("Deal Start Date "+privateDeal.getStartDate());
460
				logger.info("Deal End Date "+privateDeal.getEndDate());
461
			}
462
			setThriftItemParams(tItem, item);
463
			long rItemId;
464
			if((rItemId = catalogClient.updateItem(tItem)) != item.getId()) {
465
				logger.error("Error updating item, returned Item Id: " + rItemId);
466
				return false;
467
			}
468
			logger.info("Successfully updated item with id: " + item.getId());
469
 
470
			Map<String, VendorItemMapping> vendorMappings = item.getVendorKeysMap();
471
			if(vendorMappings != null && !vendorMappings.isEmpty()) {
472
				in.shop2020.model.v1.inventory.VendorItemMapping tVendorMapping;
473
 
474
				for(Entry<String, VendorItemMapping> e : vendorMappings.entrySet()) {
475
					tVendorMapping = new in.shop2020.model.v1.inventory.VendorItemMapping();
476
					VendorItemMapping v = e.getValue();
477
					tVendorMapping.setVendorId(v.getVendorId());
478
					tVendorMapping.setItemKey(v.getItemKey());
479
					tVendorMapping.setItemId(item.getId());
480
					inventoryClient.addVendorItemMapping(e.getKey().substring(e.getKey().indexOf(Item.KEY_SEPARATOR)+1), tVendorMapping);
481
					logger.info("Updates VendorItemMapping: " + tVendorMapping.toString());
482
				}
483
			}
484
 
485
			if(item.getMinStockLevel()!=0 || item.getNumOfDaysStock()!=0) {
486
				inventoryClient.updateItemStockPurchaseParams(item.getId(), item.getNumOfDaysStock(),
487
						item.getMinStockLevel());
488
			}
489
 
490
			if(item.getFreebieItemId()!=null) {
491
				in.shop2020.model.v1.catalog.FreebieItem freebieItem = new in.shop2020.model.v1.catalog.FreebieItem();
492
				freebieItem.setItemId(item.getId());
493
				freebieItem.setFreebieItemId(item.getFreebieItemId());
494
				catalogClient.addOrUpdateFreebieForItem(freebieItem);
495
			}
496
 
497
			Map<Long, VendorPricings> vendorPricings = item.getVendorPricesMap();
498
			if(vendorPricings != null && !vendorPricings.isEmpty()) {
499
				in.shop2020.model.v1.inventory.VendorItemPricing tVendorPricing;
500
				for(VendorPricings v : vendorPricings.values()) {
501
					tVendorPricing = new in.shop2020.model.v1.inventory.VendorItemPricing();
502
					tVendorPricing.setVendorId(v.getVendorId());
503
					tVendorPricing.setItemId(item.getId());
504
					tVendorPricing.setMop(v.getMop());
505
					tVendorPricing.setTransferPrice(v.getTransferPrice());
506
					tVendorPricing.setDealerPrice(v.getDealerPrice());
507
					tVendorPricing.setNlc(v.getNlc());
508
					inventoryClient.addVendorItemPricing(tVendorPricing);
509
					logger.info("Updated VendorItemPricing: " + tVendorPricing.toString());
510
				}
511
			}
512
 
513
			Map<Long, SourcePricings> sourcePricings = item.getSourcePricesMap();
514
			if(sourcePricings != null && !sourcePricings.isEmpty()) {
515
				in.shop2020.model.v1.catalog.SourceItemPricing tSourcePricings;
516
				for(SourcePricings s : sourcePricings.values()) {
517
					tSourcePricings = new in.shop2020.model.v1.catalog.SourceItemPricing();
518
					tSourcePricings.setSourceId(s.getSourceId());
519
					tSourcePricings.setItemId(item.getId());
520
					tSourcePricings.setMrp(s.getMrp());
521
					tSourcePricings.setSellingPrice(s.getSellingPrice());
522
					catalogClient.addSourceItemPricing(tSourcePricings);
523
					logger.info("Updated SourceItemPricing: " + tSourcePricings.toString());
524
				}
525
			}
526
 
527
		}catch(Exception e){
528
			logger.error("Error while updating item: ", e);
529
			return false;
530
		}
531
		return true;
532
	}
533
 
534
	@Override
535
	public List<Long> getMonitoredWarehouseIdsForVendors(List<Long> vendorIds){
536
		List<Long> monitoredWarehouseids=null;
537
		try {
538
			InventoryClient inventoryServiceClient = new InventoryClient();
539
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
540
			monitoredWarehouseids = inventoryClient.getMonitoredWarehouseForVendors(vendorIds);
6530 vikram.rag 541
		} catch (Exception e) {
542
			logger.error("Error while getting Monitored warehouse for vendor: ", e);
543
		}
544
		return monitoredWarehouseids;
11671 vikram.rag 545
 
546
	}
547
 
548
	@Override
549
	public List<ItemWarehouse> getignoredInventoryUpdateItemsIdsWarehouseIds(){
6530 vikram.rag 550
		List<ItemWarehouse> ignoredItemIdwarehouseIdList = new ArrayList<ItemWarehouse>();
11671 vikram.rag 551
		try {
2359 ankur.sing 552
 
6530 vikram.rag 553
			InventoryClient inventoryServiceClient = new InventoryClient();
554
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
555
			List<IgnoredInventoryUpdateItems> ignoredInventoryUpdateItems = inventoryClient.getIgnoredWarehouseidsAndItemids();
556
			for(IgnoredInventoryUpdateItems ignoredInventoryUpdateItem:ignoredInventoryUpdateItems){
557
				ignoredItemIdwarehouseIdList.add(new ItemWarehouse(ignoredInventoryUpdateItem.getItemId(),ignoredInventoryUpdateItem.getWarehouseId()));
558
			}
11671 vikram.rag 559
 
560
 
6530 vikram.rag 561
		} catch (Exception e) {
562
			logger.error("Error while getting Monitored warehouseid and itemid : ", e);
563
		}
564
		return ignoredItemIdwarehouseIdList;
2359 ankur.sing 565
 
11671 vikram.rag 566
	}
567
	@Override
568
	public Map<Long, String> getAllVendors() {
569
		Map<Long, String> vendorMap = new HashMap<Long, String>();
570
		try {
571
			InventoryClient inventoryServiceClient = new InventoryClient();
572
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
2066 ankur.sing 573
 
11671 vikram.rag 574
			List<in.shop2020.model.v1.inventory.Vendor> vendors = inventoryClient.getAllVendors();
3558 rajveer 575
 
11671 vikram.rag 576
			for(in.shop2020.model.v1.inventory.Vendor v : vendors) {
577
				vendorMap.put(v.getId(), v.getName());
578
			}
579
		} catch (Exception e) {
580
			logger.error("Error while getting all the vendors: ", e);
581
		}
582
		return vendorMap;
583
	}
3558 rajveer 584
 
11671 vikram.rag 585
	@Override
586
	public Map<Long, String> getAllSources() {
587
		Map<Long, String> sourceMap = new HashMap<Long, String>();
588
		try {
589
			CatalogClient catalogServiceClient = new CatalogClient();
590
			Client catalogClient = catalogServiceClient.getClient();
3558 rajveer 591
 
11671 vikram.rag 592
			List<in.shop2020.model.v1.catalog.Source> sources = catalogClient.getAllSources();
5118 mandeep.dh 593
 
11671 vikram.rag 594
			for(in.shop2020.model.v1.catalog.Source s : sources) {
595
				sourceMap.put(s.getId(), s.getName());
596
			}
597
		} catch (Exception e) {
598
			logger.error("Error while getting all the vendors: ", e);
599
		}
600
		return sourceMap;
601
	}
5118 mandeep.dh 602
 
11671 vikram.rag 603
	@Override
604
	public Map<Long, String> getShippingWarehouses() {
605
		Map<Long, String> warehouseMap = new HashMap<Long, String>();
606
		Set<Long> shippingLocations = new HashSet<Long>();
607
		try {
608
			InventoryClient inventoryServiceClient = new InventoryClient();
609
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
2359 ankur.sing 610
 
11671 vikram.rag 611
			List<in.shop2020.model.v1.inventory.Warehouse> warehouses = inventoryClient.getAllWarehouses(true);
2359 ankur.sing 612
 
11671 vikram.rag 613
			for(in.shop2020.model.v1.inventory.Warehouse warehouse : warehouses) {
614
				shippingLocations.add(warehouse.getShippingWarehouseId());
615
			}
2105 ankur.sing 616
 
11671 vikram.rag 617
			for(in.shop2020.model.v1.inventory.Warehouse warehouse : warehouses) {
618
				if (shippingLocations.contains(warehouse.getId())) {
619
					warehouseMap.put(warehouse.getId(), warehouse.getDisplayName());
620
				}                
621
			}
622
		} catch (Exception e) {
623
			logger.error("Error while getting all the warehouses:", e );
624
		}
625
		return warehouseMap;
626
	}
2126 ankur.sing 627
 
11671 vikram.rag 628
	@Override
629
	public Map<Long, String> getAllWarehouses() {
630
		Map<Long, String> warehouseMap = new HashMap<Long, String>();
631
		try {
632
			InventoryClient inventoryServiceClient = new InventoryClient();
633
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
2105 ankur.sing 634
 
11671 vikram.rag 635
			List<in.shop2020.model.v1.inventory.Warehouse> warehouses = inventoryClient.getAllWarehouses(true);
2359 ankur.sing 636
 
11671 vikram.rag 637
			for(in.shop2020.model.v1.inventory.Warehouse w : warehouses) {
638
				warehouseMap.put(w.getId(), w.getDisplayName());
639
			}
640
		} catch (Exception e) {
641
			logger.error("Error while getting all the warehouses:", e );
642
		}
643
		return warehouseMap;
644
	}
2119 ankur.sing 645
 
11671 vikram.rag 646
	@Override
647
	public long addItem(Item item) {
648
		long itemId = 0;
649
		try {
650
			CatalogClient catalogServiceClient = new CatalogClient();
651
			Client catalogClient = catalogServiceClient.getClient();
652
			InventoryClient inventoryServiceClient = new InventoryClient();
653
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
2359 ankur.sing 654
 
11671 vikram.rag 655
			in.shop2020.model.v1.catalog.Item tItem = new in.shop2020.model.v1.catalog.Item();
656
			setThriftItemParams(tItem, item);
657
			itemId = catalogClient.addItem(tItem);
658
			Map<Long, VendorPricings> vendorPricings = item.getVendorPricesMap();
659
			if(vendorPricings != null && !vendorPricings.isEmpty()) {
660
				in.shop2020.model.v1.inventory.VendorItemPricing tVendorPricing;
661
				for(VendorPricings v : vendorPricings.values()) {
662
					tVendorPricing = new in.shop2020.model.v1.inventory.VendorItemPricing();
663
					tVendorPricing.setVendorId(v.getVendorId());
664
					tVendorPricing.setItemId(itemId);
665
					tVendorPricing.setMop(v.getMop());
666
					tVendorPricing.setTransferPrice(v.getTransferPrice());
667
					tVendorPricing.setNlc(v.getNlc());
668
					tVendorPricing.setDealerPrice(v.getDealerPrice());
669
					inventoryClient.addVendorItemPricing(tVendorPricing);
670
				}
671
			}
2359 ankur.sing 672
 
11671 vikram.rag 673
			Map<String, VendorItemMapping> vendorKeysMap = item.getVendorKeysMap();
674
			if(vendorKeysMap != null && !vendorKeysMap.isEmpty()) {
675
				in.shop2020.model.v1.inventory.VendorItemMapping tVendorMapping;
676
				for(Entry<String, VendorItemMapping> e : vendorKeysMap.entrySet()) {
677
					tVendorMapping = new in.shop2020.model.v1.inventory.VendorItemMapping();
678
					VendorItemMapping v = e.getValue();
679
					tVendorMapping.setVendorId(v.getVendorId());
680
					tVendorMapping.setItemKey(v.getItemKey());
681
					tVendorMapping.setItemId(itemId);
682
					inventoryClient.addVendorItemMapping(e.getKey().substring(e.getKey().indexOf(Item.KEY_SEPARATOR)+1), tVendorMapping);
683
				}
684
			}
2359 ankur.sing 685
 
11671 vikram.rag 686
			inventoryClient.updateItemStockPurchaseParams(itemId, item.getNumOfDaysStock(),
687
					item.getMinStockLevel());
7291 vikram.rag 688
 
11671 vikram.rag 689
			if(item.getFreebieItemId()!=null && item.getFreebieItemId()!=0) {
690
				in.shop2020.model.v1.catalog.FreebieItem freebieItem = 
691
					new in.shop2020.model.v1.catalog.FreebieItem();
692
				freebieItem.setItemId(itemId);
693
				freebieItem.setFreebieItemId(item.getFreebieItemId());
694
				catalogClient.addOrUpdateFreebieForItem(freebieItem);
695
			}
5217 amit.gupta 696
 
11671 vikram.rag 697
		} catch (Exception e) {
698
			logger.error("Error while adding an item: ", e);
699
		}
700
		return itemId;
701
	}
2126 ankur.sing 702
 
11671 vikram.rag 703
	@Override
704
	public long checkSimilarItem(String brand, String modelNumber, String modelName, String color) {
2359 ankur.sing 705
 
11671 vikram.rag 706
		try {
707
			CatalogClient catalogServiceClient = new CatalogClient();
708
			Client catalogClient = catalogServiceClient.getClient();
709
			return catalogClient.checkSimilarItem(brand, modelNumber, modelName, color);
710
		} catch (Exception e) {
711
			logger.error("Error while checking for a similar item: ", e);
712
		}
713
		return 0;
714
	}
2359 ankur.sing 715
 
11671 vikram.rag 716
	private void setThriftItemParams(in.shop2020.model.v1.catalog.Item tItem, Item item) {
717
		tItem.setId(tItem.getId());
718
		tItem.setProductGroup(item.getProductGroup());
719
		tItem.setBrand(item.getBrand());
720
		tItem.setModelName(item.getModelName());
721
		tItem.setModelNumber(item.getModelNumber());
722
		tItem.setColor(item.getColor());
723
		tItem.setShowSellingPrice(item.isShowSellingPrice());
724
		tItem.setHoldOverride(item.isHoldOverride());
725
		tItem.setStatus_description(item.getItemStatusDesc());
726
		tItem.setComments(item.getComments());
2126 ankur.sing 727
 
11671 vikram.rag 728
		if(item.getMrp() != null) {
729
			tItem.setMrp(item.getMrp());
730
		}
2359 ankur.sing 731
 
11671 vikram.rag 732
		if(item.getCatalogItemId() != null) {
733
			tItem.setCatalogItemId(item.getCatalogItemId());
734
		}
2359 ankur.sing 735
 
11671 vikram.rag 736
		if(item.getSellingPrice() != null) {
737
			tItem.setSellingPrice(item.getSellingPrice());
738
		}
2359 ankur.sing 739
 
11671 vikram.rag 740
		if(item.getWeight() != null) {
741
			tItem.setWeight(item.getWeight());
742
		}
2359 ankur.sing 743
 
11671 vikram.rag 744
		if(item.getExpectedDelay() != null) {
745
			tItem.setExpectedDelay(item.getExpectedDelay());
746
		}
2359 ankur.sing 747
 
11671 vikram.rag 748
		tItem.setIsWarehousePreferenceSticky(item.isWarehouseStickiness());
2359 ankur.sing 749
 
11671 vikram.rag 750
		if(item.getPreferredVendor() != null) {
751
			tItem.setPreferredVendor(item.getPreferredVendor());
752
		}
753
		tItem.setPreferredInsurer(item.getPreferredInsurer());
2359 ankur.sing 754
 
11671 vikram.rag 755
		if(item.getAsin() != null) {
756
			tItem.setAsin(item.getAsin());
757
		}
758
		if(item.getHoldInventory()!= null) {
759
			tItem.setHoldInventory(item.getHoldInventory());
760
		}
761
		else{
762
			tItem.setHoldInventory(0);
763
		}	
764
		if(item.getDefaultInventory()!=null){
765
			tItem.setDefaultInventory(item.getDefaultInventory());
766
		}
767
		else{
768
			tItem.setDefaultInventory(0);
769
		}
770
		tItem.setBestDealText(item.getBestDealsText());
771
		tItem.setBestDealsDetailsText(item.getBestDealsDetailsText());
772
		tItem.setBestDealsDetailsLink(item.getBestDealsDetailsLink());
773
		if(item.getBestDealsValue() != null) {
774
			tItem.setBestDealValue(item.getBestDealsValue());
775
		}
2359 ankur.sing 776
 
11671 vikram.rag 777
		if(item.getBestSellingRank() != null) {
778
			tItem.setBestSellingRank(item.getBestSellingRank());
779
		}
2359 ankur.sing 780
 
11671 vikram.rag 781
		tItem.setDefaultForEntity(item.isDefaultForEntity());
782
		tItem.setRisky(item.isRisky());
783
		tItem.setHasItemNo(item.isHasItemNo());
2359 ankur.sing 784
 
11671 vikram.rag 785
		if(item.isItemType()) {
786
			tItem.setType(ItemType.SERIALIZED);
787
		}
788
		else {
789
			tItem.setType(ItemType.NON_SERIALIZED);
790
		}
791
 
792
		if(item.getStartDate() != null) {
793
			tItem.setStartDate(item.getStartDate());
794
		}
795
 
796
		if(item.getExpectedArrivalDate() != null) {
797
			tItem.setExpectedArrivalDate(item.getExpectedArrivalDate());
798
		} else {
799
			tItem.unsetComingSoonStartDate();
800
			tItem.unsetExpectedArrivalDate();
801
			if(status.COMING_SOON.equals(tItem.getItemStatus())){
802
				tItem.setItemStatus(status.CONTENT_COMPLETE);
803
				tItem.setStatus_description("Content generation completed");
804
			}
805
		}
806
 
807
		if(item.getComingSoonStartDate() != null) {
808
			tItem.setComingSoonStartDate(item.getComingSoonStartDate());
809
		} else {
810
			tItem.unsetComingSoonStartDate();
811
		}
812
 
813
		if(item.getRetireDate() != null) {
814
			tItem.setRetireDate(item.getRetireDate());
815
		}
816
 
817
		tItem.setUpdatedOn(Calendar.getInstance().getTimeInMillis());
818
	}
819
 
820
	@Override
821
	public void pauseItem(long itemId) {
822
		try {
823
			CatalogClient catalogServiceClient = new CatalogClient();
824
			Client catalogClient = catalogServiceClient.getClient();
825
 
826
			catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.PAUSED);
827
		} catch (Exception e) {
828
			logger.error("Error while pausing the item: " + itemId, e);
829
		}
830
 
831
	}
832
 
833
	@Override
834
	public void markInProcess(long itemId) {
835
		try {
836
			CatalogClient catalogServiceClient = new CatalogClient();
837
			Client catalogClient = catalogServiceClient.getClient();
838
 
839
			catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.IN_PROCESS);
840
		} catch (Exception e) {
841
			logger.error("Error while marking in-process the item: " + itemId, e);
842
		}
843
	}
844
 
845
	@Override
846
	public void phaseoutItem(long itemId) {
847
		try {
848
			CatalogClient catalogServiceClient = new CatalogClient();
849
			Client catalogClient = catalogServiceClient.getClient();
850
 
851
			catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.PHASED_OUT);
852
		} catch (Exception e) {
853
			logger.error("Error while phasing out the item: " + itemId, e);
854
		}
855
	}
856
 
857
	@Override
858
	public void activateItem(long itemId) {
859
		try {
860
			CatalogClient catalogServiceClient = new CatalogClient();
861
			Client catalogClient = catalogServiceClient.getClient();
862
 
863
			catalogClient.changeItemStatus(itemId, Calendar.getInstance().getTimeInMillis(), status.ACTIVE);
864
		} catch (Exception e) {
865
			logger.error("Error while activating the item: " + itemId, e);
866
		}
867
	}
868
 
869
	@Override
870
	public boolean changeItemRiskyFlag(long itemId, boolean risky) {
871
		try {
872
			logger.info("Updating risky flag for item id: " + itemId + " to " + risky);
873
			// Initialize client for staging server
874
			CatalogClient catalogServiceClient = new CatalogClient();
875
			Client catalogClient = catalogServiceClient.getClient();
876
 
877
			// Initialize client for production server
878
			CatalogClient catalogServiceClient_Prod = new CatalogClient(ConfigClientKeys.catalog_service_server_host_prod.toString(),
879
					ConfigClientKeys.catalog_service_server_port.toString());
880
			Client catalogClient_Prod = catalogServiceClient_Prod.getClient();
881
			catalogClient.changeItemRiskyFlag(itemId, risky);
882
 
883
			try{
884
				catalogClient_Prod.changeItemRiskyFlag(itemId, risky);
885
			}catch(Exception e){
886
				logger.error("Error while updating item's risky flag on production", e);
887
				// If not able to change risky flag on production, revert on staging and return false (to show error to user).
888
				catalogClient.changeItemRiskyFlag(itemId, !risky);        
889
				return false;
890
			}
891
		} catch (Exception e) {
892
			logger.error("Error while updating item's risky flag on staging", e);
893
			return false;
894
		}
895
		return true;
896
	}
897
 
898
 
899
	/**
900
	 * Retuns list of Items filtered by category (column is product_group in catalog.item table)
901
	 * This list is used to generate master sheet (excel sheet)
902
	 * @param category
903
	 * @param brand
904
	 * @return
905
	 */
906
	public List<Item> getItemsForMasterSheet(String category, String brand) {
907
		List<Item> itemList = new ArrayList<Item>();
908
		try {
909
			CatalogClient catalogServiceClient = new CatalogClient();
910
			Client catalogClient = catalogServiceClient.getClient();
911
			InventoryClient inventoryServiceClient = new InventoryClient();
912
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
913
 
914
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getItemsForMasterSheet(category, brand);
915
 
916
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
5946 rajveer 917
				List<in.shop2020.model.v1.inventory.VendorItemPricing> vip = inventoryClient.getAllItemPricing(thriftItem.getId());
918
				List<in.shop2020.model.v1.inventory.VendorItemMapping> vim = inventoryClient.getVendorItemMappings(thriftItem.getId());
5706 amit.gupta 919
				List<in.shop2020.model.v1.catalog.SourceItemPricing> sip = catalogClient.getAllSourcePricing(thriftItem.getId());
11671 vikram.rag 920
				itemList.add(getItemFromThriftItem(thriftItem, vip, vim, sip, null, null, null, null, null, null));
921
			}
922
		} catch (Exception e) {
923
			logger.error("Error while getting items by category: " + category, e);
924
		}
925
		Collections.sort(itemList, new ItemsComparator());
926
		return itemList;
927
	}
928
 
929
	@Override
930
	public String updateItemOnProduction(Item item) {
931
		if(!canPushToProduction()) {
932
			// If we can't push to production, then return that message to user
933
			// else move forward with update.
934
			return "Maximum push to production count reached for today";
935
		}
936
		List<Long> itemIds = item.getSameItemsWithDifferentColors();
937
		List<Item> items = new ArrayList<Item>();
938
		items.add(item);
939
		for(Long itemId : itemIds) {
940
			try {
941
				CatalogClient catalogServiceClient = new CatalogClient();
942
				Client catalogClient = catalogServiceClient.getClient();
943
				InventoryClient inventoryServiceClient = new InventoryClient();
944
				in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
945
				in.shop2020.model.v1.catalog.Item thriftItem = catalogClient.getItem(itemId);
11976 vikram.rag 946
				in.shop2020.model.v1.catalog.PrivateDeal tPrivateDeal = catalogClient.getPrivateDealDetails(itemId);
11671 vikram.rag 947
				List<in.shop2020.model.v1.inventory.VendorItemPricing> vip = inventoryClient.getAllItemPricing(thriftItem.getId());
948
				List<in.shop2020.model.v1.inventory.VendorItemMapping> vim = inventoryClient.getVendorItemMappings(thriftItem.getId());
949
				List<in.shop2020.model.v1.catalog.SourceItemPricing> sip = catalogClient.getAllSourcePricing(thriftItem.getId());
11976 vikram.rag 950
				items.add(getItemFromThriftItem(thriftItem, vip, vim, sip, null, null, null, null, null, null,null,tPrivateDeal));
11671 vikram.rag 951
			} catch (Exception e) {
952
				logger.error("Could not fetch item for : " + itemId, e);
953
				return "Could not push to production. No item got pushed.";
954
			}
955
		}
956
		for (Item it : items) {
957
			logger.info("Update item on production call, Item Id: " + it.getId());
3354 chandransh 958
 
11671 vikram.rag 959
			try{
960
				CatalogClient catalogServiceClient_Prod = new CatalogClient( 
961
						ConfigClientKeys.catalog_service_server_host_prod.toString(),
962
						ConfigClientKeys.catalog_service_server_port.toString());
3354 chandransh 963
 
11671 vikram.rag 964
				Client catalogClient_Prod = catalogServiceClient_Prod.getClient();
3354 chandransh 965
 
11671 vikram.rag 966
				in.shop2020.model.v1.catalog.Item tItem = catalogClient_Prod.getItem(it.getId());
3354 chandransh 967
 
11671 vikram.rag 968
				InventoryClient inventoryServiceClient = new InventoryClient();
969
				in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
3354 chandransh 970
 
11671 vikram.rag 971
				if(it.getMrp() != null) {
972
					tItem.setMrp(it.getMrp());
973
				}
3558 rajveer 974
 
11671 vikram.rag 975
				if(it.getSellingPrice() != null) {
976
					tItem.setSellingPrice(it.getSellingPrice());
977
				}
4423 phani.kuma 978
 
11671 vikram.rag 979
				tItem.setBestDealText(it.getBestDealsText());
980
 
981
				if (it.getItemStatusValue()  == ItemStatus.ACTIVE.getValue() || it.getItemStatusValue()  == ItemStatus.PAUSED.getValue()) {
982
					tItem.setItemStatus(status.findByValue(it.getItemStatusValue()));
983
					tItem.setStartDate(it.getStartDate());
984
				}
985
				long rItemId;
986
				if((rItemId = catalogClient_Prod.updateItem(tItem)) != it.getId()) {
987
					logger.error("Error updating item on production, returned Item Id: " + rItemId);
988
					return "Error updating item prices on production";
989
				}
990
				if(it.getFreebieItemId() !=null && it.getFreebieItemId()!=0) {
991
					in.shop2020.model.v1.catalog.FreebieItem freebieItem = new in.shop2020.model.v1.catalog.FreebieItem();
992
					freebieItem.setItemId(it.getId());
993
					freebieItem.setFreebieItemId(it.getFreebieItemId());
994
					catalogClient_Prod.addOrUpdateFreebieForItem(freebieItem);
995
				}
996
				logger.info("Successfully updated item: " + it.getId());
997
 
998
				StringBuilder sb = new StringBuilder();
999
 
1000
				Map<Long, VendorPricings> vendorPricings = it.getVendorPricesMap();
1001
				if(vendorPricings != null && !vendorPricings.isEmpty()) {
1002
					in.shop2020.model.v1.inventory.VendorItemPricing tVendorPricing;
1003
					for(VendorPricings v : vendorPricings.values()) {
1004
						tVendorPricing = new in.shop2020.model.v1.inventory.VendorItemPricing();
1005
						tVendorPricing.setVendorId(v.getVendorId());
1006
						tVendorPricing.setItemId(it.getId());
1007
						tVendorPricing.setMop(v.getMop());
1008
						tVendorPricing.setTransferPrice(v.getTransferPrice());
1009
						tVendorPricing.setNlc(v.getNlc());
1010
						tVendorPricing.setDealerPrice(v.getDealerPrice());
1011
						inventoryClient.addVendorItemPricing(tVendorPricing);
1012
						logger.info("VendorItemPricing updated. " + tVendorPricing.toString());
1013
						sb.append("[VId:" + v.getVendorId() + ",MOP=" + v.getMop() + ",TP=" + v.getTransferPrice() + ",NLC= " +v.getNlc() + ",DP=" + v.getDealerPrice() + "], ");
1014
					}
1015
				}
1016
 
1017
				Map<String, VendorItemMapping> vendorMappings = it.getVendorKeysMap();
1018
				if(vendorMappings != null && !vendorMappings.isEmpty()) {
1019
					in.shop2020.model.v1.inventory.VendorItemMapping tVendorMapping;
1020
					for(VendorItemMapping vendorItemMapping : vendorMappings.values()) {
1021
						tVendorMapping = new in.shop2020.model.v1.inventory.VendorItemMapping();
1022
						tVendorMapping.setVendorId(vendorItemMapping.getVendorId());
1023
						tVendorMapping.setItemId(it.getId());
1024
						tVendorMapping.setItemKey(vendorItemMapping.getItemKey());
1025
						inventoryClient.addVendorItemMapping(vendorItemMapping.getItemKey(), tVendorMapping);
1026
						logger.info("VendorItemMapping updated. " + tVendorMapping.toString());
1027
						sb.append("[VId:" + vendorItemMapping.getVendorId() + ",ItemKey=" + vendorItemMapping.getItemKey() + "], ");
1028
					}
1029
				}
1030
 
1031
				Map<Long, SourcePricings> sourcePricings = it.getSourcePricesMap();
1032
				if(sourcePricings != null && !sourcePricings.isEmpty()){
1033
					in.shop2020.model.v1.catalog.SourceItemPricing tSourcePricing;
1034
					for(SourcePricings s : sourcePricings.values()){
1035
						tSourcePricing = new in.shop2020.model.v1.catalog.SourceItemPricing();
1036
						tSourcePricing.setSourceId(s.getSourceId());
1037
						tSourcePricing.setItemId(it.getId());
1038
						tSourcePricing.setMrp(s.getMrp());
1039
						tSourcePricing.setSellingPrice(s.getSellingPrice());
1040
						catalogClient_Prod.addSourceItemPricing(tSourcePricing);
1041
						logger.info("SourceItemPricing updated. " + tSourcePricing.toString());
1042
						sb.append("[SId:" + s.getSourceId() + ",MRP=" + s.getMrp() + ",SP=" + s.getSellingPrice() + "], ");
1043
					}
1044
				}
1045
				pushToProdLogger.info("Id=" + it.getId() + ",MRP=" + it.getMrp() + ",SP=" + " " + it.getSellingPrice() + sb.toString());
11976 vikram.rag 1046
				in.shop2020.model.v1.catalog.PrivateDeal privateDeal = new in.shop2020.model.v1.catalog.PrivateDeal(); 
1047
				privateDeal.setItem_id(item.getId());
1048
				privateDeal.setDealFreebieItemId(item.getPrivateDeal().getDealFreebieItemId());
1049
				privateDeal.setDealPrice(item.getPrivateDeal().getDealPrice());
1050
				privateDeal.setDealText(item.getPrivateDeal().getDealText());
1051
				privateDeal.setDealFreebieOption(item.getPrivateDeal().getDealFreebieOption());
1052
				privateDeal.setDealTextOption(item.getPrivateDeal().getDealTextOption());
1053
				privateDeal.setEndDate(item.getPrivateDeal().getEndDate());
1054
				privateDeal.setStartDate(item.getPrivateDeal().getStartDate());
1055
				privateDeal.setIsCod(item.getPrivateDeal().isCod());
1056
				privateDeal.setRank(item.getPrivateDeal().getRank());
1057
				privateDeal.setIsActive(item.getPrivateDeal().isActive());
1058
				if(privateDeal.getDealPrice() > 0 && privateDeal.getEndDate()!=0 && privateDeal.getStartDate()!=0){
1059
					logger.info("Updating Private deal: " + item.getId());
1060
					logger.info("Deal Price "+privateDeal.getDealPrice());
1061
					logger.info("Deal Start Date "+privateDeal.getStartDate());
1062
					logger.info("Deal End Date "+privateDeal.getEndDate());
1063
					logger.info("Has COD on deal: " + privateDeal.isIsCod());
1064
					logger.info("Response" + catalogClient_Prod.addOrUpdatePrivateDeal(privateDeal));
1065
					logger.info("Updated Private deal: " + item.getId());
1066
				}
1067
				else{
1068
					logger.info("Skipping Private deal: " + item.getId());
1069
					logger.info("Deal Price "+privateDeal.getDealPrice());
1070
					logger.info("Deal Start Date "+privateDeal.getStartDate());
1071
					logger.info("Deal End Date "+privateDeal.getEndDate());
1072
				}
1073
 
11671 vikram.rag 1074
			} catch (Exception e) {
1075
				logger.error("Error while updating prices on production", e);
1076
				return "Error while updating all prices on production. Some of the prices may not have been  updated";
1077
			}
1078
		}
1079
 
1080
		try {
1081
			ContentClient contentServiceClient = new ContentClient();
1082
			ContentService.Client contentClient = contentServiceClient.getClient();
1083
 
1084
			contentClient.pushContentToProduction(items.get(0).getCatalogItemId());
1085
		} catch (TTransportException e) {
1086
			logger.error("Error while establishing connection to the content server", e);
1087
			return "Error generating content. Prices updated successfully.";
1088
		} catch (TException e) {
1089
			logger.error("Error while pushing content to production", e);
1090
			return "Error generating content. Prices updated successfully.";
1091
		} catch (ContentServiceException e) {
1092
			logger.error("Error while pushing content to production", e);
1093
			return "Error generating content. Prices updated successfully.";
1094
		}
1095
 
1096
		return "Prices updated and content generated successfully";
1097
	}
1098
 
1099
	/**
1100
	 * Returns list of items with a particular status.
1101
	 * @param st
1102
	 * @return
1103
	 */
1104
	private List<Item> getItemsByStatus(status st, int start, int limit) {
1105
		List<Item> itemList = new ArrayList<Item>();
1106
		try {
1107
			CatalogClient catalogServiceClient = new CatalogClient();
1108
			Client catalogClient = catalogServiceClient.getClient();
1109
 
1110
			List<in.shop2020.model.v1.catalog.Item> thriftItems = catalogClient.getAllItemsByStatusInRange(st, start, limit);
1111
 
1112
			for(in.shop2020.model.v1.catalog.Item thriftItem : thriftItems) {
1113
				itemList.add(getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null, null, null, null));
1114
			}
1115
		} catch (Exception e) {
1116
			logger.error("Error while getting items by status: " + st, e);
1117
		}
1118
		return itemList;
1119
	}
1120
 
1121
	/**
1122
	 * Creates a new Item object and populates its attributes from thrift item passed as parameter.
1123
	 * Also creates a Map each for VendorItemPricing, VendorItemMapping, SourceItemPricing and SimilarItems and adds these maps to the
1124
	 * new Item object.
1125
	 * @param thriftItem
1126
	 * @param tVendorPricings
1127
	 * @param tVendorMappings
1128
	 * @param tSourceMappings
1129
	 * @param tSimilarItems
1130
	 * @param tVoucherMappings
1131
	 * @param stockPurchaseParams 
1132
	 * @return item object with attributes copied from thrift item object.
1133
	 */
1134
	private Item getItemFromThriftItem(in.shop2020.model.v1.catalog.Item thriftItem, 
1135
			List<in.shop2020.model.v1.inventory.VendorItemPricing> tVendorPricings, 
1136
			List<in.shop2020.model.v1.inventory.VendorItemMapping> tVendorMappings,
1137
			List<in.shop2020.model.v1.catalog.SourceItemPricing> tSourceMappings,
1138
			List<in.shop2020.model.v1.catalog.Item> tSimilarItems, 
1139
			in.shop2020.model.v1.inventory.ItemInventory tItemInventory, 
1140
			List<in.shop2020.model.v1.catalog.VoucherItemMapping> tVoucherMappings, 
1141
			ItemStockPurchaseParams tStockPurchaseParams, Map<Long,String> saleHistory, Long freebieItemId){
1142
 
1143
		Map<String, VendorItemMapping> vItemMap = new HashMap<String, VendorItemMapping>();
1144
		VendorItemMapping vItemMapping;
1145
		if(tVendorMappings != null) {
1146
			for(in.shop2020.model.v1.inventory.VendorItemMapping vim : tVendorMappings) {
1147
				vItemMapping = new VendorItemMapping();
1148
				vItemMapping.setVendorId(vim.getVendorId());
1149
				vItemMapping.setItemKey(vim.getItemKey());
1150
				vItemMap.put(vItemMapping.getVendorId() + Item.KEY_SEPARATOR + vim.getItemKey(), vItemMapping);
1151
			}
1152
		}
1153
 
1154
		Map<Long, VendorPricings> vendorPricingMap = new HashMap<Long, VendorPricings>();
1155
		VendorPricings vPricings;
1156
		if(tVendorPricings != null) {
1157
			for(in.shop2020.model.v1.inventory.VendorItemPricing vip : tVendorPricings) {
1158
				vPricings = new VendorPricings();
1159
				vPricings.setVendorId(vip.getVendorId());
1160
				vPricings.setMop(vip.getMop());
1161
				vPricings.setDealerPrice(vip.getDealerPrice());
1162
				vPricings.setTransferPrice(vip.getTransferPrice());
1163
				vPricings.setNlc(vip.getNlc());
1164
				vendorPricingMap.put(vPricings.getVendorId(), vPricings);
1165
			}
1166
		}
1167
 
1168
		Map<Long, SourcePricings> sourcePricingMap = new HashMap<Long, SourcePricings>();
1169
		SourcePricings sPricings;
1170
		if(tSourceMappings != null) {
1171
			for(in.shop2020.model.v1.catalog.SourceItemPricing sip : tSourceMappings) {
1172
				sPricings = new SourcePricings();
1173
				sPricings.setSourceId(sip.getSourceId());
1174
				sPricings.setMrp(sip.getMrp());
1175
				sPricings.setSellingPrice(sip.getSellingPrice());
1176
				sourcePricingMap.put(sPricings.getSourceId(), sPricings);
1177
			}
1178
		}
1179
 
1180
		Map<Long, Item> SimilarItemslist = new HashMap<Long, Item>();
1181
		Item sItems;
1182
		if(tSimilarItems != null) {
1183
			for(in.shop2020.model.v1.catalog.Item sit : tSimilarItems) {
1184
				sItems = new Item();
1185
				sItems.setCatalogItemId(sit.getCatalogItemId());
1186
				sItems.setProductGroup(sit.getProductGroup());
1187
				sItems.setBrand(sit.getBrand());
1188
				sItems.setModelNumber(sit.getModelNumber());
1189
				sItems.setModelName(sit.getModelName());
1190
				sItems.setContentCategory(CategoryManager.getCategoryManager().getCategoryLabel(sit.getCategory()));
1191
				SimilarItemslist.put(sit.getCatalogItemId(), sItems);
1192
			}
1193
		}
1194
 
1195
		Map<Long, ItemInventory> itemInventoryMap = new HashMap<Long, ItemInventory>();
1196
		ItemInventory warehousedata;
1197
		if(tItemInventory != null) {
1198
			Map<Long, Long> availabilityMap = tItemInventory.getAvailability();
1199
			Map<Long, Long> reservedMap = tItemInventory.getReserved();
1200
			Map<Long, Long> heldMap = tItemInventory.getHeld();
1201
			for(Entry<Long, Long> availability : availabilityMap.entrySet()) {
1202
				Map<Integer, Long> heldInventoryMap = new HashMap<Integer, Long>();
1203
				warehousedata = new ItemInventory();
1204
				warehousedata.setWarehouseId(availability.getKey());
1205
				warehousedata.setAvailability(availability.getValue());
1206
				warehousedata.setReserved(reservedMap.get(availability.getKey()));
1207
				warehousedata.setHeld(heldMap.get(availability.getKey()));
1208
				try {
1209
					if(warehousedata.getHeld()>0) {
1210
						InventoryService.Client inventoryClient = new InventoryClient().getClient();
1211
						heldInventoryMap = inventoryClient.getHeldInventoryMapForItem(thriftItem.getId(), availability.getKey());
1212
					}
1213
					if(heldInventoryMap.size()>0) {
1214
						for(Integer source : heldInventoryMap.keySet()) {
1215
							switch(source) {
1216
							case EBAYSOURCE: warehousedata.setEbayHeld(heldInventoryMap.get(source));
1217
							break;
1218
							case SNAPDEALSOURCE: warehousedata.setSnapdealHeld(heldInventoryMap.get(source));
1219
							break;
1220
							case FLIPKARTSOURCE: warehousedata.setFlipkartHeld(heldInventoryMap.get(source));
1221
							}
1222
						}
1223
					}
1224
				} catch (Exception e) {
1225
					logger.error("Error in getting data from holdInventoryDetail for itemId " + thriftItem.getId() + 
1226
							" and warehouse " +availability.getKey());
1227
				}
1228
				itemInventoryMap.put(warehousedata.getWarehouseId(), warehousedata);
1229
			}
1230
		}
1231
		else {
1232
			itemInventoryMap = null;
1233
		}
1234
 
1235
		Map<String, VoucherItemMapping> voucherMap = new HashMap<String, VoucherItemMapping>();
1236
		VoucherItemMapping voucher;
1237
		if(tVoucherMappings != null) {
1238
			for(in.shop2020.model.v1.catalog.VoucherItemMapping tvoucher : tVoucherMappings) {
1239
				voucher = new VoucherItemMapping(tvoucher.getAmount(), VoucherType.findByValue((int) tvoucher.getVoucherType()).name());
1240
				voucherMap.put(VoucherType.findByValue((int) tvoucher.getVoucherType()).name(), voucher);
1241
			}
1242
		}
1243
 
1244
		in.shop2020.catalog.dashboard.shared.ItemStockPurchaseParams stockPurchaseParams = 
1245
			new in.shop2020.catalog.dashboard.shared.ItemStockPurchaseParams();
1246
		if(tStockPurchaseParams != null) {
1247
			stockPurchaseParams.setItem_id(tStockPurchaseParams.getItem_id());
1248
			stockPurchaseParams.setMinStockLevel(tStockPurchaseParams.getMinStockLevel());
1249
			stockPurchaseParams.setNumOfDaysStock(tStockPurchaseParams.getNumOfDaysStock());
1250
		}
1251
 
1252
		Item item = new Item(thriftItem.getId(),
1253
				thriftItem.getProductGroup(),
1254
				thriftItem.getBrand(),
1255
				thriftItem.getModelNumber(),
1256
				thriftItem.getModelName(),
1257
				thriftItem.getColor(),
1258
				CategoryManager.getCategoryManager().getCategoryLabel(thriftItem.getCategory()),
1259
				thriftItem.getCategory(),
1260
				thriftItem.getComments(),
1261
				thriftItem.getCatalogItemId(),
1262
				thriftItem.getFeatureId(),
1263
				thriftItem.getFeatureDescription(),
1264
				thriftItem.isSetMrp() ? thriftItem.getMrp() : null,
1265
						thriftItem.isSetSellingPrice() ? thriftItem.getSellingPrice() : null,
1266
								thriftItem.isSetWeight() ? thriftItem.getWeight() : null,
1267
										thriftItem.getAddedOn(),
1268
										thriftItem.getStartDate(),
1269
										thriftItem.isSetComingSoonStartDate() ? thriftItem.getComingSoonStartDate() : null ,
1270
												thriftItem.isSetExpectedArrivalDate() ? thriftItem.getExpectedArrivalDate() : null ,
1271
														thriftItem.getRetireDate(),
1272
														thriftItem.getUpdatedOn(),
1273
														thriftItem.getItemStatus().name(),
1274
														thriftItem.getItemStatus().getValue(),
1275
														thriftItem.getStatus_description(),
1276
														thriftItem.getBestDealText(),
1277
														thriftItem.getBestDealsDetailsText(),
1278
														thriftItem.getBestDealsDetailsLink(),
1279
														thriftItem.isSetBestDealValue() ? thriftItem.getBestDealValue() : null,
1280
																thriftItem.isSetBestSellingRank() ? thriftItem.getBestSellingRank() : null,
1281
																		thriftItem.isDefaultForEntity(),
1282
																		thriftItem.isRisky(),
1283
																		thriftItem.isSetExpectedDelay() ? thriftItem.getExpectedDelay() : null,
1284
																				thriftItem.isIsWarehousePreferenceSticky(),
1285
																				thriftItem.isHasItemNo(),
1286
																				ItemType.SERIALIZED.equals(thriftItem.getType()),
1287
																				thriftItem.isSetShowSellingPrice() ? thriftItem.isShowSellingPrice() : false,
1288
																						thriftItem.isHoldOverride(),
1289
																						thriftItem.isSetPreferredVendor() ? thriftItem.getPreferredVendor() : null,
1290
																								thriftItem.isSetPreferredInsurer() ? thriftItem.getPreferredInsurer() : null,		
1291
																										itemInventoryMap,
1292
																										vendorPricingMap,
1293
																										vItemMap,
1294
																										sourcePricingMap,
1295
																										SimilarItemslist,
1296
																										voucherMap, 
1297
																										stockPurchaseParams.getNumOfDaysStock(), 
1298
																										stockPurchaseParams.getMinStockLevel(), 
1299
																										saleHistory, 
1300
																										freebieItemId,
1301
																										thriftItem.getAsin(),
1302
																										thriftItem.getHoldInventory(),
1303
																										thriftItem.getDefaultInventory());
1304
		return item;
1305
	}
1306
 
1307
	/**
1308
	 * 
1309
	 * @return True if push to production count is less than maximum allowed.
1310
	 */
1311
	private boolean canPushToProduction() {
1312
		int count = getPushToProdCount(logFile);
1313
		return count < maxCount;
1314
	}
1315
 
1316
	/**
1317
	 * If this is the first attempt to push to production for current date, returns 0
1318
	 * else reads number of lines from daily rolling log file to get the count.
1319
	 * @return push to production count for current date
1320
	 */
1321
	private int getPushToProdCount(String logfile) {
1322
		// logfile is "/var/log/services/pushToProductionCount/pushToProd.log"
1323
		// this should also be set in log4j.properties
1324
		int lineCount = 0;
1325
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
1326
		Date currentDate = Calendar.getInstance().getTime();
1327
		if(pushToProdDate == null ||  !dateFormat.format(pushToProdDate).equals(dateFormat.format(currentDate))) {
1328
			pushToProdDate = currentDate;
1329
			return lineCount;
1330
		}
1331
		try {
1332
			BufferedReader br = new BufferedReader(new FileReader(logfile));
1333
			while (br.readLine() != null) {
1334
				lineCount++;
1335
			}
1336
		} catch (IOException e) {
1337
			logger.error("Error while reading the log file", e);
1338
		}
1339
		return lineCount;
1340
	}
1341
 
4423 phani.kuma 1342
	@Override
1343
	public boolean deleteSimilarItem(long itemId, long catalogItemId) {
1344
		try{
11671 vikram.rag 1345
			CatalogClient catalogServiceClient = new CatalogClient();
1346
			Client catalogClient = catalogServiceClient.getClient();
4423 phani.kuma 1347
 
11671 vikram.rag 1348
			return catalogClient.deleteSimilarItem(itemId, catalogItemId);
4423 phani.kuma 1349
 
11671 vikram.rag 1350
		}catch(Exception e){
1351
			logger.error("Error while deleting the SimilarItems for: " + itemId, e);
1352
		}
1353
		return false;
4423 phani.kuma 1354
	}
1355
 
1356
	@Override
1357
	public Item addSimilarItem(long itemId, long catalogItemId) {
1358
		try{
11671 vikram.rag 1359
			CatalogClient catalogServiceClient = new CatalogClient();
1360
			Client catalogClient = catalogServiceClient.getClient();
1361
			in.shop2020.model.v1.catalog.Item thriftItem = catalogClient.addSimilarItem(itemId, catalogItemId);;
4423 phani.kuma 1362
 
11671 vikram.rag 1363
			return getItemFromThriftItem(thriftItem, null, null, null, null, null, null, null, null, null,null,null);
1364
		}catch(Exception e){
1365
			logger.error("Error while adding the SimilarItems for: " + itemId, e);
1366
		}
1367
		return null;
4423 phani.kuma 1368
	}
4431 phani.kuma 1369
 
1370
	@Override
1371
	public Map<Long, ItemInventory> getProdItemInventory(long itemId) {
1372
		try {
11671 vikram.rag 1373
			// Initialize client for production server
1374
			CatalogClient catalogServiceClient_Prod = new CatalogClient(ConfigClientKeys.catalog_service_server_host_prod.toString(),
1375
					ConfigClientKeys.catalog_service_server_port.toString());
1376
			Client catalogClient_Prod = catalogServiceClient_Prod.getClient();
1377
			InventoryClient inventoryServiceClient = new InventoryClient();
1378
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
1379
			in.shop2020.model.v1.inventory.ItemInventory thriftItemInventory = inventoryClient.getItemInventoryByItemId(itemId);
1380
 
1381
			Map<Long, ItemInventory> itemInventoryMap = new HashMap<Long, ItemInventory>();
1382
			ItemInventory warehousedata;
1383
			if(thriftItemInventory != null) {
1384
				Map<Long, Long> availabilityMap = thriftItemInventory.getAvailability();
1385
				Map<Long, Long> reservedMap = thriftItemInventory.getReserved();
1386
				Map<Long, Long> heldMap = thriftItemInventory.getHeld();
1387
				for(Entry<Long, Long> availability : availabilityMap.entrySet()) {
1388
					Map<Integer, Long> heldInventoryMap = new HashMap<Integer, Long>();
1389
					warehousedata = new ItemInventory();
1390
					warehousedata.setWarehouseId(availability.getKey());
1391
					warehousedata.setAvailability(availability.getValue());
1392
					warehousedata.setReserved(reservedMap.get(availability.getKey()));
1393
					warehousedata.setHeld(heldMap.get(availability.getKey()));
1394
					try {
1395
						if(warehousedata.getHeld()>0) {
1396
							heldInventoryMap = inventoryClient.getHeldInventoryMapForItem(itemId, availability.getKey());
1397
						}
1398
						if(heldInventoryMap.size()>0) {
1399
							for(Integer source : heldInventoryMap.keySet()) {
1400
								switch(source) {
1401
								case EBAYSOURCE: warehousedata.setEbayHeld(heldInventoryMap.get(source));
1402
								break;
1403
								case SNAPDEALSOURCE: warehousedata.setSnapdealHeld(heldInventoryMap.get(source));
1404
								break;
1405
								case FLIPKARTSOURCE: warehousedata.setFlipkartHeld(heldInventoryMap.get(source));
1406
								}
1407
							}
1408
						} 
1409
					}catch (Exception e) {
1410
						logger.error("Error in getting data from holdInventoryDetail for itemId " + itemId + 
1411
								" and warehouse " +availability.getKey());
1412
					}
1413
					itemInventoryMap.put(warehousedata.getWarehouseId(), warehousedata);
1414
				}
1415
			}
1416
			else {
1417
				itemInventoryMap = null;
1418
			}
1419
			return itemInventoryMap;
1420
		} catch (Exception e) {
1421
			logger.error("Error while updating item's risky flag on staging", e);
1422
		}
4431 phani.kuma 1423
		return null;
1424
	}
4649 phani.kuma 1425
 
1426
	@Override
1427
	public boolean addAuthorizationLog(long itemId, String username, String message) {
1428
		try{
11671 vikram.rag 1429
			CatalogClient catalogServiceClient = new CatalogClient();
1430
			Client catalogClient = catalogServiceClient.getClient();
4649 phani.kuma 1431
 
11671 vikram.rag 1432
			return catalogClient.addAuthorizationLog(itemId, username, message);
4649 phani.kuma 1433
 
11671 vikram.rag 1434
		}catch(Exception e){
1435
			logger.error("Error while adding the event for: " + itemId, e);
1436
		}
4649 phani.kuma 1437
		return false;
1438
	}
1439
 
1440
	@Override
1441
	public Map<String, String> getConfigdataforPriceCompare() {
1442
		Map<String, String> ConfigMap = new HashMap<String, String>();
1443
		try {
1444
			ConfigMap.put("courier_cost_factor", ConfigClient.getClient().get(ConfigClientKeys.courier_cost_factor.toString()));
11671 vikram.rag 1445
			ConfigMap.put("courier_weight_factor", ConfigClient.getClient().get(ConfigClientKeys.courier_weight_factor.toString()));
1446
			ConfigMap.put("breakeven_divisor", ConfigClient.getClient().get(ConfigClientKeys.breakeven_divisor.toString()));
1447
			ConfigMap.put("breakeven_additon_factor", ConfigClient.getClient().get(ConfigClientKeys.breakeven_additon_factor.toString()));
1448
			ConfigMap.put("transfer_price_percentage", ConfigClient.getClient().get(ConfigClientKeys.transfer_price_percentage.toString()));
1449
			ConfigMap.put("transfer_price_factor", ConfigClient.getClient().get(ConfigClientKeys.transfer_price_factor.toString()));
1450
		} catch(ConfigException ce) {
1451
			logger.error("Unable to connect to the config server. Setting sensible defaults.", ce);
1452
			ConfigMap.put("courier_cost_factor", "60");
1453
			ConfigMap.put("courier_weight_factor", "500");
1454
			ConfigMap.put("breakeven_divisor", "0.98");
1455
			ConfigMap.put("breakeven_additon_factor", "50");
1456
			ConfigMap.put("transfer_price_percentage", "2");
1457
			ConfigMap.put("transfer_price_factor", "50");
1458
		}
4649 phani.kuma 1459
		return ConfigMap;
1460
	}
4957 phani.kuma 1461
 
1462
	@Override
1463
	public List<String> getAllCategories() {
1464
		List<String> categoryList = new ArrayList<String>();
1465
		List<Long> parentCategoryIDs = Arrays.asList(new Long[] {(long) 0,(long) 10001,(long) 10009,(long) 10049});
11671 vikram.rag 1466
		try {
1467
			CatalogClient catalogServiceClient = new CatalogClient();
1468
			Client catalogClient = catalogServiceClient.getClient();
4957 phani.kuma 1469
 
11671 vikram.rag 1470
			List<in.shop2020.model.v1.catalog.Category> categories = catalogClient.getAllCategories();
4957 phani.kuma 1471
 
11671 vikram.rag 1472
			for(in.shop2020.model.v1.catalog.Category category : categories) {
1473
				if(!parentCategoryIDs.contains(category.getParent_category_id())){
1474
					categoryList.add(category.getDisplay_name());
1475
				}
1476
				else{
1477
					continue;
1478
				}
1479
			}
1480
		} catch (Exception e) {
1481
			logger.error("Error while getting all the categories: ", e);
1482
		}
1483
		return categoryList;
4957 phani.kuma 1484
	}
1485
 
1486
	@Override
1487
	public List<String> getAllBrands() {
1488
		List<String> brandsList = new ArrayList<String>();
11671 vikram.rag 1489
		try {
1490
			CatalogClient catalogServiceClient = new CatalogClient();
1491
			Client catalogClient = catalogServiceClient.getClient();
4957 phani.kuma 1492
 
11671 vikram.rag 1493
			brandsList = catalogClient.getAllBrands();
1494
		} catch (Exception e) {
1495
			logger.error("Error while getting all the categories: ", e);
1496
		}
1497
		return brandsList;
4957 phani.kuma 1498
	}
5427 amit.gupta 1499
 
5504 phani.kuma 1500
	@Override
5516 phani.kuma 1501
	public boolean deleteVoucher(Long catalogItemId, Long voucherType) {
5504 phani.kuma 1502
		try{
11671 vikram.rag 1503
			CatalogClient catalogServiceClient = new CatalogClient();
1504
			Client catalogClient = catalogServiceClient.getClient();
5504 phani.kuma 1505
 
11671 vikram.rag 1506
			return catalogClient.deleteVoucherForItem(catalogItemId, voucherType);
5504 phani.kuma 1507
 
11671 vikram.rag 1508
		}catch(Exception e){
1509
			logger.error("Error while deleting the Voucher for: " + catalogItemId, e);
1510
		}
1511
		return false;
5504 phani.kuma 1512
	}
1513
 
1514
	@Override
5516 phani.kuma 1515
	public boolean addVoucher(Long catalogItemId, Long voucherType, long voucherAmount) {
5504 phani.kuma 1516
		try{
11671 vikram.rag 1517
			CatalogClient catalogServiceClient = new CatalogClient();
1518
			Client catalogClient = catalogServiceClient.getClient();
5504 phani.kuma 1519
 
11671 vikram.rag 1520
			return catalogClient.addupdateVoucherForItem(catalogItemId, voucherType, voucherAmount);
5504 phani.kuma 1521
 
11671 vikram.rag 1522
		}catch(Exception e){
1523
			logger.error("Error while adding the Voucher for: " + catalogItemId, e);
1524
		}
5504 phani.kuma 1525
		return false;
1526
	}
1527
	@Override
5516 phani.kuma 1528
	public Map<Long, String> getvoucherTypes() {
1529
		Map<Long, String> voucherType = new HashMap<Long, String>();
5504 phani.kuma 1530
		for(VoucherType voucher : VoucherType.values())
1531
		{
5516 phani.kuma 1532
			voucherType.put((long) voucher.getValue(), voucher.name());
5504 phani.kuma 1533
		}
1534
		return voucherType;
1535
	}
1536
 
5586 phani.kuma 1537
	@Override
1538
	public boolean getConfigforentityIdMandatory() {
1539
		try {
1540
			String entityId_mandatory = ConfigClient.getClient().get(ConfigClientKeys.entityId_mandatory.toString());
1541
			if (entityId_mandatory.equals("TRUE")) {
1542
				return true;
1543
			}
11671 vikram.rag 1544
		} catch(ConfigException ce) {
1545
			logger.error("Unable to connect to the config server. Setting sensible defaults.", ce);
1546
		}
5586 phani.kuma 1547
		return false;
1548
	}
1549
 
1550
	@Override
1551
	public boolean checkEntityId(long entityId) {
1552
		try {
11671 vikram.rag 1553
			CatalogClient catalogServiceClient = new CatalogClient(ConfigClientKeys.catalog_service_server_host_master.toString(), ConfigClientKeys.catalog_service_server_port.toString());
1554
			Client catalogClient = catalogServiceClient.getClient();
1555
			return catalogClient.isValidCatalogItemId(entityId);
1556
		} catch (Exception e) {
1557
			logger.error("Error while checking for a Catalog Item Id: ", e);
1558
		}
5586 phani.kuma 1559
		return false;
1560
	}
1561
 
6096 amit.gupta 1562
	@Override
1563
	public String updateExpectedDelayOnProd(Item item) {
1564
		try{
11671 vikram.rag 1565
			CatalogClient catalogServiceClient_Prod = new CatalogClient( 
1566
					ConfigClientKeys.catalog_service_server_host_prod.toString(),
1567
					ConfigClientKeys.catalog_service_server_port.toString());
6096 amit.gupta 1568
 
11671 vikram.rag 1569
			Client catalogClient_Prod = catalogServiceClient_Prod.getClient();
6096 amit.gupta 1570
 
11671 vikram.rag 1571
 
1572
			in.shop2020.model.v1.catalog.Item tItem = catalogClient_Prod.getItem(item.getId());
1573
			if(item.getExpectedDelay() != null) {
1574
				tItem.setExpectedDelay(item.getExpectedDelay());
1575
				if(item.isItemType()) {
1576
					tItem.setType(ItemType.SERIALIZED);
1577
				}
1578
				else {
1579
					tItem.setType(ItemType.NON_SERIALIZED);
1580
				}
1581
				long rItemId;
1582
				if((rItemId = catalogClient_Prod.updateItem(tItem)) != item.getId()) {
1583
					logger.error("Error updating item on production, returned Item Id: " + rItemId);
1584
					return "Error updating expected delay on production";
1585
				}
1586
				InventoryClient inventoryServiceClient= new InventoryClient();
1587
				InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
1588
				inventoryClient.clearItemAvailabilityCacheForItem(rItemId);
1589
				logger.info("Successfully updated item: " + item.getId());
1590
				return "Expected delay successfully updated on prod"; 
1591
			} else {
1592
				return "Error:expected delay should not be null";
1593
			}
1594
		} catch (Exception e) {
1595
			logger.error("Error while updating expected delay on production", e);
1596
			return "Error while updating expected delay on production";
1597
		}
6096 amit.gupta 1598
	}
1599
 
6838 vikram.rag 1600
	@Override
1601
	public Map<Long, String> getAllInsurers() {
11671 vikram.rag 1602
		Map<Long, String> insurersMap = new HashMap<Long, String>();
1603
		try {
1604
			CatalogClient catalogServiceClient = new CatalogClient();
1605
			in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = catalogServiceClient.getClient();
6096 amit.gupta 1606
 
11671 vikram.rag 1607
			List<Insurer> insurers = catalogClient.getAllInsurers();
1608
 
1609
			for(in.shop2020.model.v1.catalog.Insurer i : insurers) {
1610
				insurersMap.put(i.getId(), i.getName());
1611
			}
1612
		} catch (Exception e) {
1613
			logger.error("Error while getting all the vendors: ", e);
1614
		}
1615
		return insurersMap;
6838 vikram.rag 1616
	}
11671 vikram.rag 1617
 
10484 vikram.rag 1618
	private Item getItemFromThriftItem(in.shop2020.model.v1.catalog.Item thriftItem, 
11671 vikram.rag 1619
			List<in.shop2020.model.v1.inventory.VendorItemPricing> tVendorPricings, 
1620
			List<in.shop2020.model.v1.inventory.VendorItemMapping> tVendorMappings,
1621
			List<in.shop2020.model.v1.catalog.SourceItemPricing> tSourceMappings,
1622
			List<in.shop2020.model.v1.catalog.Item> tSimilarItems, 
1623
			in.shop2020.model.v1.inventory.ItemInventory tItemInventory, 
1624
			List<in.shop2020.model.v1.catalog.VoucherItemMapping> tVoucherMappings, 
1625
			ItemStockPurchaseParams tStockPurchaseParams, Map<Long,String> saleHistory, Long freebieItemId,Map<String,String> stateNameVatPercentageMap,in.shop2020.model.v1.catalog.PrivateDeal tPrivateDeal){
6838 vikram.rag 1626
 
11671 vikram.rag 1627
		Map<String, VendorItemMapping> vItemMap = new HashMap<String, VendorItemMapping>();
1628
		VendorItemMapping vItemMapping;
1629
		if(tVendorMappings != null) {
1630
			for(in.shop2020.model.v1.inventory.VendorItemMapping vim : tVendorMappings) {
1631
				vItemMapping = new VendorItemMapping();
1632
				vItemMapping.setVendorId(vim.getVendorId());
1633
				vItemMapping.setItemKey(vim.getItemKey());
1634
				vItemMap.put(vItemMapping.getVendorId() + Item.KEY_SEPARATOR + vim.getItemKey(), vItemMapping);
1635
			}
1636
		}
6838 vikram.rag 1637
 
11671 vikram.rag 1638
		Map<Long, VendorPricings> vendorPricingMap = new HashMap<Long, VendorPricings>();
1639
		VendorPricings vPricings;
1640
		if(tVendorPricings != null) {
1641
			for(in.shop2020.model.v1.inventory.VendorItemPricing vip : tVendorPricings) {
1642
				vPricings = new VendorPricings();
1643
				vPricings.setVendorId(vip.getVendorId());
1644
				vPricings.setMop(vip.getMop());
1645
				vPricings.setDealerPrice(vip.getDealerPrice());
1646
				vPricings.setTransferPrice(vip.getTransferPrice());
1647
				vPricings.setNlc(vip.getNlc());
1648
				vendorPricingMap.put(vPricings.getVendorId(), vPricings);
1649
			}
1650
		}
6096 amit.gupta 1651
 
11671 vikram.rag 1652
		Map<Long, SourcePricings> sourcePricingMap = new HashMap<Long, SourcePricings>();
1653
		SourcePricings sPricings;
1654
		if(tSourceMappings != null) {
1655
			for(in.shop2020.model.v1.catalog.SourceItemPricing sip : tSourceMappings) {
1656
				sPricings = new SourcePricings();
1657
				sPricings.setSourceId(sip.getSourceId());
1658
				sPricings.setMrp(sip.getMrp());
1659
				sPricings.setSellingPrice(sip.getSellingPrice());
1660
				sourcePricingMap.put(sPricings.getSourceId(), sPricings);
1661
			}
1662
		}
10484 vikram.rag 1663
 
11671 vikram.rag 1664
		Map<Long, Item> SimilarItemslist = new HashMap<Long, Item>();
1665
		Item sItems;
1666
		if(tSimilarItems != null) {
1667
			for(in.shop2020.model.v1.catalog.Item sit : tSimilarItems) {
1668
				sItems = new Item();
1669
				sItems.setCatalogItemId(sit.getCatalogItemId());
1670
				sItems.setProductGroup(sit.getProductGroup());
1671
				sItems.setBrand(sit.getBrand());
1672
				sItems.setModelNumber(sit.getModelNumber());
1673
				sItems.setModelName(sit.getModelName());
1674
				sItems.setContentCategory(CategoryManager.getCategoryManager().getCategoryLabel(sit.getCategory()));
1675
				SimilarItemslist.put(sit.getCatalogItemId(), sItems);
1676
			}
1677
		}
1678
 
1679
		Map<Long, ItemInventory> itemInventoryMap = new HashMap<Long, ItemInventory>();
1680
		ItemInventory warehousedata;
1681
		if(tItemInventory != null) {
1682
			Map<Long, Long> availabilityMap = tItemInventory.getAvailability();
1683
			Map<Long, Long> reservedMap = tItemInventory.getReserved();
1684
			Map<Long, Long> heldMap = tItemInventory.getHeld();
1685
			for(Entry<Long, Long> availability : availabilityMap.entrySet()) {
1686
				Map<Integer, Long> heldInventoryMap = new HashMap<Integer, Long>();
1687
				warehousedata = new ItemInventory();
1688
				warehousedata.setWarehouseId(availability.getKey());
1689
				warehousedata.setAvailability(availability.getValue());
1690
				warehousedata.setReserved(reservedMap.get(availability.getKey()));
1691
				warehousedata.setHeld(heldMap.get(availability.getKey()));
1692
				try {
1693
					if(warehousedata.getHeld()>0) {
1694
						InventoryService.Client inventoryClient = new InventoryClient().getClient();
1695
						heldInventoryMap = inventoryClient.getHeldInventoryMapForItem(thriftItem.getId(), availability.getKey());
1696
					}
1697
					if(heldInventoryMap.size()>0) {
1698
						for(Integer source : heldInventoryMap.keySet()) {
1699
							switch(source) {
1700
							case EBAYSOURCE: warehousedata.setEbayHeld(heldInventoryMap.get(source));
1701
							break;
1702
							case SNAPDEALSOURCE: warehousedata.setSnapdealHeld(heldInventoryMap.get(source));
1703
							break;
1704
							case FLIPKARTSOURCE: warehousedata.setFlipkartHeld(heldInventoryMap.get(source));
1705
							}
1706
						}
1707
					}
1708
				} catch (Exception e) {
1709
					logger.error("Error in getting data from holdInventoryDetail for itemId " + thriftItem.getId() + 
1710
							" and warehouse " +availability.getKey());
1711
				}
1712
				itemInventoryMap.put(warehousedata.getWarehouseId(), warehousedata);
1713
			}
1714
		}
1715
		else {
1716
			itemInventoryMap = null;
1717
		}
1718
 
1719
		Map<String, VoucherItemMapping> voucherMap = new HashMap<String, VoucherItemMapping>();
1720
		VoucherItemMapping voucher;
1721
		if(tVoucherMappings != null) {
1722
			for(in.shop2020.model.v1.catalog.VoucherItemMapping tvoucher : tVoucherMappings) {
1723
				voucher = new VoucherItemMapping(tvoucher.getAmount(), VoucherType.findByValue((int) tvoucher.getVoucherType()).name());
1724
				voucherMap.put(VoucherType.findByValue((int) tvoucher.getVoucherType()).name(), voucher);
1725
			}
1726
		}
1727
 
1728
		in.shop2020.catalog.dashboard.shared.ItemStockPurchaseParams stockPurchaseParams = 
1729
			new in.shop2020.catalog.dashboard.shared.ItemStockPurchaseParams();
1730
		if(tStockPurchaseParams != null) {
1731
			stockPurchaseParams.setItem_id(tStockPurchaseParams.getItem_id());
1732
			stockPurchaseParams.setMinStockLevel(tStockPurchaseParams.getMinStockLevel());
1733
			stockPurchaseParams.setNumOfDaysStock(tStockPurchaseParams.getNumOfDaysStock());
1734
		}
1735
		in.shop2020.catalog.dashboard.shared.PrivateDeal privateDeal=null;
1736
		if(tPrivateDeal!=null){
1737
			privateDeal= new in.shop2020.catalog.dashboard.shared.PrivateDeal();
11976 vikram.rag 1738
			if(tPrivateDeal.isSetDealFreebieItemId()){
1739
				privateDeal.setDealFreebieItemId(tPrivateDeal.getDealFreebieItemId());
1740
			}
1741
			else{
1742
				privateDeal.setDealFreebieItemId(freebieItemId);
1743
			}
11671 vikram.rag 1744
			privateDeal.setItem_id(tPrivateDeal.getItem_id());
1745
			privateDeal.setDealPrice(tPrivateDeal.getDealPrice());
1746
			if(tPrivateDeal.isSetStartDate()){
1747
				privateDeal.setStartDate(tPrivateDeal.getStartDate());
1748
			}
1749
			else{
1750
				privateDeal.setStartDate(null);
1751
			}
1752
			if(tPrivateDeal.isSetEndDate()){
1753
				privateDeal.setEndDate(tPrivateDeal.getEndDate());
1754
			}
1755
			else{
1756
				privateDeal.setEndDate(null);
1757
			}
1758
			privateDeal.setRank(tPrivateDeal.getRank());
11976 vikram.rag 1759
			if(tPrivateDeal.isSetIsCod()){
1760
				privateDeal.setCod(tPrivateDeal.isIsCod());
1761
			}
1762
			else{
1763
				privateDeal.setCod(true);
1764
			}
1765
			if(tPrivateDeal.isSetDealFreebieOption()){
1766
				privateDeal.setDealFreebieOption(tPrivateDeal.getDealFreebieOption());
1767
			}
1768
			else{
1769
				privateDeal.setDealFreebieOption(1L);
1770
			}
1771
			if(tPrivateDeal.isSetDealText()){
11671 vikram.rag 1772
				privateDeal.setDealText(tPrivateDeal.getDealText());
1773
			}
1774
			else{
11976 vikram.rag 1775
				if(thriftItem.isSetBestDealText()){
1776
					privateDeal.setDealText(thriftItem.getBestDealText());
1777
				}
1778
				else{
1779
					privateDeal.setDealText("");
1780
				}
11671 vikram.rag 1781
			}
11976 vikram.rag 1782
			if(tPrivateDeal.isSetDealTextOption()){
1783
				privateDeal.setDealTextOption(tPrivateDeal.getDealTextOption());
1784
			}
1785
			else{
1786
				privateDeal.setDealTextOption(1L);
1787
			}
1788
			if(tPrivateDeal.isSetIsActive()){
1789
				privateDeal.setActive(tPrivateDeal.isIsActive());
1790
			}
1791
			else{
1792
				privateDeal.setActive(false);
1793
			}
11671 vikram.rag 1794
		}
1795
		Item item = new Item(thriftItem.getId(),
1796
				thriftItem.getProductGroup(),
1797
				thriftItem.getBrand(),
1798
				thriftItem.getModelNumber(),
1799
				thriftItem.getModelName(),
1800
				thriftItem.getColor(),
1801
				CategoryManager.getCategoryManager().getCategoryLabel(thriftItem.getCategory()),
1802
				thriftItem.getCategory(),
1803
				thriftItem.getComments(),
1804
				thriftItem.getCatalogItemId(),
1805
				thriftItem.getFeatureId(),
1806
				thriftItem.getFeatureDescription(),
1807
				thriftItem.isSetMrp() ? thriftItem.getMrp() : null,
1808
						thriftItem.isSetSellingPrice() ? thriftItem.getSellingPrice() : null,
1809
								thriftItem.isSetWeight() ? thriftItem.getWeight() : null,
1810
										thriftItem.getAddedOn(),
1811
										thriftItem.getStartDate(),
1812
										thriftItem.isSetComingSoonStartDate() ? thriftItem.getComingSoonStartDate() : null ,
1813
												thriftItem.isSetExpectedArrivalDate() ? thriftItem.getExpectedArrivalDate() : null ,
1814
														thriftItem.getRetireDate(),
1815
														thriftItem.getUpdatedOn(),
1816
														thriftItem.getItemStatus().name(),
1817
														thriftItem.getItemStatus().getValue(),
1818
														thriftItem.getStatus_description(),
1819
														thriftItem.getBestDealText(),
1820
														thriftItem.getBestDealsDetailsText(),
1821
														thriftItem.getBestDealsDetailsLink(),
1822
														thriftItem.isSetBestDealValue() ? thriftItem.getBestDealValue() : null,
1823
																thriftItem.isSetBestSellingRank() ? thriftItem.getBestSellingRank() : null,
1824
																		thriftItem.isDefaultForEntity(),
1825
																		thriftItem.isRisky(),
1826
																		thriftItem.isSetExpectedDelay() ? thriftItem.getExpectedDelay() : null,
1827
																				thriftItem.isIsWarehousePreferenceSticky(),
1828
																				thriftItem.isHasItemNo(),
1829
																				ItemType.SERIALIZED.equals(thriftItem.getType()),
1830
																				thriftItem.isSetShowSellingPrice() ? thriftItem.isShowSellingPrice() : false,
1831
																						thriftItem.isHoldOverride(),
1832
																						thriftItem.isSetPreferredVendor() ? thriftItem.getPreferredVendor() : null,
1833
																								thriftItem.isSetPreferredInsurer() ? thriftItem.getPreferredInsurer() : null,		
1834
																										itemInventoryMap,
1835
																										vendorPricingMap,
1836
																										vItemMap,
1837
																										sourcePricingMap,
1838
																										SimilarItemslist,
1839
																										voucherMap, 
1840
																										stockPurchaseParams.getNumOfDaysStock(), 
1841
																										stockPurchaseParams.getMinStockLevel(), 
1842
																										saleHistory, 
1843
																										freebieItemId,
1844
																										thriftItem.getAsin(),
1845
																										thriftItem.getHoldInventory(),
1846
																										thriftItem.getDefaultInventory(),stateNameVatPercentageMap,privateDeal);
1847
		return item;
1848
	}
6530 vikram.rag 1849
}