Subversion Repositories SmartDukaan

Rev

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