Subversion Repositories SmartDukaan

Rev

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