Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
7283 kshitij.so 1
package in.shop2020.support.controllers;
2
 
7524 kshitij.so 3
import java.io.File;
7741 kshitij.so 4
import java.io.FileInputStream;
7524 kshitij.so 5
import java.io.IOException;
7365 kshitij.so 6
import java.util.HashMap;
7283 kshitij.so 7
import java.util.List;
8
import java.util.Map;
9
 
7591 kshitij.so 10
import javax.servlet.ServletContext;
7283 kshitij.so 11
import javax.servlet.ServletRequest;
12
import javax.servlet.http.HttpServletRequest;
7591 kshitij.so 13
import javax.servlet.http.HttpSession;
7283 kshitij.so 14
 
15
import in.shop2020.model.v1.catalog.Amazonlisted;
16
import in.shop2020.model.v1.catalog.CatalogServiceException;
17
import in.shop2020.model.v1.catalog.Item;
18
import in.shop2020.model.v1.inventory.AmazonInventorySnapshot;
19
import in.shop2020.model.v1.catalog.CatalogService.Client;
20
import in.shop2020.model.v1.inventory.InventoryServiceException;
7741 kshitij.so 21
import in.shop2020.model.v1.order.AmazonOrder;
7591 kshitij.so 22
import in.shop2020.support.utils.ReportsUtils;
7283 kshitij.so 23
import in.shop2020.thrift.clients.CatalogClient;
24
import in.shop2020.thrift.clients.InventoryClient;
7365 kshitij.so 25
import in.shop2020.thrift.clients.LogisticsClient;
7741 kshitij.so 26
import in.shop2020.thrift.clients.TransactionClient;
7365 kshitij.so 27
import in.shop2020.logistics.DeliveryType;
28
import in.shop2020.logistics.LogisticsInfo;
29
import in.shop2020.logistics.LogisticsServiceException;
30
import in.shop2020.logistics.PickUpType;
7283 kshitij.so 31
 
7524 kshitij.so 32
import org.apache.commons.io.FileUtils;
7365 kshitij.so 33
import org.apache.commons.lang.xwork.StringUtils;
7741 kshitij.so 34
import org.apache.poi.hssf.usermodel.HSSFSheet;
35
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
7591 kshitij.so 36
import org.apache.struts2.convention.annotation.InterceptorRef;
37
import org.apache.struts2.convention.annotation.InterceptorRefs;
7283 kshitij.so 38
import org.apache.struts2.convention.annotation.Result;
39
import org.apache.struts2.convention.annotation.Results;
40
import org.apache.struts2.interceptor.ServletRequestAware;
41
import org.apache.thrift.TException;
7741 kshitij.so 42
import org.apache.thrift.transport.TTransportException;
7283 kshitij.so 43
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
45
 
46
import com.opensymphony.xwork2.ValidationAwareSupport;
47
 
48
@SuppressWarnings("serial")
7591 kshitij.so 49
@InterceptorRefs({
50
	@InterceptorRef("defaultStack"),
51
	@InterceptorRef("login")
52
})
7283 kshitij.so 53
@Results({
7524 kshitij.so 54
	@Result(name = "redirect", location = "${url}", type = "redirect"),
55
	@Result(name="authsuccess", type="redirectAction", params = {"actionName" , "reports"})
56
})
57
public class AmazonListController extends ValidationAwareSupport implements ServletRequestAware {
7283 kshitij.so 58
 
59
	private static Logger logger = LoggerFactory.getLogger(AmazonListController.class);
60
 
7591 kshitij.so 61
	private HttpServletRequest request;
62
	private HttpSession session;
63
	private ServletContext context;
7283 kshitij.so 64
	private String url;
65
	private String id;
66
	private String itemId;
67
	private String isFba;
68
	private String isNonFba;
69
	private String isInventoryOverride;
70
	private String fbaPrice;
71
	private String sellingPrice;
72
	private String saholicPrice;
7365 kshitij.so 73
	private String isTime;
74
	private String handlingTime;
75
	private String customHandlingTime;
7461 kshitij.so 76
	private String holdInventory;
77
	private String defaultInventory;
7524 kshitij.so 78
	private String fileUploadFileName;
79
	private String fileUploadContentType;
80
	private File file;
7283 kshitij.so 81
 
82
	public String index() {
7591 kshitij.so 83
		if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getServletPath())) {
84
			return "authfail";
85
		}
7283 kshitij.so 86
		return "index";
87
	}
88
 
89
	public List<Amazonlisted> fetchItems() throws TException {
7408 kshitij.so 90
		Client CatalogClient = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();
7283 kshitij.so 91
		return CatalogClient.getAllAmazonListedItems();
92
	}
93
 
7408 kshitij.so 94
	public Amazonlisted fetchItemDetail() throws NumberFormatException, TException {
95
		Client CatalogClient = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();
7283 kshitij.so 96
		return CatalogClient.getAmazonItemDetails(Long.valueOf(id));
97
	}
98
 
7408 kshitij.so 99
	public Item getSaholicItem(String id) throws NumberFormatException, CatalogServiceException, TException {
100
		Client CatalogClient = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();
7283 kshitij.so 101
		return CatalogClient.getItem(Long.valueOf(id));
102
	}
7365 kshitij.so 103
 
104
 
105
 
7283 kshitij.so 106
	public String update() throws NumberFormatException, TException{
7408 kshitij.so 107
		Client CatalogClient = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();
8029 kshitij.so 108
		if ( Double.valueOf(sellingPrice) > Double.valueOf(saholicPrice) ) {
7365 kshitij.so 109
			addActionError("Failed To Do Changes");
7283 kshitij.so 110
		}
111
		else {
7365 kshitij.so 112
			boolean flag=false;
7591 kshitij.so 113
			long delay = Long.valueOf(customHandlingTime);
7365 kshitij.so 114
			if ( Boolean.valueOf(isTime)) {
115
				flag = true;
116
			}
7461 kshitij.so 117
			changeItemInventory();
7365 kshitij.so 118
			CatalogClient.updateAmazonItemDetails(Long.valueOf(itemId),Double.valueOf(fbaPrice),Double.valueOf(sellingPrice),Boolean.valueOf(isFba),Boolean.valueOf(isNonFba),Boolean.valueOf(isInventoryOverride),delay,flag);
7283 kshitij.so 119
		}
7591 kshitij.so 120
		//setUrl("/amazon-list/");
121
		return "index";
7283 kshitij.so 122
 
123
	}
124
 
7741 kshitij.so 125
	public String upload() throws IOException, TException {
7524 kshitij.so 126
		File fileToCreate = new File("/tmp/", "Amazon-shipping.xls");
127
		FileUtils.copyFile(this.file, fileToCreate);
7741 kshitij.so 128
		FileInputStream iFile = new FileInputStream(new File(file.getAbsolutePath()));
129
		HSSFWorkbook workbook = new HSSFWorkbook(iFile);
130
		HSSFSheet sheet = workbook.getSheetAt(0);
7762 kshitij.so 131
		Map<Long,Map<String,String>> amazonOrderMap = new HashMap<Long,Map<String,String>>();
7741 kshitij.so 132
		for (int iterator=sheet.getFirstRowNum();iterator<=sheet.getLastRowNum();iterator++){
133
			TransactionClient tcl = new TransactionClient();
134
			List<AmazonOrder> orders = tcl.getClient().getAmazonOrderByAmazonOrderId(sheet.getRow(iterator).getCell(0).getStringCellValue());
135
			for (AmazonOrder order : orders){
7753 kshitij.so 136
				if (StringUtils.equals(order.getStatus(), "Order-Payment-Success")){
7762 kshitij.so 137
					Map<String,String> dateMap = new HashMap<String,String>();
138
					dateMap.put(sheet.getRow(iterator).getCell(1).getStringCellValue(), sheet.getRow(iterator).getCell(2).getStringCellValue());
139
					amazonOrderMap.put(order.getOrderId(), dateMap);
7741 kshitij.so 140
				}
141
			}
142
		}
143
		TransactionClient tcl = new TransactionClient();
144
		tcl.getClient().updateTimestampForAmazonOrder(amazonOrderMap);
7524 kshitij.so 145
		return "authsuccess";
146
	}
147
 
7461 kshitij.so 148
	private void changeItemInventory() throws NumberFormatException, TException {
149
		Client CatalogClient = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();
7524 kshitij.so 150
 
7461 kshitij.so 151
		if (StringUtils.isEmpty(holdInventory)) {
152
			holdInventory = "0";
153
		}
154
		if (StringUtils.isEmpty(defaultInventory)) {
155
			defaultInventory = "0";
156
		}
7524 kshitij.so 157
 
7461 kshitij.so 158
		CatalogClient.updateItemInventory(Long.valueOf(itemId),Long.valueOf(holdInventory),Long.valueOf(defaultInventory));
159
	}
160
 
161
 
7283 kshitij.so 162
	public Map<Long, Long> getAvailableItemInventory(String itemId) throws NumberFormatException, InventoryServiceException, TException{
163
		InventoryClient inventoryServiceClient = new InventoryClient();
164
		in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
165
		in.shop2020.model.v1.inventory.ItemInventory thriftItemInventory = inventoryClient.getItemInventoryByItemId(Long.valueOf(itemId));
166
		return thriftItemInventory.getAvailability();
167
 
168
	}
169
 
170
	public Map<Long, Long> getReservedItemInventory(String itemId) throws NumberFormatException, InventoryServiceException, TException{
171
		InventoryClient inventoryServiceClient = new InventoryClient();
172
		in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
173
		in.shop2020.model.v1.inventory.ItemInventory thriftItemInventory = inventoryClient.getItemInventoryByItemId(Long.valueOf(itemId));
174
		return thriftItemInventory.getReserved();
175
 
176
	}
177
 
178
	public String getWarehouseName(String warehouseId) throws NumberFormatException, TException { 
179
		InventoryClient inventoryServiceClient = new InventoryClient();
180
		return inventoryServiceClient.getClient().getWarehouseName(Long.valueOf(warehouseId));
181
	}
182
 
183
	public AmazonInventorySnapshot getInventoryForAmazonItem(String itemId) throws NumberFormatException, TException {
184
		InventoryClient inventoryServiceClient = new InventoryClient();
7365 kshitij.so 185
		try { 
186
			return inventoryServiceClient.getClient().getAmazonInventoryForItem(Long.valueOf(itemId));
187
		}
188
		catch (Exception e){
189
			return null;
190
		}
7283 kshitij.so 191
	}
192
 
7365 kshitij.so 193
	public Long getTimetoShip(String itemId) throws LogisticsServiceException, TException{
194
		LogisticsClient logisticsClient = new LogisticsClient();
195
		return logisticsClient.getClient().getLogisticsInfo("110001", Long.valueOf(itemId), DeliveryType.COD, PickUpType.COURIER).getShippingTime();
196
 
197
	}
198
 
7762 kshitij.so 199
	public  Map<Long, Item> getAliveItemMap() throws TTransportException, InterruptedException{
7753 kshitij.so 200
		List<Item> itemList = null;
201
		int retry=0;
202
		while(true){
7762 kshitij.so 203
			try {
204
				if (retry==3)
205
					break;
206
				Client CatalogClient = new CatalogClient("catalog_service_server_host_amazon","catalog_service_server_port").getClient();
207
				itemList = CatalogClient.getAllAliveItems();
7753 kshitij.so 208
				break;
7762 kshitij.so 209
			} catch ( NullPointerException e) {
210
				retry++;
211
				System.out.println("Unable to fetch alive items.Retrying");
212
				Thread.sleep(3000);
213
				e.printStackTrace();
214
			} catch (TException e) {
215
				retry++;
216
				System.out.println("Unable to fetch alive items.Retrying");
217
				Thread.sleep(3000);
218
				e.printStackTrace();
219
			}
7753 kshitij.so 220
		}
7603 kshitij.so 221
		Map<Long, Item> itemMap = new HashMap<Long, Item>();
7365 kshitij.so 222
		for (Item o : itemList) {
7603 kshitij.so 223
			itemMap.put((Long) o.getId(), o);
7365 kshitij.so 224
		}
225
		return itemMap;
226
	}
8070 kshitij.so 227
 
8073 kshitij.so 228
	 public String runAsinJob() throws IOException, InterruptedException {
229
         ProcessBuilder testProcess = new ProcessBuilder("/bin/bash");
230
         String[] command = {"/bin/bash", "-c", "sudo /root/code/trunk/AmazonFeeds/Test.sh"};
231
     testProcess.command(command);
232
     logger.info(testProcess.command().toString());
233
     Process process = testProcess.start();
234
     process.waitFor();
235
     logger.info(String.valueOf(process.exitValue()));
236
     return "asinjob";
7365 kshitij.so 237
 
8073 kshitij.so 238
 }
8070 kshitij.so 239
 
8073 kshitij.so 240
 
7283 kshitij.so 241
	public String edit() {
7591 kshitij.so 242
		if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getRequestURI().substring(request.getContextPath().length()).split("/")[1])) {
243
			return "authfail";
244
		}
7283 kshitij.so 245
		return "edit";
246
	}
247
 
248
	public String show() {
249
		return "show";
250
	}
251
 
252
	public String editNew() {
253
		return "editNew";
254
	}
255
 
256
	public void setId(String id) {
257
		this.id = id;
258
	}
259
 
260
	public void setUrl(String url) {
261
		this.url = url;
262
	}
263
 
264
	public String getUrl() {
265
		return url;
266
	}
267
 
268
	public String getId() {
269
		return id;
270
	}
271
 
272
	public void setItemId(String itemId) {
273
		this.itemId = itemId;
274
	}
275
 
276
	public String getItemId() {
277
		return itemId;
278
	}
279
 
280
	public void setIsFba(String isFba) {
281
		this.isFba = isFba;
282
	}
283
 
284
	public String getIsFba() {
285
		return isFba;
286
	}
287
 
288
	public void setIsNonFba(String isNonFba) {
289
		this.isNonFba = isNonFba;
290
	}
291
 
292
	public String getIsNonFba() {
293
		return isNonFba;
294
	}
295
 
296
	public void setIsInventoryOverride(String isInventoryOverride) {
297
		this.isInventoryOverride = isInventoryOverride;
298
	}
299
 
300
	public String getIsInventoryOverride() {
301
		return isInventoryOverride;
302
	}
303
 
304
	public void setSellingPrice(String sellingPrice) {
305
		this.sellingPrice = sellingPrice;
306
	}
307
 
308
	public String getSellingPrice() {
309
		return sellingPrice;
310
	}
311
 
312
	public void setFbaPrice(String fbaPrice) {
313
		this.fbaPrice = fbaPrice;
314
	}
315
 
316
	public String getFbaPrice() {
317
		return fbaPrice;
318
	}
7365 kshitij.so 319
 
7283 kshitij.so 320
	public void setSaholicPrice(String saholicPrice) {
321
		this.saholicPrice = saholicPrice;
322
	}
323
 
324
	public String getSaholicPrice() {
325
		return saholicPrice;
326
	}
327
 
7365 kshitij.so 328
	public void setIsTime(String isTime){
329
		this.isTime = isTime;
330
	}
331
 
7461 kshitij.so 332
	public String getIsTime(){
7365 kshitij.so 333
		return isTime;
334
	}
335
 
336
	public void setHandlingTime(String handlingTime){
337
		this.handlingTime = handlingTime;
338
	}
339
 
7461 kshitij.so 340
	public String getHandlingTime(){
7365 kshitij.so 341
		return handlingTime;
342
	}
7800 kshitij.so 343
 
7365 kshitij.so 344
	public void setCustomHandlingTime(String customHandlingTime){
345
		this.customHandlingTime = customHandlingTime;
346
	}
347
 
7461 kshitij.so 348
	public String getCustomHandlingTime(){
7365 kshitij.so 349
		return customHandlingTime;
350
	}
7524 kshitij.so 351
 
7461 kshitij.so 352
	public void setHoldInventory(String holdInventory){
353
		this.holdInventory = holdInventory;
354
	}
7365 kshitij.so 355
 
7461 kshitij.so 356
	public String getHoldInventory(){
357
		return holdInventory;
358
	}
7524 kshitij.so 359
 
7461 kshitij.so 360
	public void setDefaultInventory(String defaultInventory){
361
		this.defaultInventory = defaultInventory;
362
	}
363
 
364
	public String getDefaultInventory(){
365
		return defaultInventory;
366
	}
367
 
7524 kshitij.so 368
	public File getFile() {
369
		return file;
370
	}
371
 
372
	public void setFile(File file) {
373
		this.file = file;
374
	}
375
 
376
	public String getFileUploadContentType() {
377
		return fileUploadContentType;
378
	}
379
 
380
	public void setFileUploadContentType(String fileUploadContentType) {
381
		this.fileUploadContentType = fileUploadContentType;
382
	}
383
 
384
	public String getFileUploadFileName() {
385
		return fileUploadFileName;
386
	}
387
 
388
	public void setFileUploadFileName(String fileUploadFileName) {
389
		this.fileUploadFileName = fileUploadFileName;
390
	}
391
 
7591 kshitij.so 392
	public void setServletRequest(HttpServletRequest req) {
393
		this.request = req;
394
		this.session = req.getSession();        
7283 kshitij.so 395
	}
396
 
8070 kshitij.so 397
	public static void main(String[] args) throws NumberFormatException, InventoryServiceException, TException, IOException {
7283 kshitij.so 398
		AmazonListController call = new AmazonListController();
8070 kshitij.so 399
		//System.out.println(call.runAsinJob());
7283 kshitij.so 400
	}
401
}