Subversion Repositories SmartDukaan

Rev

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