Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
23506 amit.gupta 1
package com.spice.profitmandi.web.controller;
2
 
3
import java.time.LocalDateTime;
23511 amit.gupta 4
import java.util.ArrayList;
23506 amit.gupta 5
import java.util.List;
6
 
7
import javax.servlet.http.HttpServletRequest;
8
 
9
import org.slf4j.Logger;
10
import org.slf4j.LoggerFactory;
11
import org.springframework.beans.factory.annotation.Autowired;
12
import org.springframework.beans.factory.annotation.Value;
13
import org.springframework.scheduling.annotation.Scheduled;
14
import org.springframework.stereotype.Controller;
15
import org.springframework.transaction.annotation.Transactional;
16
import org.springframework.ui.Model;
17
import org.springframework.web.bind.annotation.RequestMapping;
18
import org.springframework.web.bind.annotation.RequestMethod;
19
 
20
import com.spice.profitmandi.common.enumuration.SchemeType;
21
import com.spice.profitmandi.common.web.client.RestClient;
23511 amit.gupta 22
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
23506 amit.gupta 23
import com.spice.profitmandi.dao.entity.fofo.Purchase;
23511 amit.gupta 24
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
23506 amit.gupta 25
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
23511 amit.gupta 26
import com.spice.profitmandi.service.order.OrderService;
23506 amit.gupta 27
import com.spice.profitmandi.service.scheme.SchemeService;
28
import com.spice.profitmandi.web.util.MVCResponseSender;
29
 
30
@Controller
23511 amit.gupta 31
@Transactional(rollbackFor=Throwable.class)
23506 amit.gupta 32
public class CronController {
33
 
34
	@Autowired
35
	PurchaseRepository purchaseRepository;
36
 
37
	@Autowired
38
	SchemeService schemeService;
39
 
40
	@Autowired
23511 amit.gupta 41
	FofoOrderRepository fofoOrderRepository;
42
 
43
	@Autowired
23506 amit.gupta 44
	private MVCResponseSender mvcResponseSender;
45
 
46
	@Value("${prod}")
47
	private boolean prod;
48
 
49
 
50
	private static final Logger LOGGER = LoggerFactory.getLogger(CronController.class);
51
 
52
	@Scheduled(cron = "0 45 6 * * *")
53
	public void executeJob() throws Exception {
54
		if(prod) {
55
			RestClient rc = new RestClient(SchemeType.HTTP, "localhost", 8080);
56
			String uri = "/cron/process-schemes";
57
			rc.get(uri, null);
58
		}
59
	}
60
 
61
	@RequestMapping(value = "/cron/process-schemes", method = RequestMethod.GET)
62
	public String createScheme(HttpServletRequest request, Model model) throws Exception{
63
		LocalDateTime fromDate = LocalDateTime.now().minusDays(15);
64
		LOGGER.info("Started execution at {}", LocalDateTime.now());
65
		List<Purchase> purchases = purchaseRepository.selectFromPurchaseCompleteDate(fromDate);
66
		for (Purchase purchase : purchases) {
67
			try {
68
				schemeService.processSchemeIn(purchase.getId(), purchase.getFofoId());
69
			} catch (Exception e) {
70
				LOGGER.error("Error while processing purchase {} for scheme In ", purchase.getId());
71
				e.printStackTrace();
72
 
73
			}
74
		}
23511 amit.gupta 75
		List<FofoOrder> fofoOrders = fofoOrderRepository.selectFromSaleDate(fromDate);
76
		for (FofoOrder fofoOrder: fofoOrders) {
77
			try {
78
				schemeService.processSchemeOut(fofoOrder.getId(), fofoOrder.getFofoId());
79
			} catch (Exception e) {
80
				LOGGER.error("Error while processing sale order {} for scheme Out", fofoOrder.getId());
81
			}
82
		}
23506 amit.gupta 83
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
84
		return "response";
85
	}
86
 
87
}