Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
25640 tejbeer 1
 
2
package com.spice.profitmandi.web.controller;
3
 
4
import java.time.LocalDateTime;
5
import java.util.ArrayList;
26751 amit.gupta 6
import java.util.Collection;
25640 tejbeer 7
import java.util.HashMap;
8
import java.util.List;
9
import java.util.Map;
26751 amit.gupta 10
import java.util.Set;
25640 tejbeer 11
import java.util.stream.Collectors;
12
 
13
import javax.servlet.http.HttpServletRequest;
14
 
15
import org.apache.logging.log4j.LogManager;
16
import org.apache.logging.log4j.Logger;
17
import org.springframework.beans.factory.annotation.Autowired;
18
import org.springframework.stereotype.Controller;
19
import org.springframework.transaction.annotation.Transactional;
20
import org.springframework.ui.Model;
21
import org.springframework.web.bind.annotation.RequestBody;
22
import org.springframework.web.bind.annotation.RequestMapping;
23
import org.springframework.web.bind.annotation.RequestMethod;
25650 tejbeer 24
import org.springframework.web.bind.annotation.RequestParam;
25640 tejbeer 25
 
26
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
27
import com.spice.profitmandi.common.model.CustomRetailer;
28
import com.spice.profitmandi.dao.entity.fofo.CustomerAddress;
29
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
30
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
31
import com.spice.profitmandi.dao.entity.fofo.HygieneData;
32
import com.spice.profitmandi.dao.repository.catalog.HygieneDataModel;
25650 tejbeer 33
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
25640 tejbeer 34
import com.spice.profitmandi.dao.repository.fofo.CustomerAddressRepository;
35
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
36
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
37
import com.spice.profitmandi.dao.repository.fofo.HygieneDataRepository;
38
import com.spice.profitmandi.service.user.RetailerService;
39
import com.spice.profitmandi.web.util.MVCResponseSender;
40
 
41
@Controller
42
@Transactional(rollbackFor = Throwable.class)
43
public class HygieneController {
44
 
45
	@Autowired
46
	private FofoOrderRepository fofoOrderRepository;
47
 
48
	@Autowired
49
	private CustomerAddressRepository customerAddressRepository;
50
 
51
	@Autowired
52
	private RetailerService retailerService;
53
 
54
	@Autowired
55
	private FofoOrderItemRepository fofoOrderItemRepository;
56
 
57
	@Autowired
58
	private HygieneDataRepository hygieneDataRepository;
59
 
60
	@Autowired
25650 tejbeer 61
	private ItemRepository itemRepository;
62
	@Autowired
25640 tejbeer 63
	private MVCResponseSender mvcResponseSender;
64
	private static final Logger LOGGER = LogManager.getLogger(HygieneController.class);
65
 
66
	@RequestMapping(value = "/getHygieneData", method = RequestMethod.GET)
67
	public String getHygieneData(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
68
		List<HygieneData> hygieneData = hygieneDataRepository.selectByDisposedTimestamp();
26751 amit.gupta 69
		List<Integer> orderIds = hygieneData.stream().map(x -> x.getOrderId()).collect(Collectors.toList());
70
		Map<Integer, FofoOrder> fofoOrdersMap = this.getfofoOrderByOrderId(orderIds);
71
		Set<Integer> fofoIds = fofoOrdersMap.values().stream().map(x->x.getFofoId()).collect(Collectors.toSet());
72
		Map<Integer, CustomerAddress> customerAddress = this.getCustomerAddressByFofoOrder(fofoOrdersMap.values());
25640 tejbeer 73
 
26751 amit.gupta 74
		Map<Integer, CustomRetailer> partnerAddressMap = retailerService.getFofoRetailers(new ArrayList<Integer>(fofoIds));
75
		model.addAttribute("hygieneData", hygieneData)
76
			.addAttribute("fofoOrder", fofoOrdersMap)
77
			.addAttribute("partnerAddress", partnerAddressMap)
78
			.addAttribute("customerAddress", customerAddress);
25640 tejbeer 79
 
80
		return "hygiene";
81
	}
82
 
26751 amit.gupta 83
	private Map<Integer, FofoOrder> getfofoOrderByOrderId(List<Integer> fofoOrderIds)
25650 tejbeer 84
			throws ProfitMandiBusinessException {
26751 amit.gupta 85
		Map<Integer, FofoOrder> fofoOrders = fofoOrderRepository.selectAllByOrderIds(fofoOrderIds).stream()
86
				.collect(Collectors.toMap(x -> x.getId(), x -> x));
25640 tejbeer 87
 
88
		return fofoOrders;
89
	}
90
 
26751 amit.gupta 91
	private Map<Integer, CustomerAddress> getCustomerAddressByFofoOrder(Collection<FofoOrder> fofoOrders)
25640 tejbeer 92
			throws ProfitMandiBusinessException {
93
		Map<Integer, CustomerAddress> customerAddressMap = new HashMap<>();
26751 amit.gupta 94
		for (FofoOrder fofoOrder : fofoOrders) {
25640 tejbeer 95
			CustomerAddress ca = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
25678 tejbeer 96
			customerAddressMap.put(fofoOrder.getCustomerAddressId(), ca);
25640 tejbeer 97
		}
98
		return customerAddressMap;
99
	}
100
 
101
	@RequestMapping(value = "/getFetchHygieneData", method = RequestMethod.GET)
102
	public String getFetchHygieneData(HttpServletRequest request, Model model) throws Exception {
103
 
104
		FofoOrder fofoOrder = null;
105
		CustomRetailer customRetailer = null;
106
		CustomerAddress customerAddress = null;
107
		List<FofoOrderItem> fofoOrderItems = null;
108
 
109
		List<HygieneData> hygiene = hygieneDataRepository.selectAllByDisposedTimestamp();
110
 
111
		hygiene = hygiene.stream().filter(x -> x.getNextTimestamp().isBefore(LocalDateTime.now()))
112
				.collect(Collectors.toList());
113
 
114
		if (!hygiene.isEmpty()) {
115
			fofoOrder = fofoOrderRepository.selectByOrderId(hygiene.get(0).getOrderId());
116
			customRetailer = retailerService.getFofoRetailer(fofoOrder.getFofoId());
117
			customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
118
			fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
119
 
120
		} else {
121
 
122
			HygieneData hygieneData = hygieneDataRepository.selectFirstByDisposedTimestamp();
123
			if (hygieneData != null) {
124
				fofoOrder = fofoOrderRepository.selectByOrderId(hygieneData.getOrderId());
125
				customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
126
 
127
				customRetailer = retailerService.getFofoRetailer(fofoOrder.getFofoId());
128
 
129
				fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
130
 
131
				LOGGER.info("hygieneData" + hygieneData);
132
				LOGGER.info("fofoOrder" + fofoOrder);
133
				LOGGER.info("customRetailer" + customRetailer);
134
				LOGGER.info("customerAddress" + customerAddress);
135
 
136
			}
137
 
138
		}
139
 
140
		model.addAttribute("fofoOrder", fofoOrder);
141
		model.addAttribute("customRetailer", customRetailer);
142
		model.addAttribute("customerAddress", customerAddress);
143
		model.addAttribute("fofoOrderItems", fofoOrderItems);
144
 
145
		return "hygiene-modal";
146
	}
147
 
25650 tejbeer 148
	@RequestMapping(value = "/getFetchHygieneDataByOrderId", method = RequestMethod.GET)
149
	public String getFetchHygieneDataByOrderId(HttpServletRequest request, @RequestParam int orderId, Model model)
150
			throws Exception {
151
 
152
		FofoOrder fofoOrder = null;
153
		CustomRetailer customRetailer = null;
154
		CustomerAddress customerAddress = null;
155
		List<FofoOrderItem> fofoOrderItems = null;
156
 
157
		HygieneData hygiene = hygieneDataRepository.selectById(orderId);
158
 
159
		fofoOrder = fofoOrderRepository.selectByOrderId(hygiene.getOrderId());
160
		customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
161
 
162
		customRetailer = retailerService.getFofoRetailer(fofoOrder.getFofoId());
163
 
164
		fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
165
 
166
		LOGGER.info("hygieneData" + hygiene);
167
		LOGGER.info("fofoOrder" + fofoOrder);
168
		LOGGER.info("customRetailer" + customRetailer);
169
		LOGGER.info("customerAddress" + customerAddress);
170
 
171
		model.addAttribute("fofoOrder", fofoOrder);
172
		model.addAttribute("customRetailer", customRetailer);
173
		model.addAttribute("customerAddress", customerAddress);
174
		model.addAttribute("fofoOrderItems", fofoOrderItems);
175
 
176
		return "hygiene-modal";
177
	}
178
 
25640 tejbeer 179
	@RequestMapping(value = "/hygieneData", method = RequestMethod.POST)
180
	public String HygieneData(HttpServletRequest request, @RequestBody HygieneDataModel hygieneDataModel, Model model)
181
			throws Exception {
182
		HygieneData hygieneData = hygieneDataRepository.selectById(hygieneDataModel.getOrderId());
183
		if (hygieneDataModel.getScheduleTime() != null) {
184
 
185
			hygieneData.setStatus(hygieneDataModel.getStatus());
186
			hygieneData.setRemark(hygieneDataModel.getRemark());
187
			hygieneData.setHygieneRating(hygieneDataModel.getHygieneRating());
188
			hygieneData.setNextTimestamp(hygieneDataModel.getScheduleTime());
189
			hygieneDataRepository.persist(hygieneData);
190
		} else {
191
			hygieneData.setStatus(hygieneDataModel.getStatus());
192
			hygieneData.setRemark(hygieneDataModel.getRemark());
193
			hygieneData.setRating(hygieneDataModel.getRating());
194
			hygieneData.setHygieneRating(hygieneDataModel.getHygieneRating());
195
			hygieneData.setDOP(hygieneDataModel.getDOP());
196
			hygieneData.setFeedback(hygieneDataModel.getFeedback());
197
			hygieneData.setQuesPhone(hygieneDataModel.getQuesPhone());
198
			hygieneData.setQuesInformation(hygieneDataModel.getQuesInformation());
199
			hygieneData.setQuesInvoice(hygieneDataModel.getQuesInvoice());
200
			hygieneData.setDisposedTimestamp(LocalDateTime.now());
201
			hygieneData.setNextTimestamp(null);
202
			hygieneDataRepository.persist(hygieneData);
203
		}
204
 
205
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
206
 
207
		return "response";
208
	}
209
 
210
}