Subversion Repositories SmartDukaan

Rev

Rev 24660 | Rev 24798 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 24660 Rev 24739
Line 3... Line 3...
3
import java.io.ByteArrayInputStream;
3
import java.io.ByteArrayInputStream;
4
import java.io.ByteArrayOutputStream;
4
import java.io.ByteArrayOutputStream;
5
import java.io.InputStream;
5
import java.io.InputStream;
6
import java.time.LocalDateTime;
6
import java.time.LocalDateTime;
7
import java.util.ArrayList;
7
import java.util.ArrayList;
8
import java.util.Comparator;
8
import java.util.Arrays;
9
import java.util.HashSet;
9
import java.util.HashSet;
10
import java.util.List;
10
import java.util.List;
11
import java.util.Map;
11
import java.util.Map;
12
import java.util.Set;
12
import java.util.Set;
13
import java.util.stream.Collectors;
13
import java.util.stream.Collectors;
Line 15... Line 15...
15
import javax.servlet.http.HttpServletRequest;
15
import javax.servlet.http.HttpServletRequest;
16
import javax.servlet.http.HttpServletResponse;
16
import javax.servlet.http.HttpServletResponse;
17
 
17
 
18
import org.apache.logging.log4j.LogManager;
18
import org.apache.logging.log4j.LogManager;
19
import org.apache.logging.log4j.Logger;
19
import org.apache.logging.log4j.Logger;
-
 
20
import org.apache.thrift.TException;
20
import org.json.JSONObject;
21
import org.json.JSONObject;
21
import org.springframework.beans.factory.annotation.Autowired;
22
import org.springframework.beans.factory.annotation.Autowired;
22
import org.springframework.beans.factory.annotation.Qualifier;
23
import org.springframework.beans.factory.annotation.Qualifier;
23
import org.springframework.beans.factory.annotation.Value;
24
import org.springframework.beans.factory.annotation.Value;
24
import org.springframework.core.io.InputStreamResource;
25
import org.springframework.core.io.InputStreamResource;
25
import org.springframework.format.annotation.DateTimeFormat;
-
 
26
import org.springframework.format.annotation.DateTimeFormat.ISO;
-
 
27
import org.springframework.http.HttpHeaders;
26
import org.springframework.http.HttpHeaders;
28
import org.springframework.http.HttpStatus;
27
import org.springframework.http.HttpStatus;
29
import org.springframework.http.ResponseEntity;
28
import org.springframework.http.ResponseEntity;
30
import org.springframework.stereotype.Controller;
29
import org.springframework.stereotype.Controller;
31
import org.springframework.transaction.annotation.Transactional;
30
import org.springframework.transaction.annotation.Transactional;
Line 35... Line 34...
35
import org.springframework.web.bind.annotation.RequestMethod;
34
import org.springframework.web.bind.annotation.RequestMethod;
36
import org.springframework.web.bind.annotation.RequestParam;
35
import org.springframework.web.bind.annotation.RequestParam;
37
 
36
 
38
import com.google.gson.Gson;
37
import com.google.gson.Gson;
39
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
38
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
40
import com.spice.profitmandi.common.model.CatalogListingModel;
-
 
41
import com.spice.profitmandi.common.model.CustomCurrentInventorySnapshot;
39
import com.spice.profitmandi.common.model.CustomCurrentInventorySnapshot;
42
import com.spice.profitmandi.common.model.CustomRetailer;
40
import com.spice.profitmandi.common.model.CustomRetailer;
43
import com.spice.profitmandi.common.model.InventoryItemAgingModel;
41
import com.spice.profitmandi.common.model.InventoryItemAgingModel;
44
import com.spice.profitmandi.common.model.ItemFeatureDataModel;
42
import com.spice.profitmandi.common.model.ItemFeatureDataModel;
45
import com.spice.profitmandi.common.model.NotificationDataModel;
-
 
46
import com.spice.profitmandi.common.model.ProfitMandiConstants;
43
import com.spice.profitmandi.common.model.ProfitMandiConstants;
47
import com.spice.profitmandi.common.util.ExcelUtils;
44
import com.spice.profitmandi.common.util.ExcelUtils;
48
import com.spice.profitmandi.common.util.Utils;
45
import com.spice.profitmandi.common.util.Utils;
49
import com.spice.profitmandi.dao.entity.catalog.Item;
46
import com.spice.profitmandi.dao.entity.catalog.Item;
50
import com.spice.profitmandi.dao.entity.catalog.TagRanking;
47
import com.spice.profitmandi.dao.entity.catalog.TagRanking;
51
import com.spice.profitmandi.dao.entity.dtr.NotificationData;
-
 
52
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
48
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
53
import com.spice.profitmandi.dao.entity.fofo.LiveDemoSerialNumber;
49
import com.spice.profitmandi.dao.entity.fofo.LiveDemoSerialNumber;
54
import com.spice.profitmandi.dao.entity.transaction.AddWalletRequest;
50
import com.spice.profitmandi.dao.entity.transaction.Order;
55
import com.spice.profitmandi.dao.enumuration.transaction.AddWalletRequestStatus;
51
import com.spice.profitmandi.dao.entity.user.User;
56
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
52
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
57
import com.spice.profitmandi.dao.repository.catalog.TagRankingRepository;
53
import com.spice.profitmandi.dao.repository.catalog.TagRankingRepository;
58
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
54
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
59
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
55
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
60
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
56
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
61
import com.spice.profitmandi.dao.repository.fofo.LiveDemoBillingRespository;
57
import com.spice.profitmandi.dao.repository.fofo.LiveDemoBillingRespository;
62
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
58
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
-
 
59
import com.spice.profitmandi.dao.repository.user.UserRepository;
63
import com.spice.profitmandi.service.inventory.InventoryService;
60
import com.spice.profitmandi.service.inventory.InventoryService;
64
import com.spice.profitmandi.service.user.RetailerService;
61
import com.spice.profitmandi.service.user.RetailerService;
65
import com.spice.profitmandi.web.model.LoginDetails;
62
import com.spice.profitmandi.web.model.LoginDetails;
66
import com.spice.profitmandi.web.util.CookiesProcessor;
63
import com.spice.profitmandi.web.util.CookiesProcessor;
67
import com.spice.profitmandi.web.util.MVCResponseSender;
64
import com.spice.profitmandi.web.util.MVCResponseSender;
68
 
65
 
69
import in.shop2020.model.v1.order.Order;
-
 
70
import in.shop2020.model.v1.order.OrderStatus;
66
import in.shop2020.model.v1.order.OrderStatus;
-
 
67
import in.shop2020.model.v1.order.TransactionServiceException;
71
 
68
 
72
@Controller
69
@Controller
73
@Transactional(rollbackFor = Throwable.class)
70
@Transactional(rollbackFor = Throwable.class)
74
public class InventoryController {
71
public class InventoryController {
75
 
72
 
Line 107... Line 104...
107
	FofoStoreRepository fofoStoreRepository;
104
	FofoStoreRepository fofoStoreRepository;
108
 
105
 
109
	@Autowired
106
	@Autowired
110
	private OrderRepository orderRepository;
107
	private OrderRepository orderRepository;
111
 
108
 
-
 
109
	@Autowired
-
 
110
	private UserRepository userRepository;
-
 
111
 
112
	@Value("${saholic.api.host}")
112
	@Value("${saholic.api.host}")
113
	private String host;
113
	private String host;
114
 
114
 
115
	@Value("${saholic.api.port}")
115
	@Value("${saholic.api.port}")
116
	private int port;
116
	private int port;
Line 170... Line 170...
170
			throws ProfitMandiBusinessException {
170
			throws ProfitMandiBusinessException {
171
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
171
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
172
		if (searchTerm == null) {
172
		if (searchTerm == null) {
173
			searchTerm = "";
173
			searchTerm = "";
174
		}
174
		}
175
		
175
 
176
		Map<String, Object> map = inventoryService.getCatalog(loginDetails.getFofoId(), offset, limit, searchTerm);
176
		Map<String, Object> map = inventoryService.getCatalog(loginDetails.getFofoId(), offset, limit, searchTerm);
177
		model.addAllAttributes(map);
177
		model.addAllAttributes(map);
178
		model.addAttribute("hasGift", hasGift(loginDetails.getFofoId()));
178
		model.addAttribute("hasGift", hasGift(loginDetails.getFofoId()));
179
		
-
 
180
 
179
 
181
		return "catalog";
180
		return "catalog";
182
	}
181
	}
183
 
182
 
184
	// This method is currently hardcoded to faciliate watches sold as gift.
183
	// This method is currently hardcoded to faciliate watches sold as gift.
Line 459... Line 458...
459
		liveDemoBillingRespository.persist(liveDemoSerialNumber);
458
		liveDemoBillingRespository.persist(liveDemoSerialNumber);
460
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
459
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
461
		return "response";
460
		return "response";
462
	}
461
	}
463
 
462
 
464
	@RequestMapping(value = "/getCurrentOrder")
463
	@RequestMapping(value = "/getInProcessOrder", method = RequestMethod.GET)
465
	public String getCurrentOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
464
	public String getInProcessOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
-
 
465
 
466
		List<com.spice.profitmandi.dao.entity.transaction.Order> inProcessorder = orderRepository.selectAllOrderBeforeTwoDaysByStatus(OrderStatus.SUBMITTED_FOR_PROCESSING);
466
		List<com.spice.profitmandi.dao.entity.transaction.Order> inProcessorder = orderRepository
-
 
467
				.selectAllOrderBeforeTwoDaysByStatus(OrderStatus.SUBMITTED_FOR_PROCESSING);
467
		List<com.spice.profitmandi.dao.entity.transaction.Order> pendingPaymentorder = orderRepository.selectAllOrderofOneMonthByStatus(OrderStatus.PAYMENT_PENDING);
468
		List<com.spice.profitmandi.dao.entity.transaction.Order> pendingPaymentorder = orderRepository
-
 
469
				.selectAllOrderDatesBetweenByStatus(LocalDateTime.now().minusDays(30),LocalDateTime.now(),OrderStatus.PAYMENT_PENDING);
468
		List<com.spice.profitmandi.dao.entity.transaction.Order> failedPaymentorder = orderRepository.selectAllOrderofOneMonthByStatus(OrderStatus.PAYMENT_FAILED);
470
		List<com.spice.profitmandi.dao.entity.transaction.Order> failedPaymentorder = orderRepository
-
 
471
				.selectAllOrderDatesBetweenByStatus(LocalDateTime.now().minusDays(30),LocalDateTime.now(),OrderStatus.PAYMENT_FAILED);
469
		pendingPaymentorder.addAll(failedPaymentorder);
472
		pendingPaymentorder.addAll(failedPaymentorder);
-
 
473
 
-
 
474
		model.addAttribute("inProcessorder", inProcessorder);
-
 
475
		model.addAttribute("pendingPaymentorder", pendingPaymentorder);
-
 
476
 
-
 
477
		return "review_order";
-
 
478
	}
-
 
479
 
-
 
480
	@RequestMapping(value = "/getKeepInTabOrder", method = RequestMethod.GET)
-
 
481
	public String getKeepInTabOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
-
 
482
 
-
 
483
		List<com.spice.profitmandi.dao.entity.transaction.Order> keepatab = orderRepository
-
 
484
				.selectAllOrder(OrderStatus.KEEP_A_TAB);
-
 
485
 
-
 
486
		model.addAttribute("keepatab", keepatab);
-
 
487
 
-
 
488
		return "keep-a-tab";
-
 
489
	}
-
 
490
 
-
 
491
	@RequestMapping(value = "/closeOrder", method = RequestMethod.POST)
-
 
492
	public String closeOrder(HttpServletRequest request, @RequestParam int orderId, Model model) throws Exception {
470
		
493
		
471
		model.addAttribute("inProcessorder",inProcessorder);
494
		Order order = orderRepository.selectById(orderId);
-
 
495
	     if (order != null){
472
		model.addAttribute("pendingPaymentorder",pendingPaymentorder);
496
			order.setStatus(OrderStatus.CANCELLED_DUE_TO_LOW_INVENTORY);
473
		
497
		
-
 
498
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
-
 
499
 
-
 
500
		} else{
-
 
501
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
-
 
502
 
-
 
503
		}
474
		return "review_order";
504
		return "response";
-
 
505
	}
-
 
506
 
-
 
507
	@RequestMapping(value = "/cancelOrder", method = RequestMethod.POST)
-
 
508
	public String cancelOrder(HttpServletRequest request, @RequestParam int orderId, @RequestParam String reason,
-
 
509
			@RequestParam OrderStatus orderStatus, Model model) throws Exception {
-
 
510
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
511
		User userInfo = userRepository.selectById(loginDetails.getFofoId());
-
 
512
		LOGGER.info("status" + orderStatus);
-
 
513
		try {
-
 
514
			orderRepository.refundOrder(orderId, userInfo.getName(), reason, orderStatus);
-
 
515
 
-
 
516
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
-
 
517
 
-
 
518
		} catch (TransactionServiceException | TException e) {
-
 
519
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
-
 
520
 
-
 
521
		}
-
 
522
		return "response";
475
	}
523
	}
476
 
524
 
477
}
525
}