Subversion Repositories SmartDukaan

Rev

Rev 25650 | Go to most recent revision | Details | 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;
22
 
23
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
24
import com.spice.profitmandi.common.model.CustomRetailer;
25
import com.spice.profitmandi.dao.entity.fofo.CustomerAddress;
26
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
27
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
28
import com.spice.profitmandi.dao.entity.fofo.HygieneData;
29
import com.spice.profitmandi.dao.repository.catalog.HygieneDataModel;
30
import com.spice.profitmandi.dao.repository.fofo.CustomerAddressRepository;
31
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
32
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
33
import com.spice.profitmandi.dao.repository.fofo.HygieneDataRepository;
34
import com.spice.profitmandi.dao.repository.user.AddressRepository;
35
import com.spice.profitmandi.dao.repository.user.UserRepository;
36
import com.spice.profitmandi.service.user.RetailerService;
37
import com.spice.profitmandi.web.util.MVCResponseSender;
38
 
39
@Controller
40
@Transactional(rollbackFor = Throwable.class)
41
public class HygieneController {
42
 
43
	@Autowired
44
	private FofoOrderRepository fofoOrderRepository;
45
 
46
	@Autowired
47
	private CustomerAddressRepository customerAddressRepository;
48
 
49
	@Autowired
50
	private RetailerService retailerService;
51
 
52
	@Autowired
53
	private FofoOrderItemRepository fofoOrderItemRepository;
54
 
55
	@Autowired
56
	private HygieneDataRepository hygieneDataRepository;
57
 
58
	@Autowired
59
	private MVCResponseSender mvcResponseSender;
60
	private static final Logger LOGGER = LogManager.getLogger(HygieneController.class);
61
 
62
	@RequestMapping(value = "/getHygieneData", method = RequestMethod.GET)
63
	public String getHygieneData(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
64
		List<Integer> OrderIds = hygieneDataRepository.selectByDisposedTimestamp().stream().map(x -> x.getOrderId())
65
				.collect(Collectors.toList());
66
		List<HygieneData> hygieneData = hygieneDataRepository.selectByDisposedTimestamp();
67
		List<FofoOrder> fofoOrders = this.getfofoOrderByOrderId(hygieneData);
68
 
69
		Map<Integer, CustomerAddress> customerAddress = this.getCustomerAddressByFofoOrder(fofoOrders);
70
 
71
		Map<Integer, CustomRetailer> partnerAddress = this.getAddressByFofoOrder(fofoOrders);
72
		model.addAttribute("hygieneData", hygieneData);
73
		model.addAttribute("fofoOrders", fofoOrders);
74
		model.addAttribute("partnerAddress", partnerAddress);
75
		model.addAttribute("customerAddress", customerAddress);
76
 
77
		LOGGER.info("hygieneData" + OrderIds);
78
		LOGGER.info("fofoOrder" + fofoOrders);
79
		LOGGER.info("customRetailer" + partnerAddress);
80
		LOGGER.info("customerAddress" + customerAddress);
81
 
82
		return "hygiene";
83
	}
84
 
85
	private List<FofoOrder> getfofoOrderByOrderId(List<HygieneData> hygienesData) throws ProfitMandiBusinessException {
86
		List<FofoOrder> fofoOrders = new ArrayList<>();
87
		for (HygieneData hygieneData : hygienesData) {
88
			FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(hygieneData.getOrderId());
89
			fofoOrders.add(fofoOrder);
90
 
91
		}
92
		return fofoOrders;
93
	}
94
 
95
	private Map<Integer, CustomRetailer> getAddressByFofoOrder(List<FofoOrder> fofoOrders)
96
			throws ProfitMandiBusinessException {
97
		Map<Integer, CustomRetailer> addressMap = new HashMap<>();
98
		for (FofoOrder fofoOrder : fofoOrders) {
99
			CustomRetailer customRetailer = retailerService.getFofoRetailer(fofoOrder.getFofoId());
100
			addressMap.put(fofoOrder.getFofoId(), customRetailer);
101
 
102
		}
103
		return addressMap;
104
	}
105
 
106
	private Map<Integer, CustomerAddress> getCustomerAddressByFofoOrder(List<FofoOrder> fofoOrders)
107
			throws ProfitMandiBusinessException {
108
		Map<Integer, CustomerAddress> customerAddressMap = new HashMap<>();
109
		for (FofoOrder fofoOrder : fofoOrders) {
110
			CustomerAddress ca = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
111
 
112
			customerAddressMap.put(fofoOrder.getCustomerAddressId(), ca);
113
		}
114
		return customerAddressMap;
115
	}
116
 
117
	@RequestMapping(value = "/getFetchHygieneData", method = RequestMethod.GET)
118
	public String getFetchHygieneData(HttpServletRequest request, Model model) throws Exception {
119
 
120
		FofoOrder fofoOrder = null;
121
		CustomRetailer customRetailer = null;
122
		CustomerAddress customerAddress = null;
123
		List<FofoOrderItem> fofoOrderItems = null;
124
 
125
		List<HygieneData> hygiene = hygieneDataRepository.selectAllByDisposedTimestamp();
126
 
127
		hygiene = hygiene.stream().filter(x -> x.getNextTimestamp().isBefore(LocalDateTime.now()))
128
				.collect(Collectors.toList());
129
 
130
		if (!hygiene.isEmpty()) {
131
			fofoOrder = fofoOrderRepository.selectByOrderId(hygiene.get(0).getOrderId());
132
			customRetailer = retailerService.getFofoRetailer(fofoOrder.getFofoId());
133
			customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
134
			fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
135
 
136
		} else {
137
 
138
			HygieneData hygieneData = hygieneDataRepository.selectFirstByDisposedTimestamp();
139
			if (hygieneData != null) {
140
				fofoOrder = fofoOrderRepository.selectByOrderId(hygieneData.getOrderId());
141
				customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
142
 
143
				customRetailer = retailerService.getFofoRetailer(fofoOrder.getFofoId());
144
 
145
				fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
146
 
147
				LOGGER.info("hygieneData" + hygieneData);
148
				LOGGER.info("fofoOrder" + fofoOrder);
149
				LOGGER.info("customRetailer" + customRetailer);
150
				LOGGER.info("customerAddress" + customerAddress);
151
 
152
			}
153
 
154
		}
155
 
156
		model.addAttribute("fofoOrder", fofoOrder);
157
		model.addAttribute("customRetailer", customRetailer);
158
		model.addAttribute("customerAddress", customerAddress);
159
		model.addAttribute("fofoOrderItems", fofoOrderItems);
160
 
161
		return "hygiene-modal";
162
	}
163
 
164
	@RequestMapping(value = "/hygieneData", method = RequestMethod.POST)
165
	public String HygieneData(HttpServletRequest request, @RequestBody HygieneDataModel hygieneDataModel, Model model)
166
			throws Exception {
167
		HygieneData hygieneData = hygieneDataRepository.selectById(hygieneDataModel.getOrderId());
168
		if (hygieneDataModel.getScheduleTime() != null) {
169
 
170
			hygieneData.setStatus(hygieneDataModel.getStatus());
171
			hygieneData.setRemark(hygieneDataModel.getRemark());
172
			hygieneData.setHygieneRating(hygieneDataModel.getHygieneRating());
173
			hygieneData.setNextTimestamp(hygieneDataModel.getScheduleTime());
174
			hygieneDataRepository.persist(hygieneData);
175
		} else {
176
			hygieneData.setStatus(hygieneDataModel.getStatus());
177
			hygieneData.setRemark(hygieneDataModel.getRemark());
178
			hygieneData.setRating(hygieneDataModel.getRating());
179
			hygieneData.setHygieneRating(hygieneDataModel.getHygieneRating());
180
			hygieneData.setDOP(hygieneDataModel.getDOP());
181
			hygieneData.setFeedback(hygieneDataModel.getFeedback());
182
			hygieneData.setQuesPhone(hygieneDataModel.getQuesPhone());
183
			hygieneData.setQuesInformation(hygieneDataModel.getQuesInformation());
184
			hygieneData.setQuesInvoice(hygieneDataModel.getQuesInvoice());
185
			hygieneData.setDisposedTimestamp(LocalDateTime.now());
186
			hygieneData.setNextTimestamp(null);
187
			hygieneDataRepository.persist(hygieneData);
188
		}
189
 
190
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
191
 
192
		return "response";
193
	}
194
 
195
}