Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
21577 ashik.ali 1
package com.spice.profitmandi.web.controller;
2
 
22486 ashik.ali 3
import java.io.ByteArrayInputStream;
4
import java.io.ByteArrayOutputStream;
5
import java.io.InputStream;
23886 amit.gupta 6
import java.time.LocalDateTime;
24465 tejbeer 7
import java.util.ArrayList;
24739 tejbeer 8
import java.util.Arrays;
24465 tejbeer 9
import java.util.HashSet;
21577 ashik.ali 10
import java.util.List;
21654 ashik.ali 11
import java.util.Map;
24465 tejbeer 12
import java.util.Set;
13
import java.util.stream.Collectors;
21577 ashik.ali 14
 
15
import javax.servlet.http.HttpServletRequest;
21987 kshitij.so 16
import javax.servlet.http.HttpServletResponse;
21577 ashik.ali 17
 
23886 amit.gupta 18
import org.apache.logging.log4j.LogManager;
23568 govind 19
import org.apache.logging.log4j.Logger;
24739 tejbeer 20
import org.apache.thrift.TException;
24465 tejbeer 21
import org.json.JSONObject;
21577 ashik.ali 22
import org.springframework.beans.factory.annotation.Autowired;
23784 ashik.ali 23
import org.springframework.beans.factory.annotation.Qualifier;
21987 kshitij.so 24
import org.springframework.beans.factory.annotation.Value;
22486 ashik.ali 25
import org.springframework.core.io.InputStreamResource;
26
import org.springframework.http.HttpHeaders;
27
import org.springframework.http.HttpStatus;
22472 ashik.ali 28
import org.springframework.http.ResponseEntity;
21577 ashik.ali 29
import org.springframework.stereotype.Controller;
21654 ashik.ali 30
import org.springframework.transaction.annotation.Transactional;
21577 ashik.ali 31
import org.springframework.ui.Model;
22472 ashik.ali 32
import org.springframework.web.bind.annotation.RequestBody;
21577 ashik.ali 33
import org.springframework.web.bind.annotation.RequestMapping;
22472 ashik.ali 34
import org.springframework.web.bind.annotation.RequestMethod;
21577 ashik.ali 35
import org.springframework.web.bind.annotation.RequestParam;
36
 
21987 kshitij.so 37
import com.google.gson.Gson;
21577 ashik.ali 38
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
21612 ashik.ali 39
import com.spice.profitmandi.common.model.CustomCurrentInventorySnapshot;
24106 tejbeer 40
import com.spice.profitmandi.common.model.CustomRetailer;
22472 ashik.ali 41
import com.spice.profitmandi.common.model.InventoryItemAgingModel;
24106 tejbeer 42
import com.spice.profitmandi.common.model.ItemFeatureDataModel;
21577 ashik.ali 43
import com.spice.profitmandi.common.model.ProfitMandiConstants;
22472 ashik.ali 44
import com.spice.profitmandi.common.util.ExcelUtils;
21987 kshitij.so 45
import com.spice.profitmandi.common.util.Utils;
24123 tejbeer 46
import com.spice.profitmandi.dao.entity.catalog.Item;
24106 tejbeer 47
import com.spice.profitmandi.dao.entity.catalog.TagRanking;
24465 tejbeer 48
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
49
import com.spice.profitmandi.dao.entity.fofo.LiveDemoSerialNumber;
24739 tejbeer 50
import com.spice.profitmandi.dao.entity.transaction.Order;
51
import com.spice.profitmandi.dao.entity.user.User;
24123 tejbeer 52
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
24106 tejbeer 53
import com.spice.profitmandi.dao.repository.catalog.TagRankingRepository;
24465 tejbeer 54
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
24203 amit.gupta 55
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
24465 tejbeer 56
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
57
import com.spice.profitmandi.dao.repository.fofo.LiveDemoBillingRespository;
24658 tejbeer 58
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
24739 tejbeer 59
import com.spice.profitmandi.dao.repository.user.UserRepository;
22927 ashik.ali 60
import com.spice.profitmandi.service.inventory.InventoryService;
24465 tejbeer 61
import com.spice.profitmandi.service.user.RetailerService;
22139 amit.gupta 62
import com.spice.profitmandi.web.model.LoginDetails;
22069 ashik.ali 63
import com.spice.profitmandi.web.util.CookiesProcessor;
24106 tejbeer 64
import com.spice.profitmandi.web.util.MVCResponseSender;
21577 ashik.ali 65
 
24658 tejbeer 66
import in.shop2020.model.v1.order.OrderStatus;
24739 tejbeer 67
import in.shop2020.model.v1.order.TransactionServiceException;
24658 tejbeer 68
 
21577 ashik.ali 69
@Controller
24123 tejbeer 70
@Transactional(rollbackFor = Throwable.class)
21577 ashik.ali 71
public class InventoryController {
21987 kshitij.so 72
 
23568 govind 73
	private static final Logger LOGGER = LogManager.getLogger(InventoryController.class);
21987 kshitij.so 74
 
21577 ashik.ali 75
	@Autowired
22927 ashik.ali 76
	private CookiesProcessor cookiesProcessor;
24123 tejbeer 77
 
22354 ashik.ali 78
	@Autowired
23784 ashik.ali 79
	@Qualifier("fofoInventoryService")
22927 ashik.ali 80
	private InventoryService inventoryService;
24465 tejbeer 81
 
24203 amit.gupta 82
	@Autowired
83
	private CurrentInventorySnapshotRepository currentInventorySnapshotRepository;
24123 tejbeer 84
 
24106 tejbeer 85
	@Autowired
86
	private TagRankingRepository tagRankingRepository;
24123 tejbeer 87
 
24106 tejbeer 88
	@Autowired
24465 tejbeer 89
	private InventoryItemRepository inventoryItemRepository;
90
 
91
	@Autowired
92
	private LiveDemoBillingRespository liveDemoBillingRespository;
93
 
94
	@Autowired
24123 tejbeer 95
	private ItemRepository itemRepository;
96
 
97
	@Autowired
24465 tejbeer 98
	private RetailerService retailerService;
99
 
100
	@Autowired
24106 tejbeer 101
	private MVCResponseSender mvcResponseSender;
24123 tejbeer 102
 
24465 tejbeer 103
	@Autowired
104
	FofoStoreRepository fofoStoreRepository;
105
 
24658 tejbeer 106
	@Autowired
107
	private OrderRepository orderRepository;
108
 
24739 tejbeer 109
	@Autowired
110
	private UserRepository userRepository;
111
 
21987 kshitij.so 112
	@Value("${saholic.api.host}")
113
	private String host;
23786 amit.gupta 114
 
21987 kshitij.so 115
	@Value("${saholic.api.port}")
116
	private int port;
23786 amit.gupta 117
 
21987 kshitij.so 118
	@Value("${saholic.api.webapp}")
119
	private String webapp;
120
 
23786 amit.gupta 121
	@RequestMapping(value = "/getCurrentInventorySnapshot")
122
	public String getCurrentAvailability(HttpServletRequest request,
123
			@RequestParam(name = "offset", defaultValue = "0") int offset,
124
			@RequestParam(name = "limit", defaultValue = "10") int limit,
24123 tejbeer 125
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
23786 amit.gupta 126
			throws ProfitMandiBusinessException {
22927 ashik.ali 127
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 128
		Map<String, Object> map = inventoryService.getCurrentInventorySnapshot(loginDetails.getFofoId(), offset, limit,
129
				searchTerm);
22927 ashik.ali 130
		model.addAllAttributes(map);
21987 kshitij.so 131
		return "inventory-snapshot";
21612 ashik.ali 132
	}
21987 kshitij.so 133
 
23786 amit.gupta 134
	@RequestMapping(value = "/getBadInventorySnapshot")
135
	public String getBadAvailability(HttpServletRequest request,
136
			@RequestParam(name = "offset", defaultValue = "0") int offset,
137
			@RequestParam(name = "limit", defaultValue = "10") int limit,
138
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
139
			throws ProfitMandiBusinessException {
24123 tejbeer 140
		if (searchTerm == null) {
141
			searchTerm = "";
24052 amit.gupta 142
		}
22927 ashik.ali 143
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 144
		Map<String, Object> map = inventoryService.getBadInventorySnapshot(loginDetails.getFofoId(), offset, limit,
145
				searchTerm);
22927 ashik.ali 146
		model.addAllAttributes(map);
21987 kshitij.so 147
		return "bad-inventory-snapshot";
148
	}
149
 
23786 amit.gupta 150
	@RequestMapping(value = "/getPaginatedCurrentInventorySnapshot")
151
	public String getPaginatedCurrentInventorySnapshot(HttpServletRequest request,
152
			@RequestParam(name = "offset", defaultValue = "0") int offset,
153
			@RequestParam(name = "limit", defaultValue = "10") int limit,
154
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
155
			throws ProfitMandiBusinessException {
24123 tejbeer 156
		if (searchTerm == null) {
157
			searchTerm = "";
24052 amit.gupta 158
		}
22927 ashik.ali 159
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 160
		Map<String, Object> map = inventoryService.getPaginatedCurrentInventorySnapshot(loginDetails.getFofoId(),
161
				offset, limit, searchTerm);
22927 ashik.ali 162
		model.addAllAttributes(map);
21987 kshitij.so 163
		return "inventory-snapshot-paginated";
164
	}
23786 amit.gupta 165
 
166
	@RequestMapping(value = "/getCatalog")
167
	public String getCatalog(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset,
168
			@RequestParam(name = "limit", defaultValue = "10") int limit,
169
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
170
			throws ProfitMandiBusinessException {
22927 ashik.ali 171
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24123 tejbeer 172
		if (searchTerm == null) {
173
			searchTerm = "";
24052 amit.gupta 174
		}
24739 tejbeer 175
 
22927 ashik.ali 176
		Map<String, Object> map = inventoryService.getCatalog(loginDetails.getFofoId(), offset, limit, searchTerm);
177
		model.addAllAttributes(map);
24203 amit.gupta 178
		model.addAttribute("hasGift", hasGift(loginDetails.getFofoId()));
24658 tejbeer 179
 
21987 kshitij.so 180
		return "catalog";
181
	}
23786 amit.gupta 182
 
24465 tejbeer 183
	// This method is currently hardcoded to faciliate watches sold as gift.
24203 amit.gupta 184
	private boolean hasGift(int fofoId) {
185
		try {
24465 tejbeer 186
			return currentInventorySnapshotRepository.selectByItemIdAndFofoId(ProfitMandiConstants.GIFT_ID, fofoId)
187
					.getAvailability() > 0;
24203 amit.gupta 188
		} catch (ProfitMandiBusinessException e) {
189
			return false;
190
		}
191
	}
192
 
23786 amit.gupta 193
	@RequestMapping(value = "/getPaginatedCatalog")
194
	public String getCatalogPaginated(HttpServletRequest request,
195
			@RequestParam(name = "offset", defaultValue = "0") int offset,
196
			@RequestParam(name = "limit", defaultValue = "10") int limit,
197
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
198
			throws ProfitMandiBusinessException {
22927 ashik.ali 199
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24123 tejbeer 200
		if (searchTerm == null) {
201
			searchTerm = "";
24052 amit.gupta 202
		}
23786 amit.gupta 203
		Map<String, Object> map = inventoryService.getPaginatedCatalog(loginDetails.getFofoId(), offset, limit,
204
				searchTerm);
22927 ashik.ali 205
		model.addAllAttributes(map);
21987 kshitij.so 206
		return "catalog-paginated";
207
	}
208
 
23786 amit.gupta 209
	@RequestMapping(value = "/checkItemAvailability")
210
	public String getItemAvailability(HttpServletRequest request,
211
			@RequestParam(name = ProfitMandiConstants.ITEM_ID) int itemId, Model model)
212
			throws ProfitMandiBusinessException {
22927 ashik.ali 213
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 214
		CustomCurrentInventorySnapshot customCurrentInventorySnapshot = inventoryService.checkItemAvailability(itemId,
215
				loginDetails.getFofoId());
216
		customCurrentInventorySnapshot
217
				.setIconUrl(Utils.getIconUrl(customCurrentInventorySnapshot.getCatalogItemId(), host, port, webapp));
22927 ashik.ali 218
		model.addAttribute("currentInventorySnapshot", new Gson().toJson(customCurrentInventorySnapshot));
219
		return "current-item-availability";
23786 amit.gupta 220
 
21577 ashik.ali 221
	}
23786 amit.gupta 222
 
23192 ashik.ali 223
	@RequestMapping(value = "/cart", method = RequestMethod.POST)
23786 amit.gupta 224
	public String addToCart(HttpServletRequest request, @RequestParam(name = "cartData") String cartData, Model model)
225
			throws ProfitMandiBusinessException {
22927 ashik.ali 226
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 227
 
22927 ashik.ali 228
		Map<String, Object> map = inventoryService.addToCart(cartData, loginDetails.getFofoId());
229
		model.addAllAttributes(map);
21987 kshitij.so 230
		return "cart";
231
	}
23786 amit.gupta 232
 
23192 ashik.ali 233
	@RequestMapping(value = "/validate-cart", method = RequestMethod.POST)
23786 amit.gupta 234
	public String validateCart(HttpServletRequest request, HttpServletResponse response,
235
			@RequestParam(name = "cartData") String cartData, Model model) throws ProfitMandiBusinessException {
22927 ashik.ali 236
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 237
 
22927 ashik.ali 238
		Map<String, Object> map = inventoryService.validateCart(cartData, loginDetails.getFofoId());
239
		model.addAllAttributes(map);
21987 kshitij.so 240
		return "validate-cart";
241
	}
242
 
23786 amit.gupta 243
	@RequestMapping(value = "/grnHistory")
24123 tejbeer 244
	public String getGrnHistory(HttpServletRequest request, @RequestParam(required = false) LocalDateTime startTime,
23886 amit.gupta 245
			@RequestParam(required = false) LocalDateTime endTime,
23786 amit.gupta 246
			@RequestParam(name = "offset", defaultValue = "0") int offset,
247
			@RequestParam(name = "limit", defaultValue = "10") int limit,
248
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE, defaultValue = "") String purchaseReference,
249
			@RequestParam(name = "searchType", defaultValue = "") String searchType, Model model)
250
			throws ProfitMandiBusinessException {
22927 ashik.ali 251
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24123 tejbeer 252
		Map<String, Object> map = inventoryService.getGrnHistory(loginDetails.getFofoId(), startTime, endTime, offset,
253
				limit, purchaseReference, searchType);
22927 ashik.ali 254
		model.addAllAttributes(map);
21987 kshitij.so 255
		return "grn-history";
21636 ashik.ali 256
	}
21987 kshitij.so 257
 
23786 amit.gupta 258
	@RequestMapping(value = "/getPaginatedGrnHistory")
259
	public String getPaginatedGrnHistory(HttpServletRequest request,
23886 amit.gupta 260
			@RequestParam(required = false) LocalDateTime startTime,
261
			@RequestParam(required = false) LocalDateTime endTime,
23786 amit.gupta 262
			@RequestParam(name = "offset", defaultValue = "0") int offset,
263
			@RequestParam(name = "limit", defaultValue = "10") int limit,
264
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE, defaultValue = "") String purchaseReference,
265
			@RequestParam(name = "searchType", defaultValue = "") String searchType, Model model)
266
			throws ProfitMandiBusinessException {
22927 ashik.ali 267
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24123 tejbeer 268
		Map<String, Object> map = inventoryService.getPaginatedGrnHistory(loginDetails.getFofoId(), startTime, endTime,
269
				offset, limit);
22927 ashik.ali 270
		model.addAllAttributes(map);
21987 kshitij.so 271
		return "grn-history-paginated";
272
	}
273
 
23786 amit.gupta 274
	@RequestMapping(value = "/grnHistoryDetailByPurchaseId")
275
	public String grnHistoryByPurchaseId(HttpServletRequest request,
276
			@RequestParam(name = ProfitMandiConstants.PURCHASE_ID) int purchaseId, Model model)
277
			throws ProfitMandiBusinessException {
22927 ashik.ali 278
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 279
		Map<String, Object> map = inventoryService.getGrnHistoryDetail(loginDetails.getFofoId(), purchaseId, host, port,
280
				webapp);
22927 ashik.ali 281
		model.addAllAttributes(map);
21987 kshitij.so 282
		return "grn-details";
21636 ashik.ali 283
	}
21987 kshitij.so 284
 
23786 amit.gupta 285
	@RequestMapping(value = "/grnHistoryDetailByPurchaseReference")
286
	public String grnHistoryByPurchaseReference(HttpServletRequest request,
287
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE) String purchaseReference, Model model)
288
			throws ProfitMandiBusinessException {
22927 ashik.ali 289
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 290
		Map<String, Object> map = inventoryService.getGrnHistoryDetail(loginDetails.getFofoId(), purchaseReference,
291
				host, port, webapp);
22927 ashik.ali 292
		model.addAllAttributes(map);
21987 kshitij.so 293
		return "grn-details";
21654 ashik.ali 294
	}
23786 amit.gupta 295
 
22472 ashik.ali 296
	@RequestMapping(value = "/getInventoryItemAgingByInterval", method = RequestMethod.POST)
23786 amit.gupta 297
	public String getInventoryItemAgingByInterval(HttpServletRequest request, @RequestBody List<Integer> intervals,
298
			Model model, @RequestParam(name = "searchContent", defaultValue = "") String searchContent,
299
			@RequestParam(name = "offset", defaultValue = "0") int offset,
300
			@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
22927 ashik.ali 301
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 302
		Map<String, Object> map = inventoryService.getPaginatedItemAgingByInterval(loginDetails.getFofoId(), intervals,
303
				searchContent, offset, limit);
22927 ashik.ali 304
		model.addAllAttributes(map);
22523 ashik.ali 305
		return "item-aging";
306
	}
23786 amit.gupta 307
 
22523 ashik.ali 308
	@RequestMapping(value = "/downloadInventoryItemAgingByInterval", method = RequestMethod.POST)
23786 amit.gupta 309
	public ResponseEntity<?> downloadInventoryItemAgingByInterval(HttpServletRequest request,
310
			@RequestBody List<Integer> intervals, Model model) throws ProfitMandiBusinessException {
22927 ashik.ali 311
		LOGGER.info("Request received at url{} with body {}", request.getRequestURI(), intervals);
312
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 313
 
314
		List<InventoryItemAgingModel> inventoryItemAgingModels = inventoryService
315
				.getItemAgingByInterval(fofoDetails.getFofoId(), intervals);
316
 
22486 ashik.ali 317
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
318
		ExcelUtils.writeInventoryItemAgingModels(inventoryItemAgingModels, intervals, byteArrayOutputStream);
23786 amit.gupta 319
 
320
		final HttpHeaders headers = new HttpHeaders();
321
		// private static final String CONTENT_TYPE_XLSX =
322
		// "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
323
		headers.set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
324
		// headers.set("Content-Type", "application/vnd.ms-excel");
22486 ashik.ali 325
		headers.set("Content-disposition", "inline; filename=InventoryItemAging.xlsx");
23786 amit.gupta 326
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
327
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
328
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
329
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
330
 
24123 tejbeer 331
		// return
332
		// responseSender.ok(ResponseCodeHolder.getMessage("ITM_AGNG_OK_1000"));
22472 ashik.ali 333
	}
24123 tejbeer 334
 
24106 tejbeer 335
	@RequestMapping(value = "/featurePanel", method = RequestMethod.GET)
24123 tejbeer 336
	public String FeaturePanel(HttpServletRequest request,
337
			@RequestParam(name = "offset", defaultValue = "0") int offset,
24106 tejbeer 338
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws Exception {
21987 kshitij.so 339
 
24106 tejbeer 340
		List<TagRanking> tagRanking = null;
341
 
342
		long size = 0;
24123 tejbeer 343
		tagRanking = tagRankingRepository.selectAllTagRanking(offset, limit);
344
		size = tagRankingRepository.selectAllCount();
24106 tejbeer 345
		LOGGER.info("tagRanking" + tagRanking);
346
		if (!tagRanking.isEmpty()) {
24465 tejbeer 347
			model.addAttribute("tagRanking", tagRanking);
24106 tejbeer 348
			model.addAttribute("start", offset + 1);
349
			model.addAttribute("size", size);
350
			model.addAttribute("url", "/getPaginatedfeature");
351
 
352
			if (tagRanking.size() < limit) {
353
				model.addAttribute("end", offset + tagRanking.size());
354
			} else {
355
				model.addAttribute("end", offset + limit);
356
			}
357
		} else {
358
			model.addAttribute("tagRanking", tagRanking);
359
			model.addAttribute("size", size);
360
		}
361
 
362
		return "feature";
363
 
364
	}
24123 tejbeer 365
 
24106 tejbeer 366
	@RequestMapping(value = "/getPaginatedfeature", method = RequestMethod.GET)
367
	public String getPaginatedFeaturePanel(HttpServletRequest request,
368
			@RequestParam(name = "offset", defaultValue = "0") int offset,
369
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
370
			throws ProfitMandiBusinessException {
371
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
372
		List<TagRanking> tagRanking = null;
373
 
374
		long size = 0;
24123 tejbeer 375
		tagRanking = tagRankingRepository.selectAllTagRanking(offset, limit);
24106 tejbeer 376
		if (!tagRanking.isEmpty()) {
24123 tejbeer 377
 
24106 tejbeer 378
			model.addAttribute("tagRanking", tagRanking);
379
			model.addAttribute("start", offset + 1);
380
			model.addAttribute("size", size);
381
			model.addAttribute("url", "/getPaginatedfeature");
382
 
383
		} else {
384
			model.addAttribute("tagRanking", tagRanking);
385
		}
386
		return "feature-paginated";
387
	}
24123 tejbeer 388
 
24106 tejbeer 389
	@RequestMapping(value = "/itemfeature", method = RequestMethod.POST)
24123 tejbeer 390
	public String Itemfeature(HttpServletRequest request, @RequestBody ItemFeatureDataModel itemFeatureDatatModel,
391
			Model model) throws Exception {
24106 tejbeer 392
 
393
		TagRanking tagRanking = new TagRanking();
394
		tagRanking.setRankPoints(itemFeatureDatatModel.getRankPoints());
395
		tagRanking.setCatalogItemId(itemFeatureDatatModel.getCatalogItemId());
396
		tagRanking.setFeature(itemFeatureDatatModel.getFeature());
24123 tejbeer 397
 
398
		LOGGER.info("tagRanking" + tagRanking);
399
		tagRankingRepository.persist(tagRanking);
24106 tejbeer 400
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
401
		return "response";
402
	}
403
 
24465 tejbeer 404
	@RequestMapping(value = "/getDemolistbyfofoId", method = RequestMethod.GET)
405
	public String DemoListbyFofoId(HttpServletRequest request,
406
			@RequestParam(required = false, defaultValue = "0") int fofoId, Model model) throws Exception {
407
 
408
		List<Integer> fofoIds = fofoStoreRepository.selectAll().stream().map(x -> x.getId())
409
				.collect(Collectors.toList());
410
		Map<Integer, CustomRetailer> customRetailersMap = retailerService.getFofoRetailers(fofoIds);
411
		String customRetailers = JSONObject.valueToString(customRetailersMap.values());
412
		List<String> serailNumberList = liveDemoBillingRespository.selectAllSerialNumber();
413
		LOGGER.info("serailNumberList" + serailNumberList);
414
		List<InventoryItem> inventoryItem = null;
415
		List<InventoryItem> inventoryItem1 = new ArrayList<>();
416
		if (fofoId > 0) {
417
			List<Item> items = itemRepository.selectAllByBrand("Live Demo");
418
			Set<Integer> itemIds = new HashSet<>();
419
			for (Item Item : items) {
420
				itemIds.add(Item.getId());
421
			}
422
			inventoryItem = inventoryItemRepository.selectByFofoIdItemIds(fofoId, itemIds);
423
 
424
			Set<String> serial = new HashSet<>();
425
			for (InventoryItem invItem : inventoryItem) {
24658 tejbeer 426
				if (!serailNumberList.contains(invItem.getSerialNumber())) {
24465 tejbeer 427
					inventoryItem1.add(invItem);
428
				}
429
 
430
			}
431
 
432
			LOGGER.info("inventoyItem" + inventoryItem1);
433
			model.addAttribute("customRetailers", customRetailers);
434
			model.addAttribute("liveDemo", inventoryItem1);
435
 
436
			CustomRetailer fofoIdsAndRetailerName = retailerService.getFofoRetailer(fofoId);
437
 
438
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
439
 
440
		}
441
 
442
		else {
443
			model.addAttribute("customRetailers", customRetailers);
444
			model.addAttribute("liveDemo", inventoryItem1);
445
		}
446
 
447
		return "live_demo_billing";
448
 
449
	}
450
 
451
	@RequestMapping(value = "/enableliveDemoSerailNumber", method = RequestMethod.POST)
452
	public String EnableliveDemoSerailNumber(HttpServletRequest request, @RequestParam String serial_number,
453
			Model model) throws Exception {
454
 
455
		LiveDemoSerialNumber liveDemoSerialNumber = new LiveDemoSerialNumber();
456
		liveDemoSerialNumber.setSerialNumber(serial_number);
457
 
458
		liveDemoBillingRespository.persist(liveDemoSerialNumber);
459
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
460
		return "response";
461
	}
462
 
24739 tejbeer 463
	@RequestMapping(value = "/getInProcessOrder", method = RequestMethod.GET)
464
	public String getInProcessOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
465
 
466
		List<com.spice.profitmandi.dao.entity.transaction.Order> inProcessorder = orderRepository
467
				.selectAllOrderBeforeTwoDaysByStatus(OrderStatus.SUBMITTED_FOR_PROCESSING);
468
		List<com.spice.profitmandi.dao.entity.transaction.Order> pendingPaymentorder = orderRepository
469
				.selectAllOrderDatesBetweenByStatus(LocalDateTime.now().minusDays(30),LocalDateTime.now(),OrderStatus.PAYMENT_PENDING);
470
		List<com.spice.profitmandi.dao.entity.transaction.Order> failedPaymentorder = orderRepository
471
				.selectAllOrderDatesBetweenByStatus(LocalDateTime.now().minusDays(30),LocalDateTime.now(),OrderStatus.PAYMENT_FAILED);
24658 tejbeer 472
		pendingPaymentorder.addAll(failedPaymentorder);
24739 tejbeer 473
 
474
		model.addAttribute("inProcessorder", inProcessorder);
475
		model.addAttribute("pendingPaymentorder", pendingPaymentorder);
476
 
477
		return "review_order";
478
	}
479
 
480
	@RequestMapping(value = "/getKeepInTabOrder", method = RequestMethod.GET)
481
	public String getKeepInTabOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
482
 
483
		List<com.spice.profitmandi.dao.entity.transaction.Order> keepatab = orderRepository
484
				.selectAllOrder(OrderStatus.KEEP_A_TAB);
485
 
486
		model.addAttribute("keepatab", keepatab);
487
 
488
		return "keep-a-tab";
489
	}
490
 
491
	@RequestMapping(value = "/closeOrder", method = RequestMethod.POST)
492
	public String closeOrder(HttpServletRequest request, @RequestParam int orderId, Model model) throws Exception {
24658 tejbeer 493
 
24739 tejbeer 494
		Order order = orderRepository.selectById(orderId);
495
	     if (order != null){
496
			order.setStatus(OrderStatus.CANCELLED_DUE_TO_LOW_INVENTORY);
24658 tejbeer 497
 
24739 tejbeer 498
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
499
 
500
		} else{
501
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
502
 
503
		}
504
		return "response";
24658 tejbeer 505
	}
506
 
24739 tejbeer 507
	@RequestMapping(value = "/cancelOrder", method = RequestMethod.POST)
508
	public String cancelOrder(HttpServletRequest request, @RequestParam int orderId, @RequestParam String reason,
509
			@RequestParam OrderStatus orderStatus, Model model) throws Exception {
510
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
511
		User userInfo = userRepository.selectById(loginDetails.getFofoId());
512
		LOGGER.info("status" + orderStatus);
513
		try {
514
			orderRepository.refundOrder(orderId, userInfo.getName(), reason, orderStatus);
515
 
516
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
517
 
518
		} catch (TransactionServiceException | TException e) {
519
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
520
 
521
		}
522
		return "response";
523
	}
524
 
21577 ashik.ali 525
}