Subversion Repositories SmartDukaan

Rev

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