Subversion Repositories SmartDukaan

Rev

Rev 27739 | Rev 27867 | 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;
26482 tejbeer 5
import java.io.IOException;
22486 ashik.ali 6
import java.io.InputStream;
26279 amit.gupta 7
import java.io.InputStreamReader;
26482 tejbeer 8
import java.net.URISyntaxException;
27738 tejbeer 9
import java.time.LocalDate;
23886 amit.gupta 10
import java.time.LocalDateTime;
27738 tejbeer 11
import java.time.LocalTime;
12
import java.time.YearMonth;
26279 amit.gupta 13
import java.time.format.DateTimeFormatter;
24465 tejbeer 14
import java.util.ArrayList;
25873 tejbeer 15
import java.util.Arrays;
26979 amit.gupta 16
import java.util.Collection;
24917 tejbeer 17
import java.util.HashMap;
24465 tejbeer 18
import java.util.HashSet;
24917 tejbeer 19
import java.util.Iterator;
21577 ashik.ali 20
import java.util.List;
21654 ashik.ali 21
import java.util.Map;
24917 tejbeer 22
import java.util.Optional;
24465 tejbeer 23
import java.util.Set;
24
import java.util.stream.Collectors;
21577 ashik.ali 25
 
26
import javax.servlet.http.HttpServletRequest;
21987 kshitij.so 27
import javax.servlet.http.HttpServletResponse;
21577 ashik.ali 28
 
26279 amit.gupta 29
import org.apache.commons.csv.CSVFormat;
30
import org.apache.commons.csv.CSVParser;
31
import org.apache.commons.csv.CSVRecord;
27544 amit.gupta 32
import org.apache.commons.io.FileUtils;
26299 amit.gupta 33
import org.apache.commons.lang3.StringUtils;
23886 amit.gupta 34
import org.apache.logging.log4j.LogManager;
23568 govind 35
import org.apache.logging.log4j.Logger;
24739 tejbeer 36
import org.apache.thrift.TException;
27583 tejbeer 37
import org.hibernate.type.CurrencyType;
24465 tejbeer 38
import org.json.JSONObject;
21577 ashik.ali 39
import org.springframework.beans.factory.annotation.Autowired;
23784 ashik.ali 40
import org.springframework.beans.factory.annotation.Qualifier;
21987 kshitij.so 41
import org.springframework.beans.factory.annotation.Value;
27544 amit.gupta 42
import org.springframework.core.io.ClassPathResource;
22486 ashik.ali 43
import org.springframework.core.io.InputStreamResource;
44
import org.springframework.http.HttpHeaders;
45
import org.springframework.http.HttpStatus;
25140 amit.gupta 46
import org.springframework.http.MediaType;
22472 ashik.ali 47
import org.springframework.http.ResponseEntity;
24917 tejbeer 48
import org.springframework.mail.javamail.JavaMailSender;
21577 ashik.ali 49
import org.springframework.stereotype.Controller;
21654 ashik.ali 50
import org.springframework.transaction.annotation.Transactional;
21577 ashik.ali 51
import org.springframework.ui.Model;
26279 amit.gupta 52
import org.springframework.web.bind.annotation.PostMapping;
22472 ashik.ali 53
import org.springframework.web.bind.annotation.RequestBody;
21577 ashik.ali 54
import org.springframework.web.bind.annotation.RequestMapping;
22472 ashik.ali 55
import org.springframework.web.bind.annotation.RequestMethod;
21577 ashik.ali 56
import org.springframework.web.bind.annotation.RequestParam;
26279 amit.gupta 57
import org.springframework.web.bind.annotation.RequestPart;
58
import org.springframework.web.multipart.MultipartFile;
21577 ashik.ali 59
 
21987 kshitij.so 60
import com.google.gson.Gson;
25698 tejbeer 61
import com.spice.profitmandi.common.enumuration.MessageType;
21577 ashik.ali 62
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
21612 ashik.ali 63
import com.spice.profitmandi.common.model.CustomCurrentInventorySnapshot;
24106 tejbeer 64
import com.spice.profitmandi.common.model.CustomRetailer;
22472 ashik.ali 65
import com.spice.profitmandi.common.model.InventoryItemAgingModel;
24106 tejbeer 66
import com.spice.profitmandi.common.model.ItemFeatureDataModel;
24917 tejbeer 67
import com.spice.profitmandi.common.model.NotifyItemIdModel;
68
import com.spice.profitmandi.common.model.NotifyOrderIdModel;
69
import com.spice.profitmandi.common.model.NotifyOrderModel;
25640 tejbeer 70
import com.spice.profitmandi.common.model.OrderCancellationModel;
25140 amit.gupta 71
import com.spice.profitmandi.common.model.PdfModel;
21577 ashik.ali 72
import com.spice.profitmandi.common.model.ProfitMandiConstants;
25851 amit.gupta 73
import com.spice.profitmandi.common.model.SendNotificationModel;
22472 ashik.ali 74
import com.spice.profitmandi.common.util.ExcelUtils;
25140 amit.gupta 75
import com.spice.profitmandi.common.util.PdfUtils;
24123 tejbeer 76
import com.spice.profitmandi.dao.entity.catalog.Item;
24950 tejbeer 77
import com.spice.profitmandi.dao.entity.catalog.TagListing;
24106 tejbeer 78
import com.spice.profitmandi.dao.entity.catalog.TagRanking;
27583 tejbeer 79
import com.spice.profitmandi.dao.entity.fofo.CurrentInventorySnapshot;
25140 amit.gupta 80
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
24917 tejbeer 81
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
24465 tejbeer 82
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
83
import com.spice.profitmandi.dao.entity.fofo.LiveDemoSerialNumber;
26031 tejbeer 84
import com.spice.profitmandi.dao.entity.transaction.NotifyCancel;
24917 tejbeer 85
import com.spice.profitmandi.dao.entity.transaction.NotifyColorChange;
25066 tejbeer 86
import com.spice.profitmandi.dao.entity.transaction.NotifyMessage;
24917 tejbeer 87
import com.spice.profitmandi.dao.entity.transaction.NotifyOrder;
24739 tejbeer 88
import com.spice.profitmandi.dao.entity.transaction.Order;
27738 tejbeer 89
import com.spice.profitmandi.dao.model.BrandItemWiseTertiaryModel;
27723 tejbeer 90
import com.spice.profitmandi.dao.model.BrandWiseTertiaryModel;
26482 tejbeer 91
import com.spice.profitmandi.dao.model.ContentPojo;
27738 tejbeer 92
import com.spice.profitmandi.dao.model.OpenPoItemModel;
27723 tejbeer 93
import com.spice.profitmandi.dao.model.OpenPoModel;
27738 tejbeer 94
import com.spice.profitmandi.dao.model.OurPurchaseItemModel;
27723 tejbeer 95
import com.spice.profitmandi.dao.model.OurPurchaseModel;
96
import com.spice.profitmandi.dao.model.SecondaryOrderBillingModel;
27738 tejbeer 97
import com.spice.profitmandi.dao.model.SecondaryOrderItemBillingModel;
26498 amit.gupta 98
import com.spice.profitmandi.dao.model.Specification;
99
import com.spice.profitmandi.dao.model.SpecificationGroup;
24123 tejbeer 100
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
24950 tejbeer 101
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
24106 tejbeer 102
import com.spice.profitmandi.dao.repository.catalog.TagRankingRepository;
24465 tejbeer 103
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
26482 tejbeer 104
import com.spice.profitmandi.dao.repository.dtr.Mongo;
24917 tejbeer 105
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
24203 amit.gupta 106
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
27723 tejbeer 107
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
24465 tejbeer 108
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
109
import com.spice.profitmandi.dao.repository.fofo.LiveDemoBillingRespository;
24917 tejbeer 110
import com.spice.profitmandi.dao.repository.inventory.NotifyStatus;
26031 tejbeer 111
import com.spice.profitmandi.dao.repository.transaction.NotifyCancelOrderRepository;
24917 tejbeer 112
import com.spice.profitmandi.dao.repository.transaction.NotifyColorChangeRepository;
113
import com.spice.profitmandi.dao.repository.transaction.NotifyItemRepository;
25066 tejbeer 114
import com.spice.profitmandi.dao.repository.transaction.NotifyMessageRepository;
24917 tejbeer 115
import com.spice.profitmandi.dao.repository.transaction.NotifyOrderRespository;
24658 tejbeer 116
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
27723 tejbeer 117
import com.spice.profitmandi.dao.repository.warehouse.WarehousePurchaseOrderRepository;
118
import com.spice.profitmandi.dao.repository.warehouse.WarehouseScanRepository;
25851 amit.gupta 119
import com.spice.profitmandi.service.NotificationService;
22927 ashik.ali 120
import com.spice.profitmandi.service.inventory.InventoryService;
27516 amit.gupta 121
import com.spice.profitmandi.service.order.OrderService;
24465 tejbeer 122
import com.spice.profitmandi.service.user.RetailerService;
22139 amit.gupta 123
import com.spice.profitmandi.web.model.LoginDetails;
22069 ashik.ali 124
import com.spice.profitmandi.web.util.CookiesProcessor;
24106 tejbeer 125
import com.spice.profitmandi.web.util.MVCResponseSender;
21577 ashik.ali 126
 
24658 tejbeer 127
import in.shop2020.model.v1.order.OrderStatus;
24739 tejbeer 128
import in.shop2020.model.v1.order.TransactionServiceException;
24658 tejbeer 129
 
21577 ashik.ali 130
@Controller
24123 tejbeer 131
@Transactional(rollbackFor = Throwable.class)
21577 ashik.ali 132
public class InventoryController {
21987 kshitij.so 133
 
23568 govind 134
	private static final Logger LOGGER = LogManager.getLogger(InventoryController.class);
26482 tejbeer 135
 
26292 amit.gupta 136
	private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/yyyy H:m:s");
21987 kshitij.so 137
 
27583 tejbeer 138
	private static final List<String> imeis = Arrays.asList("351030944216680", "351030944217183", "351030944217886",
139
			"351030944507286", "351081710231270", "351081710238713", "351081710238796", "351081710241279",
140
			"351081710244737", "355777112655976");
141
 
21577 ashik.ali 142
	@Autowired
22927 ashik.ali 143
	private CookiesProcessor cookiesProcessor;
24123 tejbeer 144
 
22354 ashik.ali 145
	@Autowired
23784 ashik.ali 146
	@Qualifier("fofoInventoryService")
22927 ashik.ali 147
	private InventoryService inventoryService;
24465 tejbeer 148
 
24203 amit.gupta 149
	@Autowired
24950 tejbeer 150
	TagListingRepository tagListingRepository;
151
 
152
	@Autowired
24203 amit.gupta 153
	private CurrentInventorySnapshotRepository currentInventorySnapshotRepository;
24123 tejbeer 154
 
24106 tejbeer 155
	@Autowired
156
	private TagRankingRepository tagRankingRepository;
24123 tejbeer 157
 
24106 tejbeer 158
	@Autowired
24465 tejbeer 159
	private InventoryItemRepository inventoryItemRepository;
160
 
161
	@Autowired
162
	private LiveDemoBillingRespository liveDemoBillingRespository;
163
 
164
	@Autowired
24123 tejbeer 165
	private ItemRepository itemRepository;
166
 
167
	@Autowired
26512 amit.gupta 168
	private Gson gson;
169
 
170
	@Autowired
24465 tejbeer 171
	private RetailerService retailerService;
172
 
173
	@Autowired
24106 tejbeer 174
	private MVCResponseSender mvcResponseSender;
24123 tejbeer 175
 
24465 tejbeer 176
	@Autowired
177
	FofoStoreRepository fofoStoreRepository;
178
 
24658 tejbeer 179
	@Autowired
180
	private OrderRepository orderRepository;
181
 
24739 tejbeer 182
	@Autowired
24917 tejbeer 183
	private NotifyItemRepository notifyItemRepository;
24739 tejbeer 184
 
24917 tejbeer 185
	@Autowired
186
	private NotifyColorChangeRepository notifyColorChangeRepository;
187
 
188
	@Autowired
189
	private NotifyOrderRespository notifyOrderRespository;
190
 
191
	@Autowired
25851 amit.gupta 192
	private NotificationService notificationService;
193
 
194
	@Autowired
25066 tejbeer 195
	private NotifyMessageRepository notifyMessageRepository;
196
 
197
	@Autowired
24917 tejbeer 198
	private UserAccountRepository userAccountRepository;
199
 
27516 amit.gupta 200
	@Autowired
201
	private OrderService orderService;
27583 tejbeer 202
 
21987 kshitij.so 203
	@Value("${saholic.api.host}")
204
	private String host;
23786 amit.gupta 205
 
21987 kshitij.so 206
	@Value("${saholic.api.port}")
207
	private int port;
23786 amit.gupta 208
 
21987 kshitij.so 209
	@Value("${saholic.api.webapp}")
210
	private String webapp;
211
 
24917 tejbeer 212
	@Autowired
213
	JavaMailSender mailSender;
214
 
26031 tejbeer 215
	@Autowired
216
	private NotifyCancelOrderRepository notifyCancelOrderRepository;
217
 
26482 tejbeer 218
	@Autowired
27723 tejbeer 219
	private WarehousePurchaseOrderRepository warehousePurchaseOrderRepository;
220
 
221
	@Autowired
222
	private WarehouseScanRepository warehouseScanRepository;
223
 
224
	@Autowired
225
	private FofoOrderRepository fofoOrderRepository;
226
	@Autowired
26482 tejbeer 227
	private Mongo mongoClient;
228
 
23786 amit.gupta 229
	@RequestMapping(value = "/getCurrentInventorySnapshot")
230
	public String getCurrentAvailability(HttpServletRequest request,
231
			@RequestParam(name = "offset", defaultValue = "0") int offset,
232
			@RequestParam(name = "limit", defaultValue = "10") int limit,
24123 tejbeer 233
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
23786 amit.gupta 234
			throws ProfitMandiBusinessException {
22927 ashik.ali 235
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 236
		Map<String, Object> map = inventoryService.getCurrentInventorySnapshot(loginDetails.getFofoId(), offset, limit,
237
				searchTerm);
22927 ashik.ali 238
		model.addAllAttributes(map);
21987 kshitij.so 239
		return "inventory-snapshot";
21612 ashik.ali 240
	}
21987 kshitij.so 241
 
23786 amit.gupta 242
	@RequestMapping(value = "/getBadInventorySnapshot")
243
	public String getBadAvailability(HttpServletRequest request,
244
			@RequestParam(name = "offset", defaultValue = "0") int offset,
245
			@RequestParam(name = "limit", defaultValue = "10") int limit,
246
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
247
			throws ProfitMandiBusinessException {
24123 tejbeer 248
		if (searchTerm == null) {
249
			searchTerm = "";
24052 amit.gupta 250
		}
22927 ashik.ali 251
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 252
		Map<String, Object> map = inventoryService.getBadInventorySnapshot(loginDetails.getFofoId(), offset, limit,
253
				searchTerm);
22927 ashik.ali 254
		model.addAllAttributes(map);
21987 kshitij.so 255
		return "bad-inventory-snapshot";
256
	}
257
 
23786 amit.gupta 258
	@RequestMapping(value = "/getPaginatedCurrentInventorySnapshot")
259
	public String getPaginatedCurrentInventorySnapshot(HttpServletRequest request,
260
			@RequestParam(name = "offset", defaultValue = "0") int offset,
261
			@RequestParam(name = "limit", defaultValue = "10") int limit,
262
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
263
			throws ProfitMandiBusinessException {
24123 tejbeer 264
		if (searchTerm == null) {
265
			searchTerm = "";
24052 amit.gupta 266
		}
22927 ashik.ali 267
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 268
		Map<String, Object> map = inventoryService.getPaginatedCurrentInventorySnapshot(loginDetails.getFofoId(),
269
				offset, limit, searchTerm);
22927 ashik.ali 270
		model.addAllAttributes(map);
21987 kshitij.so 271
		return "inventory-snapshot-paginated";
272
	}
23786 amit.gupta 273
 
274
	@RequestMapping(value = "/getCatalog")
275
	public String getCatalog(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset,
27583 tejbeer 276
			@RequestParam(name = "limit", defaultValue = "20") int limit,
277
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
27618 tejbeer 278
			@RequestParam(name = "itemId", required = false, defaultValue = "0") int itemId,
279
			@RequestParam(name = "accesories", required = false, defaultValue = "0") boolean accesories,
27596 tejbeer 280
 
27618 tejbeer 281
			@RequestParam(name = "brand", required = false, defaultValue = "") String brand, Model model)
282
 
23786 amit.gupta 283
			throws ProfitMandiBusinessException {
22927 ashik.ali 284
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24123 tejbeer 285
		if (searchTerm == null) {
286
			searchTerm = "";
24052 amit.gupta 287
		}
24739 tejbeer 288
 
27583 tejbeer 289
		Map<String, Object> map = inventoryService.getCatalog(loginDetails.getFofoId(), offset, limit, searchTerm,
27618 tejbeer 290
				itemId, brand, accesories);
22927 ashik.ali 291
		model.addAllAttributes(map);
24203 amit.gupta 292
		model.addAttribute("hasGift", hasGift(loginDetails.getFofoId()));
24658 tejbeer 293
 
21987 kshitij.so 294
		return "catalog";
295
	}
23786 amit.gupta 296
 
24465 tejbeer 297
	// This method is currently hardcoded to faciliate watches sold as gift.
24203 amit.gupta 298
	private boolean hasGift(int fofoId) {
299
		try {
24465 tejbeer 300
			return currentInventorySnapshotRepository.selectByItemIdAndFofoId(ProfitMandiConstants.GIFT_ID, fofoId)
301
					.getAvailability() > 0;
24203 amit.gupta 302
		} catch (ProfitMandiBusinessException e) {
303
			return false;
304
		}
305
	}
306
 
27583 tejbeer 307
	/*
308
	 * @RequestMapping(value = "/getSimilarItem") public String
309
	 * getCatalog(HttpServletRequest request, @RequestParam(name = "offset",
310
	 * defaultValue = "0") int offset,
311
	 * 
312
	 * @RequestParam(name = "limit", defaultValue = "10") int limit, @RequestParam
313
	 * int catalogItemId,
314
	 * 
315
	 * @RequestParam(name = "searchTerm", required = false, defaultValue = "")
316
	 * String searchTerm, Model model) throws ProfitMandiBusinessException
317
	 * 
318
	 * { LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
319
	 * 
320
	 * if (catalogItemId != 0) { TagListing tagListing = null; List<Item> items =
321
	 * itemRepository.selectAllByCatalogItemId(catalogItemId); Map<Integer, Float>
322
	 * itemPriceing = new HashMap<>(); List<CustomCurrentInventorySnapshot>
323
	 * inventoryList = new ArrayList<>();
324
	 * 
325
	 * for (Item item : items) { tagListing =
326
	 * tagListingRepository.selectByItemId(item.getId());
327
	 * CustomCurrentInventorySnapshot customCurrentInventorySnapshot =
328
	 * inventoryService .checkItemAvailability(item.getId(),
329
	 * loginDetails.getFofoId()); inventoryList.add(customCurrentInventorySnapshot);
330
	 * itemPriceing.put(item.getId(), tagListing.getMop()); } if (tagListing !=
331
	 * null) {
332
	 * 
333
	 * float tagStartPrice = tagListing.getMop() - 1000; float tagEndPrice =
334
	 * tagListing.getMop() + 2000; List<TagListing> tagMoplists =
335
	 * tagListingRepository.selectAllBetweenMopPrice(tagStartPrice, tagEndPrice);
336
	 * 
337
	 * for (TagListing tagListings : tagMoplists) {
338
	 * 
339
	 * int TagListingItemid = tagListings.getItemId();
340
	 * 
341
	 * itemPriceing.put(TagListingItemid, tagListings.getMop());
342
	 * CustomCurrentInventorySnapshot customCurrentInventorySnapshotMopPrice =
343
	 * inventoryService .checkItemAvailability(TagListingItemid,
344
	 * loginDetails.getFofoId());
345
	 * 
346
	 * inventoryList.add(customCurrentInventorySnapshotMopPrice); }
347
	 * 
348
	 * }
349
	 * 
350
	 * else { LOGGER.info("tagBrandlist is null"); }
351
	 * 
352
	 * model.addAttribute("inventoryLists", inventoryList);
353
	 * model.addAttribute("itemPriceing", itemPriceing);
354
	 * 
355
	 * }
356
	 * 
357
	 * return "catalog-similar-Id"; }
358
	 */
23786 amit.gupta 359
	@RequestMapping(value = "/getPaginatedCatalog")
360
	public String getCatalogPaginated(HttpServletRequest request,
361
			@RequestParam(name = "offset", defaultValue = "0") int offset,
27583 tejbeer 362
			@RequestParam(name = "limit", defaultValue = "20") int limit,
363
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
27596 tejbeer 364
			@RequestParam(name = "itemId", required = false, defaultValue = "0") int itemId,
27618 tejbeer 365
			@RequestParam(name = "accesories", required = false, defaultValue = "0") boolean accesories,
366
			@RequestParam(name = "brand", required = false, defaultValue = "") String brand, Model model)
23786 amit.gupta 367
			throws ProfitMandiBusinessException {
22927 ashik.ali 368
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24123 tejbeer 369
		if (searchTerm == null) {
370
			searchTerm = "";
24052 amit.gupta 371
		}
23786 amit.gupta 372
		Map<String, Object> map = inventoryService.getPaginatedCatalog(loginDetails.getFofoId(), offset, limit,
27618 tejbeer 373
				searchTerm, itemId, brand, accesories);
22927 ashik.ali 374
		model.addAllAttributes(map);
21987 kshitij.so 375
		return "catalog-paginated";
376
	}
377
 
23786 amit.gupta 378
	@RequestMapping(value = "/checkItemAvailability")
379
	public String getItemAvailability(HttpServletRequest request,
380
			@RequestParam(name = ProfitMandiConstants.ITEM_ID) int itemId, Model model)
381
			throws ProfitMandiBusinessException {
22927 ashik.ali 382
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 383
		CustomCurrentInventorySnapshot customCurrentInventorySnapshot = inventoryService.checkItemAvailability(itemId,
384
				loginDetails.getFofoId());
25812 amit.gupta 385
		/*
386
		 * customCurrentInventorySnapshot
387
		 * .setIconUrl(Utils.getIconUrl(customCurrentInventorySnapshot.getCatalogItemId(
388
		 * ), host, port, webapp));
389
		 */
22927 ashik.ali 390
		model.addAttribute("currentInventorySnapshot", new Gson().toJson(customCurrentInventorySnapshot));
391
		return "current-item-availability";
23786 amit.gupta 392
 
21577 ashik.ali 393
	}
23786 amit.gupta 394
 
23192 ashik.ali 395
	@RequestMapping(value = "/cart", method = RequestMethod.POST)
23786 amit.gupta 396
	public String addToCart(HttpServletRequest request, @RequestParam(name = "cartData") String cartData, Model model)
397
			throws ProfitMandiBusinessException {
22927 ashik.ali 398
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 399
 
22927 ashik.ali 400
		Map<String, Object> map = inventoryService.addToCart(cartData, loginDetails.getFofoId());
401
		model.addAllAttributes(map);
21987 kshitij.so 402
		return "cart";
403
	}
23786 amit.gupta 404
 
23192 ashik.ali 405
	@RequestMapping(value = "/validate-cart", method = RequestMethod.POST)
23786 amit.gupta 406
	public String validateCart(HttpServletRequest request, HttpServletResponse response,
407
			@RequestParam(name = "cartData") String cartData, Model model) throws ProfitMandiBusinessException {
22927 ashik.ali 408
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 409
 
22927 ashik.ali 410
		Map<String, Object> map = inventoryService.validateCart(cartData, loginDetails.getFofoId());
411
		model.addAllAttributes(map);
21987 kshitij.so 412
		return "validate-cart";
413
	}
414
 
23786 amit.gupta 415
	@RequestMapping(value = "/grnHistory")
24123 tejbeer 416
	public String getGrnHistory(HttpServletRequest request, @RequestParam(required = false) LocalDateTime startTime,
23886 amit.gupta 417
			@RequestParam(required = false) LocalDateTime endTime,
23786 amit.gupta 418
			@RequestParam(name = "offset", defaultValue = "0") int offset,
419
			@RequestParam(name = "limit", defaultValue = "10") int limit,
420
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE, defaultValue = "") String purchaseReference,
421
			@RequestParam(name = "searchType", defaultValue = "") String searchType, Model model)
422
			throws ProfitMandiBusinessException {
22927 ashik.ali 423
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24123 tejbeer 424
		Map<String, Object> map = inventoryService.getGrnHistory(loginDetails.getFofoId(), startTime, endTime, offset,
425
				limit, purchaseReference, searchType);
22927 ashik.ali 426
		model.addAllAttributes(map);
21987 kshitij.so 427
		return "grn-history";
21636 ashik.ali 428
	}
21987 kshitij.so 429
 
25140 amit.gupta 430
	@RequestMapping(value = "/downloadPurchaseInvoices")
431
	public ResponseEntity<?> downloadPurchaseInvoices(HttpServletRequest request,
432
			@RequestParam(required = false) LocalDateTime startTime,
433
			@RequestParam(required = false) LocalDateTime endTime,
434
			@RequestParam(name = "offset", defaultValue = "0") int offset,
435
			@RequestParam(name = "limit", defaultValue = "10") int limit,
436
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE, defaultValue = "") String purchaseReference,
437
			@RequestParam(name = "searchType", defaultValue = "") String searchType, Model model)
438
			throws ProfitMandiBusinessException {
439
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
440
		Map<String, Object> map = inventoryService.getGrnHistory(loginDetails.getFofoId(), startTime, endTime, offset,
441
				limit, purchaseReference, searchType);
442
 
443
		List<FofoOrder> fofoOrders = (List<FofoOrder>) map.get("saleHistories");
444
 
445
		if (fofoOrders.size() == 0) {
446
			throw new ProfitMandiBusinessException("Search criteria", "", "No orders found for criteria");
447
		}
448
 
449
		final HttpHeaders headers = new HttpHeaders();
450
		headers.setContentType(MediaType.APPLICATION_PDF);
451
		headers.set("Content-disposition", "inline; filename=invoices.pdf");
452
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
453
		List<PdfModel> pdfModels = new ArrayList<>();
25371 tejbeer 454
		/*
455
		 * for (FofoOrder fofoOrder : fofoOrders) { try {
456
		 * pdfModels.add(orderService.getInvoicePdfModel(fofoOrder.getId())); } catch
457
		 * (Exception e) {
458
		 * LOGGER.info("could not create invoice for {}, invoice number {}",
459
		 * fofoOrder.getId(), fofoOrder.getInvoiceNumber()); } }
460
		 */
25140 amit.gupta 461
		PdfUtils.generateAndWrite(pdfModels, byteArrayOutputStream);
462
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
463
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
464
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
465
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
466
	}
467
 
23786 amit.gupta 468
	@RequestMapping(value = "/getPaginatedGrnHistory")
469
	public String getPaginatedGrnHistory(HttpServletRequest request,
23886 amit.gupta 470
			@RequestParam(required = false) LocalDateTime startTime,
471
			@RequestParam(required = false) LocalDateTime endTime,
23786 amit.gupta 472
			@RequestParam(name = "offset", defaultValue = "0") int offset,
473
			@RequestParam(name = "limit", defaultValue = "10") int limit,
474
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE, defaultValue = "") String purchaseReference,
475
			@RequestParam(name = "searchType", defaultValue = "") String searchType, Model model)
476
			throws ProfitMandiBusinessException {
22927 ashik.ali 477
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24123 tejbeer 478
		Map<String, Object> map = inventoryService.getPaginatedGrnHistory(loginDetails.getFofoId(), startTime, endTime,
479
				offset, limit);
22927 ashik.ali 480
		model.addAllAttributes(map);
21987 kshitij.so 481
		return "grn-history-paginated";
482
	}
483
 
23786 amit.gupta 484
	@RequestMapping(value = "/grnHistoryDetailByPurchaseId")
485
	public String grnHistoryByPurchaseId(HttpServletRequest request,
486
			@RequestParam(name = ProfitMandiConstants.PURCHASE_ID) int purchaseId, Model model)
487
			throws ProfitMandiBusinessException {
22927 ashik.ali 488
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 489
		Map<String, Object> map = inventoryService.getGrnHistoryDetail(loginDetails.getFofoId(), purchaseId, host, port,
490
				webapp);
22927 ashik.ali 491
		model.addAllAttributes(map);
21987 kshitij.so 492
		return "grn-details";
21636 ashik.ali 493
	}
21987 kshitij.so 494
 
23786 amit.gupta 495
	@RequestMapping(value = "/grnHistoryDetailByPurchaseReference")
496
	public String grnHistoryByPurchaseReference(HttpServletRequest request,
497
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE) String purchaseReference, Model model)
498
			throws ProfitMandiBusinessException {
22927 ashik.ali 499
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 500
		Map<String, Object> map = inventoryService.getGrnHistoryDetail(loginDetails.getFofoId(), purchaseReference,
501
				host, port, webapp);
22927 ashik.ali 502
		model.addAllAttributes(map);
21987 kshitij.so 503
		return "grn-details";
21654 ashik.ali 504
	}
23786 amit.gupta 505
 
26248 amit.gupta 506
	@RequestMapping(value = "/activatedImeis")
507
	public String activatedImeis(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
508
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
509
 
510
		List<InventoryItem> inventoryItems = inventoryItemRepository.selectByActivatedNotSold(loginDetails.getFofoId());
511
		inventoryItems.stream().forEach(x -> {
512
			try {
513
				x.setItem(itemRepository.selectById(x.getItemId()));
514
			} catch (Exception e) {
515
				e.printStackTrace();
516
			}
517
		});
518
		model.addAttribute("inventoryItems", inventoryItems);
519
		return "activated-imeis";
520
	}
27583 tejbeer 521
 
27516 amit.gupta 522
	@RequestMapping(value = "/view-invoices")
523
	public String viewInvoices(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
524
		return "view-dummy-invoices";
525
	}
27583 tejbeer 526
 
27516 amit.gupta 527
	@RequestMapping(value = "/dummy-invoices")
27583 tejbeer 528
	public ResponseEntity<?> downloadInvoices(HttpServletRequest request, @RequestParam String serialNumber,
529
			Model model) throws ProfitMandiBusinessException {
27544 amit.gupta 530
		byte[] bytes = null;
27583 tejbeer 531
		if (!imeis.contains(serialNumber)) {
532
 
27544 amit.gupta 533
			PdfModel pdfModel = orderService.getDummyPdfModel(serialNumber);
534
			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
535
			PdfUtils.generateAndWrite(Arrays.asList(pdfModel), byteArrayOutputStream);
536
			bytes = byteArrayOutputStream.toByteArray();
537
		} else {
538
			ClassPathResource resource = new ClassPathResource("/META-INF/" + serialNumber + ".pdf");
539
			try {
540
				bytes = FileUtils.readFileToByteArray(resource.getFile());
27583 tejbeer 541
			} catch (Exception e) {
542
 
27544 amit.gupta 543
			}
544
		}
27516 amit.gupta 545
		final HttpHeaders headers = new HttpHeaders();
546
		headers.setContentType(MediaType.APPLICATION_PDF);
27544 amit.gupta 547
		headers.set("Content-disposition", "inline; filename=invoice-" + serialNumber + ".pdf");
548
		headers.setContentLength(bytes.length);
549
		final InputStream inputStream = new ByteArrayInputStream(bytes);
27516 amit.gupta 550
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
551
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
552
	}
26248 amit.gupta 553
 
22472 ashik.ali 554
	@RequestMapping(value = "/getInventoryItemAgingByInterval", method = RequestMethod.POST)
23786 amit.gupta 555
	public String getInventoryItemAgingByInterval(HttpServletRequest request, @RequestBody List<Integer> intervals,
556
			Model model, @RequestParam(name = "searchContent", defaultValue = "") String searchContent,
557
			@RequestParam(name = "offset", defaultValue = "0") int offset,
558
			@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
22927 ashik.ali 559
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 560
		Map<String, Object> map = inventoryService.getPaginatedItemAgingByInterval(loginDetails.getFofoId(), intervals,
561
				searchContent, offset, limit);
22927 ashik.ali 562
		model.addAllAttributes(map);
22523 ashik.ali 563
		return "item-aging";
564
	}
23786 amit.gupta 565
 
22523 ashik.ali 566
	@RequestMapping(value = "/downloadInventoryItemAgingByInterval", method = RequestMethod.POST)
23786 amit.gupta 567
	public ResponseEntity<?> downloadInventoryItemAgingByInterval(HttpServletRequest request,
568
			@RequestBody List<Integer> intervals, Model model) throws ProfitMandiBusinessException {
22927 ashik.ali 569
		LOGGER.info("Request received at url{} with body {}", request.getRequestURI(), intervals);
570
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 571
 
572
		List<InventoryItemAgingModel> inventoryItemAgingModels = inventoryService
573
				.getItemAgingByInterval(fofoDetails.getFofoId(), intervals);
574
 
22486 ashik.ali 575
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
576
		ExcelUtils.writeInventoryItemAgingModels(inventoryItemAgingModels, intervals, byteArrayOutputStream);
23786 amit.gupta 577
 
578
		final HttpHeaders headers = new HttpHeaders();
579
		// private static final String CONTENT_TYPE_XLSX =
580
		// "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
581
		headers.set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
582
		// headers.set("Content-Type", "application/vnd.ms-excel");
22486 ashik.ali 583
		headers.set("Content-disposition", "inline; filename=InventoryItemAging.xlsx");
23786 amit.gupta 584
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
585
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
586
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
587
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
22472 ashik.ali 588
	}
27583 tejbeer 589
 
26968 amit.gupta 590
	@RequestMapping(value = "/aging-report", method = RequestMethod.GET)
27583 tejbeer 591
	public ResponseEntity<?> downloadInventoryItemAgingByInterval(HttpServletRequest request)
592
			throws ProfitMandiBusinessException {
593
 
594
		List<Integer> intervals = Arrays.asList(5, 15, 30, 45);
26961 amit.gupta 595
		List<InventoryItemAgingModel> inventoryItemAgingModels = inventoryService.getItemAgingByInterval(intervals)
26979 amit.gupta 596
				.values().stream().flatMap(Collection::stream).collect(Collectors.toList());
597
		LOGGER.info("Fofo Id {}", inventoryItemAgingModels.get(0).getFofoId());
26961 amit.gupta 598
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
599
		ExcelUtils.writeInventoryItemAgingModels(inventoryItemAgingModels, intervals, byteArrayOutputStream);
27583 tejbeer 600
 
26961 amit.gupta 601
		final HttpHeaders headers = new HttpHeaders();
602
		// private static final String CONTENT_TYPE_XLSX =
603
		// "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
604
		headers.set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
605
		// headers.set("Content-Type", "application/vnd.ms-excel");
606
		headers.set("Content-disposition", "inline; filename=InventoryItemAging.xlsx");
607
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
608
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
609
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
610
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
611
	}
24123 tejbeer 612
 
24106 tejbeer 613
	@RequestMapping(value = "/featurePanel", method = RequestMethod.GET)
25371 tejbeer 614
	public String FeaturePanel(HttpServletRequest request, Model model) throws Exception {
21987 kshitij.so 615
 
24106 tejbeer 616
		List<TagRanking> tagRanking = null;
25362 tejbeer 617
		tagRanking = tagRankingRepository.getAllTagRanking();
24106 tejbeer 618
		LOGGER.info("tagRanking" + tagRanking);
619
		if (!tagRanking.isEmpty()) {
25371 tejbeer 620
			Set<Integer> catalogIds = tagRanking.stream().map(x -> x.getCatalogItemId()).collect(Collectors.toSet());
24798 tejbeer 621
			List<Item> items = itemRepository.selectAllByCatalogIds(catalogIds);
622
			Map<Integer, String> catalogDescription = items.stream().collect(Collectors.toMap(x -> x.getCatalogItemId(),
623
					x -> x.getItemDescription(), (description1, description2) -> description1));
624
 
625
			LOGGER.info("catalogDescription" + catalogDescription);
24465 tejbeer 626
			model.addAttribute("tagRanking", tagRanking);
24798 tejbeer 627
			model.addAttribute("catalogDescription", catalogDescription);
24106 tejbeer 628
 
629
		} else {
630
			model.addAttribute("tagRanking", tagRanking);
25362 tejbeer 631
 
24106 tejbeer 632
		}
633
 
634
		return "feature";
635
 
636
	}
24123 tejbeer 637
 
26279 amit.gupta 638
	@PostMapping(value = "/imei/upload")
26294 amit.gupta 639
	public String uploadContent(HttpServletRequest request, @RequestPart("file") MultipartFile file, Model model)
26279 amit.gupta 640
			throws Exception {
26482 tejbeer 641
		/*
642
		 * if(brand==null) { throw new
643
		 * ProfitMandiBusinessException("Please select brand", "Brand empty",
644
		 * "Brand required"); }
645
		 */
26279 amit.gupta 646
		List<CSVRecord> masterDataList = readFile(file);
647
 
26482 tejbeer 648
		Map<String, LocalDateTime> imeisActivationMap = masterDataList.stream()
649
				.collect(Collectors.toMap(x -> x.get(0).trim(), x -> {
650
					if (!StringUtils.isEmpty(x.get(1).trim())) {
651
						return LocalDateTime.parse((String) (x.get(1).trim()), formatter);
26299 amit.gupta 652
					} else {
653
						return null;
654
					}
655
				}));
656
		inventoryService.addActivatedImeis(imeisActivationMap);
657
		model.addAttribute("response", true);
26294 amit.gupta 658
		return "response";
26279 amit.gupta 659
	}
660
 
661
	private List<CSVRecord> readFile(MultipartFile file) throws Exception {
662
		List<CSVRecord> records = null;
663
		try (CSVParser parser = new CSVParser(new InputStreamReader(file.getInputStream()), CSVFormat.DEFAULT)) {
664
			records = parser.getRecords();
665
			if (records.size() < 2) {
666
				throw new ProfitMandiBusinessException("Uploaded File", "", "No records Found");
667
			}
668
			records.remove(0);
26482 tejbeer 669
		} catch (Exception e) {
26279 amit.gupta 670
			throw new ProfitMandiBusinessException("Parsing Failed", "parse failed", "file parse failed");
671
		}
672
		return records;
673
	}
674
 
24106 tejbeer 675
	@RequestMapping(value = "/itemfeature", method = RequestMethod.POST)
24123 tejbeer 676
	public String Itemfeature(HttpServletRequest request, @RequestBody ItemFeatureDataModel itemFeatureDatatModel,
677
			Model model) throws Exception {
25371 tejbeer 678
		TagRanking tagRanking = tagRankingRepository.selectBycatalogItemId(itemFeatureDatatModel.getCatalogItemId());
679
		LOGGER.info("tagRanking" + tagRanking);
680
		if (tagRanking == null) {
681
			tagRanking = new TagRanking();
682
			tagRanking.setCatalogItemId(itemFeatureDatatModel.getCatalogItemId());
25363 tejbeer 683
		}
24106 tejbeer 684
		tagRanking.setFeature(itemFeatureDatatModel.getFeature());
25363 tejbeer 685
		tagRanking.setRankPoints(itemFeatureDatatModel.getRankPoints());
25371 tejbeer 686
 
24123 tejbeer 687
		tagRankingRepository.persist(tagRanking);
24106 tejbeer 688
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
689
		return "response";
690
	}
691
 
24798 tejbeer 692
	@RequestMapping(value = "/removeFeature", method = RequestMethod.DELETE)
693
	public String removeTagRankingEnteries(HttpServletRequest request,
694
			@RequestParam(name = "id", defaultValue = "0") int id, Model model) throws Exception {
24917 tejbeer 695
 
24798 tejbeer 696
		tagRankingRepository.deleteById(id);
697
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
698
		return "response";
699
	}
700
 
24465 tejbeer 701
	@RequestMapping(value = "/getDemolistbyfofoId", method = RequestMethod.GET)
702
	public String DemoListbyFofoId(HttpServletRequest request,
703
			@RequestParam(required = false, defaultValue = "0") int fofoId, Model model) throws Exception {
704
 
705
		List<Integer> fofoIds = fofoStoreRepository.selectAll().stream().map(x -> x.getId())
706
				.collect(Collectors.toList());
707
		Map<Integer, CustomRetailer> customRetailersMap = retailerService.getFofoRetailers(fofoIds);
708
		String customRetailers = JSONObject.valueToString(customRetailersMap.values());
709
		List<String> serailNumberList = liveDemoBillingRespository.selectAllSerialNumber();
710
		LOGGER.info("serailNumberList" + serailNumberList);
711
		List<InventoryItem> inventoryItem = null;
712
		List<InventoryItem> inventoryItem1 = new ArrayList<>();
713
		if (fofoId > 0) {
714
			List<Item> items = itemRepository.selectAllByBrand("Live Demo");
715
			Set<Integer> itemIds = new HashSet<>();
716
			for (Item Item : items) {
717
				itemIds.add(Item.getId());
718
			}
719
			inventoryItem = inventoryItemRepository.selectByFofoIdItemIds(fofoId, itemIds);
720
 
721
			Set<String> serial = new HashSet<>();
722
			for (InventoryItem invItem : inventoryItem) {
24658 tejbeer 723
				if (!serailNumberList.contains(invItem.getSerialNumber())) {
24465 tejbeer 724
					inventoryItem1.add(invItem);
25371 tejbeer 725
 
24465 tejbeer 726
				}
727
 
728
			}
729
 
730
			LOGGER.info("inventoyItem" + inventoryItem1);
731
			model.addAttribute("customRetailers", customRetailers);
25371 tejbeer 732
 
24465 tejbeer 733
			model.addAttribute("liveDemo", inventoryItem1);
734
			CustomRetailer fofoIdsAndRetailerName = retailerService.getFofoRetailer(fofoId);
735
 
736
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
737
 
738
		}
739
 
740
		else {
741
			model.addAttribute("customRetailers", customRetailers);
742
			model.addAttribute("liveDemo", inventoryItem1);
743
		}
744
 
745
		return "live_demo_billing";
746
 
747
	}
748
 
749
	@RequestMapping(value = "/enableliveDemoSerailNumber", method = RequestMethod.POST)
750
	public String EnableliveDemoSerailNumber(HttpServletRequest request, @RequestParam String serial_number,
751
			Model model) throws Exception {
752
 
753
		LiveDemoSerialNumber liveDemoSerialNumber = new LiveDemoSerialNumber();
754
		liveDemoSerialNumber.setSerialNumber(serial_number);
755
 
756
		liveDemoBillingRespository.persist(liveDemoSerialNumber);
757
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
758
		return "response";
759
	}
760
 
24739 tejbeer 761
	@RequestMapping(value = "/getInProcessOrder", method = RequestMethod.GET)
762
	public String getInProcessOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
763
 
764
		List<com.spice.profitmandi.dao.entity.transaction.Order> inProcessorder = orderRepository
25067 tejbeer 765
				.selectAllOrder(OrderStatus.SUBMITTED_FOR_PROCESSING);
24917 tejbeer 766
		List<Integer> retailerIds = new ArrayList<>();
767
		List<Integer> orderIds = new ArrayList<>();
768
		if (!inProcessorder.isEmpty()) {
769
			for (com.spice.profitmandi.dao.entity.transaction.Order order : inProcessorder) {
770
				retailerIds.add(order.getRetailerId());
771
				orderIds.add(order.getId());
24739 tejbeer 772
 
24917 tejbeer 773
			}
24739 tejbeer 774
 
25640 tejbeer 775
			List<NotifyOrder> notify = notifyOrderRespository.selectByorderIds(orderIds);
776
			for (NotifyOrder notifyOrder : notify) {
25449 tejbeer 777
 
25640 tejbeer 778
				Order orderdetail = orderRepository.selectById(notifyOrder.getOrderId());
25449 tejbeer 779
				if (!orderdetail.getStatus().equals(OrderStatus.SUBMITTED_FOR_PROCESSING)) {
25640 tejbeer 780
					notifyOrder.setStatus(NotifyStatus.rejected);
25449 tejbeer 781
				}
25640 tejbeer 782
			}
24950 tejbeer 783
 
24917 tejbeer 784
			Map<Integer, Optional<NotifyOrder>> notifyOrders = notifyOrderRespository.selectByorderIds(orderIds)
785
					.stream().collect(Collectors.groupingBy(NotifyOrder::getOrderId,
786
							Collectors.maxBy((x1, x2) -> x1.getId() - x2.getId())));
24950 tejbeer 787
 
26110 tejbeer 788
			Map<Integer, NotifyCancel> notifyCancelOrders = notifyCancelOrderRepository.selectByOrderIds(orderIds)
789
					.stream().collect(Collectors.toMap(x -> x.getOrderId(), x -> x));
24917 tejbeer 790
			Map<Integer, String> storeIdAndFofoIdMap = fofoStoreRepository.selectByRetailerIds(retailerIds).stream()
791
					.collect(Collectors.toMap(FofoStore::getId, FofoStore::getCode));
792
			List<com.spice.profitmandi.dao.entity.transaction.Order> pendingPaymentorder = orderRepository
793
					.selectAllOrderDatesBetweenByStatus(LocalDateTime.now().minusDays(30), LocalDateTime.now(),
794
							OrderStatus.PAYMENT_PENDING);
795
			List<com.spice.profitmandi.dao.entity.transaction.Order> failedPaymentorder = orderRepository
796
					.selectAllOrderDatesBetweenByStatus(LocalDateTime.now().minusDays(30), LocalDateTime.now(),
797
							OrderStatus.PAYMENT_FAILED);
798
			pendingPaymentorder.addAll(failedPaymentorder);
799
 
800
			model.addAttribute("inProcessorder", inProcessorder);
801
			model.addAttribute("storeIdAndFofoIdMap", storeIdAndFofoIdMap);
802
			model.addAttribute("pendingPaymentorder", pendingPaymentorder);
803
			model.addAttribute("latestNotifyOrders", notifyOrders);
26110 tejbeer 804
			model.addAttribute("notifyCancelOrders", notifyCancelOrders);
24917 tejbeer 805
		} else {
806
			model.addAttribute("inProcessorder", inProcessorder);
807
		}
24739 tejbeer 808
		return "review_order";
809
	}
810
 
811
	@RequestMapping(value = "/getKeepInTabOrder", method = RequestMethod.GET)
812
	public String getKeepInTabOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
813
 
814
		List<com.spice.profitmandi.dao.entity.transaction.Order> keepatab = orderRepository
815
				.selectAllOrder(OrderStatus.KEEP_A_TAB);
816
 
817
		model.addAttribute("keepatab", keepatab);
818
 
819
		return "keep-a-tab";
820
	}
821
 
822
	@RequestMapping(value = "/closeOrder", method = RequestMethod.POST)
823
	public String closeOrder(HttpServletRequest request, @RequestParam int orderId, Model model) throws Exception {
24798 tejbeer 824
 
24739 tejbeer 825
		Order order = orderRepository.selectById(orderId);
24798 tejbeer 826
		if (order != null) {
24739 tejbeer 827
			order.setStatus(OrderStatus.CANCELLED_DUE_TO_LOW_INVENTORY);
24798 tejbeer 828
 
24739 tejbeer 829
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
830
 
24798 tejbeer 831
		} else {
24739 tejbeer 832
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
833
 
834
		}
835
		return "response";
24658 tejbeer 836
	}
837
 
25640 tejbeer 838
	@RequestMapping(value = "/getcancelOrderItems", method = RequestMethod.GET)
839
	public String getcancelOrderItems(HttpServletRequest request, @RequestParam int itemId, Model model)
840
			throws Exception {
841
 
842
		List<Order> inProcessselectedOrder = orderRepository.selectByItemIdOrderStatus(itemId,
843
				OrderStatus.SUBMITTED_FOR_PROCESSING);
844
 
845
		List<Integer> retailerIds = new ArrayList<>();
846
		for (com.spice.profitmandi.dao.entity.transaction.Order order : inProcessselectedOrder) {
847
			retailerIds.add(order.getRetailerId());
848
 
849
		}
850
 
851
		Map<Integer, String> storeIdAndFofoIdMap = fofoStoreRepository.selectByRetailerIds(retailerIds).stream()
852
				.collect(Collectors.toMap(FofoStore::getId, FofoStore::getCode));
853
 
854
		model.addAttribute("inProcessCancelOrder", inProcessselectedOrder);
855
		model.addAttribute("storeIdAndFofoIdMap", storeIdAndFofoIdMap);
856
 
857
		return "cancel-order-modal";
858
	}
859
 
24739 tejbeer 860
	@RequestMapping(value = "/cancelOrder", method = RequestMethod.POST)
25640 tejbeer 861
	public String cancelOrder(HttpServletRequest request, @RequestBody OrderCancellationModel orderCancellationModel,
862
			Model model) throws Exception {
24739 tejbeer 863
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
25640 tejbeer 864
		LOGGER.info("orderId" + orderCancellationModel.getOrderIds());
865
 
24739 tejbeer 866
		try {
25699 tejbeer 867
			// List<Order> orders =
868
			// orderRepository.selectByOrderIds(orderCancellationModel.getOrderIds());
25640 tejbeer 869
 
25699 tejbeer 870
			List<Order> orders = orderRepository.selectByOrderIdsOrdersStatus(orderCancellationModel.getOrderIds(),
871
					OrderStatus.SUBMITTED_FOR_PROCESSING);
872
			if (!orders.isEmpty()) {
873
				for (Order order : orders) {
25640 tejbeer 874
 
25699 tejbeer 875
					orderRepository.refundOrder(order.getId(), loginDetails.getEmailId(),
876
							orderCancellationModel.getReason(), OrderStatus.CANCELLED_DUE_TO_LOW_INVENTORY);
877
					List<NotifyOrder> notifyOrders = notifyOrderRespository.selectByOrder(order.getId());
878
					for (NotifyOrder notifyOrder : notifyOrders) {
879
						if (notifyOrder.getStatus() == NotifyStatus.pending) {
880
							notifyOrder.setStatus(NotifyStatus.rejected);
881
						}
25449 tejbeer 882
					}
25699 tejbeer 883
					sendCancellationNotificationToPartner(order, orderCancellationModel.getReason());
884
					model.addAttribute("response", mvcResponseSender.createResponseString(true));
885
 
25640 tejbeer 886
				}
887
			}
24739 tejbeer 888
		} catch (TransactionServiceException | TException e) {
889
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
890
 
891
		}
25640 tejbeer 892
 
24739 tejbeer 893
		return "response";
894
	}
895
 
25039 amit.gupta 896
	private void sendCancellationNotificationToPartner(Order order, String reason) throws Exception {
897
		Item item = itemRepository.selectById(order.getLineItem().getItemId());
25383 tejbeer 898
 
25851 amit.gupta 899
		SendNotificationModel sendNotificationModel = new SendNotificationModel();
900
		sendNotificationModel.setCampaignName("Order Cancellation");
901
		sendNotificationModel.setTitle(String.format("Order %s %d(Pcs) cancelled", item.getItemDescription(),
25140 amit.gupta 902
				order.getLineItem().getQuantity()));
25851 amit.gupta 903
		sendNotificationModel.setType("url");
904
		sendNotificationModel.setMessage(reason);
26482 tejbeer 905
		sendNotificationModel.setUrl("https://app.smartdukaan.com/pages/home/orderDetails");
25851 amit.gupta 906
		sendNotificationModel.setExpiresat(LocalDateTime.now().plusDays(2));
907
		sendNotificationModel.setMessageType(MessageType.notification);
25857 tejbeer 908
		int userId = userAccountRepository.selectUserIdByRetailerId(order.getRetailerId());
25873 tejbeer 909
		sendNotificationModel.setUserIds(Arrays.asList(userId));
25851 amit.gupta 910
		notificationService.sendNotification(sendNotificationModel);
25140 amit.gupta 911
 
25039 amit.gupta 912
	}
913
 
24917 tejbeer 914
	@RequestMapping(value = "/getNotifyItemColor", method = RequestMethod.GET)
915
	public String getNotifyItemColor(HttpServletRequest request, @RequestParam int catalogItemId,
916
			@RequestParam int itemId, Model model) throws ProfitMandiBusinessException {
917
 
24950 tejbeer 918
		List<Item> availableColorItems = itemRepository.selectAllByCatalogItemId(catalogItemId);
919
		Iterator<Item> itemsIterator = availableColorItems.iterator();
24917 tejbeer 920
 
24950 tejbeer 921
		while (itemsIterator.hasNext()) {
922
			Item item = itemsIterator.next();
923
			TagListing itemTagListing = tagListingRepository.selectByItemId(item.getId());
924
 
925
			if (itemTagListing == null) {
926
				itemsIterator.remove();
927
 
928
			}
929
 
930
			else if (!itemTagListing.isActive()) {
931
				itemsIterator.remove();
932
 
933
			}
934
		}
935
 
24917 tejbeer 936
		List<Order> inProcessselectedOrder = orderRepository.selectByItemIdOrderStatus(itemId,
937
				OrderStatus.SUBMITTED_FOR_PROCESSING);
938
		List<Integer> retailerIds = new ArrayList<>();
939
 
940
		for (com.spice.profitmandi.dao.entity.transaction.Order order : inProcessselectedOrder) {
941
			retailerIds.add(order.getRetailerId());
942
 
943
		}
944
 
945
		Map<Integer, String> storeIdAndFofoIdMap = fofoStoreRepository.selectByRetailerIds(retailerIds).stream()
946
				.collect(Collectors.toMap(FofoStore::getId, FofoStore::getCode));
24950 tejbeer 947
		LOGGER.info("item" + availableColorItems);
948
		model.addAttribute("item", availableColorItems);
24917 tejbeer 949
		model.addAttribute("inProcessselectedOrder", inProcessselectedOrder);
950
		model.addAttribute("storeIdAndFofoIdMap", storeIdAndFofoIdMap);
951
 
952
		return "notify-order-modal";
953
	}
954
 
955
	@RequestMapping(value = "/notifyOrder", method = RequestMethod.POST)
956
	public String NotifyOrder(HttpServletRequest request, @RequestBody NotifyOrderModel notifyOrderModel, Model model)
957
			throws Exception {
958
 
959
		com.spice.profitmandi.dao.entity.transaction.NotifyItem notifyItem = null;
960
		List<Integer> orderIds = new ArrayList<>();
961
 
962
		NotifyColorChange notifytimestamp = new NotifyColorChange();
963
		notifytimestamp.setCreated(LocalDateTime.now());
964
		notifyColorChangeRepository.persist(notifytimestamp);
25066 tejbeer 965
		NotifyMessage notifyMessage = new NotifyMessage();
966
		notifyMessage.setNotifyId(notifytimestamp.getId());
967
		notifyMessage.setNotifyMessages(notifyOrderModel.getMessage());
25140 amit.gupta 968
		notifyMessageRepository.persist(notifyMessage);
24917 tejbeer 969
		for (NotifyItemIdModel itemid : notifyOrderModel.getItemIds()) {
970
 
971
			notifyItem = new com.spice.profitmandi.dao.entity.transaction.NotifyItem();
972
			notifyItem.setItemId(itemid.getItemId());
973
			notifyItem.setResponseTime(itemid.getResponseTime());
974
			notifyItem.setProcuredDate(itemid.getProcuredTime());
975
			notifyItem.setNotifyColorchangeId(notifytimestamp.getId());
976
			notifyItemRepository.persist(notifyItem);
977
			LOGGER.info("notifyItem" + notifyItem);
978
		}
979
		for (NotifyOrderIdModel st : notifyOrderModel.getOrderIds()) {
980
			List<NotifyOrder> existingOrder = notifyOrderRespository.selectByOrder(st.getOrderId());
24950 tejbeer 981
			if (!existingOrder.isEmpty()) {
24917 tejbeer 982
				LOGGER.info("existingOrder" + existingOrder);
24950 tejbeer 983
				for (NotifyOrder notifyOrder : existingOrder) {
984
					if (NotifyStatus.pending == notifyOrder.getStatus()) {
985
						notifyOrder.setStatus(NotifyStatus.rejected);
26105 tejbeer 986
						notifyOrder.setUpdateTimestamp(LocalDateTime.now());
24950 tejbeer 987
					}
24917 tejbeer 988
				}
989
			}
990
			NotifyOrder orderStatus = new NotifyOrder();
991
			orderStatus.setOrderId(st.getOrderId());
992
			orderStatus.setNotifyId(notifytimestamp.getId());
993
			orderStatus.setItemId(st.getOlditemId());
994
			Order id = orderRepository.selectById(st.getOrderId());
995
			orderStatus.setFofoId(id.getRetailerId());
996
			orderStatus.setStatus(NotifyStatus.pending);
997
			notifyOrderRespository.persist(orderStatus);
998
 
999
			LOGGER.info("itemStatus" + orderStatus);
1000
			orderIds.add(st.getOrderId());
1001
		}
1002
 
1003
		LOGGER.info("orderIds" + orderIds);
1004
		List<Order> orders = orderRepository.selectByOrderIds(orderIds);
1005
		for (Order order : orders) {
1006
			LOGGER.info("order" + order.getId());
1007
 
25140 amit.gupta 1008
			NotifyMessage message = notifyMessageRepository.selectByNotifyId(notifytimestamp.getId());
1009
 
25851 amit.gupta 1010
			SendNotificationModel sendNotificationModel = new SendNotificationModel();
1011
			sendNotificationModel.setCampaignName("Notify Partner");
1012
			sendNotificationModel.setMessage(message.getNotifyMessages());
1013
			sendNotificationModel.setType("url");
1014
			sendNotificationModel.setTitle("Alert");
26959 tejbeer 1015
			sendNotificationModel.setUrl("https://app.smartdukaan.com/pages/home/notifyOrder");
25851 amit.gupta 1016
			sendNotificationModel.setExpiresat(LocalDateTime.now().plusDays(2));
1017
			sendNotificationModel.setMessageType(MessageType.notification);
25857 tejbeer 1018
			int userId = userAccountRepository.selectUserIdByRetailerId(order.getRetailerId());
25873 tejbeer 1019
 
1020
			sendNotificationModel.setUserIds(Arrays.asList(userId));
25851 amit.gupta 1021
			notificationService.sendNotification(sendNotificationModel);
25140 amit.gupta 1022
 
24917 tejbeer 1023
		}
1024
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
1025
		return "response";
1026
	}
1027
 
1028
	@RequestMapping(value = "/getAllNotifyOrder", method = RequestMethod.GET)
1029
	public String getAllNotifyOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
24950 tejbeer 1030
		List<NotifyOrder> notifyOrders = null;
24917 tejbeer 1031
		List<com.spice.profitmandi.dao.entity.transaction.Order> inProcessorder = orderRepository
25067 tejbeer 1032
				.selectAllOrder(OrderStatus.SUBMITTED_FOR_PROCESSING);
24950 tejbeer 1033
 
24917 tejbeer 1034
		List<Integer> orderIds = new ArrayList<>();
24950 tejbeer 1035
		if (!inProcessorder.isEmpty()) {
24917 tejbeer 1036
			for (com.spice.profitmandi.dao.entity.transaction.Order order : inProcessorder) {
24950 tejbeer 1037
 
24917 tejbeer 1038
				orderIds.add(order.getId());
1039
 
24950 tejbeer 1040
			}
1041
			notifyOrders = notifyOrderRespository.selectByorderIds(orderIds);
1042
			Set<Integer> oldItemIds = new HashSet<>();
1043
			List<Integer> fofoIds = new ArrayList<>();
1044
			List<Integer> notifyIds = new ArrayList<>();
1045
			if (!notifyOrders.isEmpty()) {
1046
				for (NotifyOrder notifyOrder : notifyOrders) {
1047
					oldItemIds.add(notifyOrder.getItemId());
1048
					fofoIds.add(notifyOrder.getFofoId());
1049
					notifyIds.add(notifyOrder.getNotifyId());
24917 tejbeer 1050
				}
1051
 
24950 tejbeer 1052
				List<NotifyColorChange> notifyColorChanges = notifyColorChangeRepository.selectByNotifyId(notifyIds);
1053
				Map<Integer, NotifyColorChange> notifyIdNotifyColorMap = this
1054
						.notifyOrdersToNotifyId(notifyColorChanges);
1055
				Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(fofoIds);
1056
				Map<Integer, String> itemdescription = inventoryService.getItemIdDescriptionMap(oldItemIds);
24917 tejbeer 1057
 
24950 tejbeer 1058
				model.addAttribute("notifyOrders", notifyOrders);
1059
				model.addAttribute("notifyIdNotifyColorMap", notifyIdNotifyColorMap);
1060
				model.addAttribute("itemdescription", itemdescription);
1061
				model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
24917 tejbeer 1062
 
24950 tejbeer 1063
			} else {
1064
				model.addAttribute("notifyOrders", notifyOrders);
1065
			}
24917 tejbeer 1066
		} else {
1067
			model.addAttribute("notifyOrders", notifyOrders);
24950 tejbeer 1068
		}
24917 tejbeer 1069
		return "notify_order";
1070
	}
1071
 
1072
	private Map<Integer, NotifyColorChange> notifyOrdersToNotifyId(List<NotifyColorChange> notifyColorChanges) {
1073
		Map<Integer, NotifyColorChange> notifyIdNotifyColorMap = new HashMap<>();
1074
		for (NotifyColorChange notifyColorChange : notifyColorChanges) {
1075
			notifyIdNotifyColorMap.put(notifyColorChange.getId(), notifyColorChange);
1076
		}
1077
		return notifyIdNotifyColorMap;
1078
	}
1079
 
26031 tejbeer 1080
	@RequestMapping(value = "/getItems", method = RequestMethod.GET)
1081
	public String getItems(HttpServletRequest request, @RequestParam int catalogItemId, Model model) throws Exception {
1082
 
1083
		Set<Integer> itemIds = itemRepository.selectAllByCatalogItemId(catalogItemId).stream().map(x -> x.getId())
1084
				.collect(Collectors.toSet());
1085
 
1086
		List<Order> notAvailableProcessingOrder = orderRepository.selectByItemIdsOrderStatus(itemIds,
1087
				OrderStatus.SUBMITTED_FOR_PROCESSING);
1088
		LOGGER.info("notAvailableProcessingOrder" + notAvailableProcessingOrder);
1089
 
1090
		List<Integer> retailerIds = new ArrayList<>();
1091
		for (com.spice.profitmandi.dao.entity.transaction.Order order : notAvailableProcessingOrder) {
1092
			retailerIds.add(order.getRetailerId());
1093
 
1094
		}
1095
 
1096
		Map<Integer, String> storeIdAndFofoIdMap = fofoStoreRepository.selectByRetailerIds(retailerIds).stream()
1097
				.collect(Collectors.toMap(FofoStore::getId, FofoStore::getCode));
1098
 
1099
		model.addAttribute("notAvailableProcessingOrder", notAvailableProcessingOrder);
1100
		model.addAttribute("storeIdAndFofoIdMap", storeIdAndFofoIdMap);
1101
 
1102
		return "partner-cancel-order-modal";
1103
	}
1104
 
1105
	@RequestMapping(value = "/notifyCancelOrder", method = RequestMethod.POST)
1106
	public String NotifyCancelOrder(HttpServletRequest request, @RequestBody NotifyOrderModel notifyOrderModel,
1107
			Model model) throws Exception {
1108
		for (NotifyOrderIdModel st : notifyOrderModel.getOrderIds()) {
1109
			LOGGER.info("orderId" + st.getOrderId());
1110
			Order order = orderRepository.selectById(st.getOrderId());
26110 tejbeer 1111
			NotifyCancel nc = notifyCancelOrderRepository.selectByOrderId(st.getOrderId());
1112
			if (nc == null) {
1113
				nc = new NotifyCancel();
1114
				nc.setOrderId(st.getOrderId());
1115
				nc.setItemId(st.getOlditemId());
1116
				nc.setFofoId(order.getRetailerId());
1117
				nc.setCancellation(false);
1118
				nc.setCreatedTimestamp(LocalDateTime.now());
1119
				nc.setUpdatedTimestamp(LocalDateTime.now());
1120
				notifyCancelOrderRepository.persist(nc);
1121
			} else {
1122
				nc.setOrderId(st.getOrderId());
1123
				nc.setItemId(st.getOlditemId());
1124
				nc.setFofoId(order.getRetailerId());
1125
				nc.setCancellation(false);
1126
				nc.setUpdatedTimestamp(LocalDateTime.now());
1127
				notifyCancelOrderRepository.persist(nc);
1128
			}
26031 tejbeer 1129
 
1130
			SendNotificationModel sendNotificationModel = new SendNotificationModel();
1131
			sendNotificationModel.setCampaignName("Notify Partner");
1132
			sendNotificationModel.setMessage(notifyOrderModel.getMessage());
1133
			sendNotificationModel.setType("url");
1134
			sendNotificationModel.setTitle("Alert");
26482 tejbeer 1135
			sendNotificationModel.setUrl("https://app.smartdukaan.com/pages/home/notifyCancelOrder");
26031 tejbeer 1136
			sendNotificationModel.setExpiresat(LocalDateTime.now().plusDays(2));
1137
			sendNotificationModel.setMessageType(MessageType.notification);
1138
			int userId = userAccountRepository.selectUserIdByRetailerId(order.getRetailerId());
1139
 
1140
			sendNotificationModel.setUserIds(Arrays.asList(userId));
1141
			notificationService.sendNotification(sendNotificationModel);
1142
 
1143
		}
1144
 
1145
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
1146
		return "response";
1147
	}
26039 tejbeer 1148
 
1149
	@RequestMapping(value = "/getNotifiedCancelOrder", method = RequestMethod.GET)
1150
	public String getNotifiedCancelOrder(HttpServletRequest request, Model model) throws Exception {
1151
 
1152
		List<NotifyCancel> notifyCancels = notifyCancelOrderRepository.selectAllNonCancelOrder();
1153
		if (!notifyCancels.isEmpty()) {
1154
			List<Integer> retailerIds = new ArrayList<>();
1155
			Set<Integer> itemIds = new HashSet<>();
1156
			for (NotifyCancel nc : notifyCancels) {
1157
				retailerIds.add(nc.getFofoId());
1158
				itemIds.add(nc.getItemId());
1159
			}
1160
 
1161
			Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(retailerIds);
1162
 
1163
			Map<Integer, String> itemdescription = inventoryService.getItemIdDescriptionMap(itemIds);
1164
			model.addAttribute("notifyCancels", notifyCancels);
1165
			model.addAttribute("itemdescription", itemdescription);
1166
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
1167
		} else {
1168
 
1169
			model.addAttribute("notifyCancels", notifyCancels);
1170
 
1171
		}
1172
		return "notify_cancel";
1173
	}
1174
 
1175
	@RequestMapping(value = "/getNotifyItems", method = RequestMethod.GET)
1176
	public String getNotifyItems(HttpServletRequest request, @RequestParam int itemId, Model model) throws Exception {
1177
		Item item = itemRepository.selectById(itemId);
1178
 
1179
		List<Integer> itemIds = itemRepository.selectAllByCatalogItemId(item.getCatalogItemId()).stream()
1180
				.map(x -> x.getId()).collect(Collectors.toList());
1181
 
1182
		List<NotifyCancel> ncs = notifyCancelOrderRepository.selectByItemIdsAndStatus(itemIds);
1183
		List<Integer> retailerIds = new ArrayList<>();
1184
		Map<Integer, Object> orders = new HashMap<>();
1185
		for (NotifyCancel nc : ncs) {
1186
			retailerIds.add(nc.getFofoId());
1187
			Order od = orderRepository.selectById(nc.getOrderId());
1188
			orders.put(nc.getOrderId(), od);
1189
		}
1190
 
1191
		Map<Integer, String> storeIdAndFofoIdMap = fofoStoreRepository.selectByRetailerIds(retailerIds).stream()
1192
				.collect(Collectors.toMap(FofoStore::getId, FofoStore::getCode));
1193
 
1194
		model.addAttribute("notifyItems", ncs);
1195
		model.addAttribute("orders", orders);
1196
		model.addAttribute("storeIdAndFofoIdMap", storeIdAndFofoIdMap);
1197
 
1198
		return "notify_cancel_order_modal";
1199
	}
1200
 
1201
	@RequestMapping(value = "/changeNotifyCancelRequest", method = RequestMethod.POST)
1202
	public String changeNotifyCancelRequest(HttpServletRequest request, @RequestBody NotifyOrderModel notifyOrderModel,
1203
			Model model) throws Exception {
1204
		List<Integer> orderIds = notifyOrderModel.getOrderIds().stream().map(x -> x.getOrderId())
1205
				.collect(Collectors.toList());
1206
 
1207
		List<NotifyCancel> ncs = notifyCancelOrderRepository.selectByOrderIds(orderIds);
1208
		for (NotifyCancel nc : ncs) {
1209
			nc.setCancellation(true);
1210
		}
1211
 
1212
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
1213
		return "response";
1214
	}
26482 tejbeer 1215
 
1216
	@RequestMapping(value = "/getProducts", method = RequestMethod.GET)
1217
	public String getProducts(HttpServletRequest request, Model model)
1218
			throws ProfitMandiBusinessException, URISyntaxException, IOException {
1219
 
1220
		return "product-detail";
1221
	}
1222
 
1223
	@RequestMapping(value = "/getProductInfo", method = RequestMethod.GET)
1224
	public String getProductInfo(HttpServletRequest request, long catalogId, Model model) throws Exception {
1225
		ContentPojo cp = mongoClient.getEntityById(catalogId);
26493 tejbeer 1226
		model.addAttribute("cp", cp);
1227
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
26482 tejbeer 1228
		return "product-info";
1229
	}
26493 tejbeer 1230
 
1231
	@RequestMapping(value = "/getProductCompareInfo", method = RequestMethod.GET)
26512 amit.gupta 1232
	public String getProductCompareInfo(HttpServletRequest request, @RequestParam List<Long> catalogIds, Model model)
26493 tejbeer 1233
			throws Exception {
1234
		List<ContentPojo> cps = new ArrayList<>();
27583 tejbeer 1235
		Set<Integer> cataogIds = catalogIds.stream().mapToInt(Long::intValue).boxed().collect(Collectors.toSet());
27596 tejbeer 1236
		LOGGER.info("tagListingMOP" + cataogIds);
26512 amit.gupta 1237
		for (Long cId : catalogIds) {
1238
			ContentPojo cp = mongoClient.getEntityById(cId);
26959 tejbeer 1239
			if (cp.getName() == null) {
26512 amit.gupta 1240
				cp.setName(itemRepository.selectAllByCatalogItemId(cId.intValue()).get(0).getItemDescriptionNoColor());
1241
			}
27583 tejbeer 1242
			List<Item> items = itemRepository.selectAllByCatalogItemId(cId.intValue());
27596 tejbeer 1243
			LOGGER.info("itemsMop" + items);
27618 tejbeer 1244
			int i = 0;
1245
			for (Item item : items) {
1246
				TagListing tagListing = tagListingRepository.selectByItemId(items.get(i).getId());
1247
 
1248
				if (tagListing != null) {
1249
					cp.setPrice(tagListing.getMop());
1250
 
1251
					LOGGER.info("tagListingMOP" + tagListing);
1252
 
1253
					break;
1254
 
1255
				}
1256
				i++;
27596 tejbeer 1257
			}
27618 tejbeer 1258
			cps.add(cp);
27583 tejbeer 1259
 
26493 tejbeer 1260
		}
26959 tejbeer 1261
 
26498 amit.gupta 1262
		List<Map<String, String>> entityList = new ArrayList<>();
26959 tejbeer 1263
		for (ContentPojo cp : cps) {
26498 amit.gupta 1264
			Map<String, String> specsMap = new HashMap<>();
26959 tejbeer 1265
			for (SpecificationGroup sg : cp.getDetailedSpecs()) {
26498 amit.gupta 1266
				String title = sg.getTitle();
26959 tejbeer 1267
				for (Specification s : sg.getSpecs()) {
26498 amit.gupta 1268
					String key = title + s.getName();
1269
					specsMap.put(key, String.join(", ", s.getValues()));
1270
				}
1271
			}
1272
			entityList.add(specsMap);
27723 tejbeer 1273
 
26498 amit.gupta 1274
		}
26959 tejbeer 1275
 
26493 tejbeer 1276
		LOGGER.info("cps" + cps);
26959 tejbeer 1277
		model.addAttribute("cps", cps);
1278
		model.addAttribute("catalogIds", gson.toJson(catalogIds, List.class));
1279
		model.addAttribute("entityList", entityList);
26493 tejbeer 1280
		return "product-compare";
1281
	}
27723 tejbeer 1282
 
1283
	@RequestMapping(value = "/inventory", method = RequestMethod.GET)
1284
	public String Inventory(HttpServletRequest request,
1285
			@RequestParam(name = "warehouseIds", required = true, defaultValue = "0") List<Integer> warehouseIds,
1286
			Model model) throws Exception {
1287
		model.addAttribute("warehouseId", warehouseIds);
1288
		LOGGER.info("warehouseIds" + warehouseIds);
1289
 
1290
		Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
1291
		if (warehouseIds.contains(0)) {
1292
			warehouseIds.addAll(warehouseMap.keySet());
1293
		}
1294
 
27739 tejbeer 1295
		long poTodayValue = 0;
1296
		long poThreedaysValue = 0;
1297
		long poSevendaysValue = 0;
1298
		long poTodayQty = 0;
1299
		long poThreedaysQty = 0;
1300
		long poSevendaysQty = 0;
1301
 
27723 tejbeer 1302
		List<OpenPoModel> openPO = warehousePurchaseOrderRepository.selectOpenPol(warehouseIds);
27739 tejbeer 1303
		for (OpenPoModel po : openPO) {
1304
			poTodayValue += po.getTodayValue();
1305
			poThreedaysValue += po.getThreedaysValue();
1306
			poSevendaysValue += po.getSevendaysValue();
1307
			poTodayQty += po.getTodayQty();
1308
			poThreedaysQty += po.getThreedaysQty();
1309
			poSevendaysQty += po.getSevendaysQty();
1310
		}
1311
		OpenPoModel poModel = new OpenPoModel();
1312
		poModel.setBrand("Total Values");
1313
		poModel.setTodayValue(poTodayValue);
1314
		poModel.setThreedaysValue(poThreedaysValue);
1315
		poModel.setSevendaysValue(poSevendaysValue);
1316
		poModel.setSevendaysQty(poSevendaysQty);
1317
		poModel.setThreedaysQty(poThreedaysQty);
1318
		poModel.setTodayQty(poTodayQty);
1319
		openPO.add(poModel);
1320
 
1321
		long purtodayValue = 0;
1322
		long purthreedaysValue = 0;
27749 tejbeer 1323
		long purlmsValue = 0;
27739 tejbeer 1324
		long purmtd = 0;
1325
		long purtodayQty = 0;
1326
		long purthreedaysQty = 0;
27749 tejbeer 1327
		long purlmsQty = 0;
27739 tejbeer 1328
		long purmtdQty = 0;
1329
 
27723 tejbeer 1330
		List<OurPurchaseModel> purchase = warehouseScanRepository.selectOurPurchase(warehouseIds);
27739 tejbeer 1331
 
1332
		for (OurPurchaseModel pm : purchase) {
1333
			purtodayValue += pm.getTodayValue();
1334
			purthreedaysValue += pm.getThreedaysValue();
27749 tejbeer 1335
			purlmsValue += pm.getLms();
27739 tejbeer 1336
			purmtd += pm.getMtd();
1337
			purtodayQty += pm.getTodayQty();
27749 tejbeer 1338
			purthreedaysQty += pm.getThreedaysQty();
1339
			purlmsQty += pm.getLmsQty();
27739 tejbeer 1340
			purmtdQty += pm.getMtdQty();
1341
		}
1342
		OurPurchaseModel omp = new OurPurchaseModel();
1343
		omp.setBrand("Total Values");
1344
		omp.setTodayValue(purtodayValue);
1345
		omp.setThreedaysValue(purthreedaysValue);
27749 tejbeer 1346
		omp.setLms(purlmsValue);
27739 tejbeer 1347
		omp.setMtd(purmtd);
1348
		omp.setTodayQty(purtodayQty);
1349
		omp.setThreedaysQty(purthreedaysQty);
27749 tejbeer 1350
		omp.setLmsQty(purlmsQty);
27739 tejbeer 1351
		omp.setMtdQty(purmtdQty);
1352
		purchase.add(omp);
27749 tejbeer 1353
 
27723 tejbeer 1354
		List<BrandWiseTertiaryModel> tertiary = fofoOrderRepository.selectGroupByBrandPartnerTertiary(warehouseIds);
27739 tejbeer 1355
		long tertodayValue = 0;
1356
		long terthreedaysValue = 0;
1357
		long termtd = 0;
1358
		long terlmtd = 0;
27749 tejbeer 1359
		long terlms = 0;
27739 tejbeer 1360
		long tertodayQty = 0;
1361
		long terthreedaysQty = 0;
1362
		long termtdQty = 0;
1363
		long terlmtdQty = 0;
27749 tejbeer 1364
		long terlmsQty = 0;
27739 tejbeer 1365
		for (BrandWiseTertiaryModel btm : tertiary) {
1366
			tertodayValue += btm.getTodayValue();
1367
			terthreedaysValue += btm.getThreedaysValue();
1368
			termtd += btm.getMtd();
1369
			terlmtd += btm.getLmtd();
27749 tejbeer 1370
			terlms += btm.getLms();
27739 tejbeer 1371
			tertodayQty += btm.getTodayQty();
1372
			terthreedaysQty += btm.getThreedaysQty();
1373
			termtdQty += btm.getMtdQty();
1374
			terlmtdQty += btm.getLmtdQty();
27749 tejbeer 1375
			terlmsQty += btm.getLmsQty();
27739 tejbeer 1376
		}
1377
		BrandWiseTertiaryModel bwt = new BrandWiseTertiaryModel();
1378
		bwt.setBrand("Total Values");
1379
		bwt.setTodayValue(tertodayValue);
1380
		bwt.setThreedaysValue(terthreedaysValue);
1381
		bwt.setMtd(termtd);
1382
		bwt.setLmtd(terlmtd);
27749 tejbeer 1383
		bwt.setLms(terlms);
27739 tejbeer 1384
		bwt.setTodayQty(tertodayQty);
1385
		bwt.setThreedaysQty(terthreedaysQty);
1386
		bwt.setMtdQty(termtdQty);
1387
		bwt.setLmtdQty(terlmtdQty);
27749 tejbeer 1388
		bwt.setLmsQty(terlmsQty);
27739 tejbeer 1389
		tertiary.add(bwt);
27749 tejbeer 1390
 
27723 tejbeer 1391
		List<SecondaryOrderBillingModel> billing = orderRepository.selectAllBilledOrderGroupByBrand(warehouseIds);
27739 tejbeer 1392
		long sectodayValue = 0;
1393
		long secthreedaysValue = 0;
1394
		long secmtd = 0;
1395
		long seclmtd = 0;
27749 tejbeer 1396
		long seclms = 0;
27739 tejbeer 1397
		long sectodayQty = 0;
1398
		long secthreedaysQty = 0;
1399
		long secmtdQty = 0;
1400
		long seclmtdQty = 0;
27749 tejbeer 1401
		long seclmsQty = 0;
27739 tejbeer 1402
		for (SecondaryOrderBillingModel sbm : billing) {
1403
			sectodayValue += sbm.getTodayValue();
1404
			secthreedaysValue += sbm.getThreedaysValue();
1405
			secmtd += sbm.getMtd();
1406
			seclmtd += sbm.getLmtd();
27749 tejbeer 1407
			seclms += sbm.getLms();
27739 tejbeer 1408
			sectodayQty += sbm.getTodayQty();
1409
			secthreedaysQty += sbm.getThreedaysQty();
1410
			secmtdQty += sbm.getMtdQty();
1411
			seclmtdQty += sbm.getLmtdQty();
27749 tejbeer 1412
			seclmsQty += sbm.getLmsQty();
27739 tejbeer 1413
		}
1414
 
1415
		SecondaryOrderBillingModel som = new SecondaryOrderBillingModel();
1416
		som.setBrand("Total Values");
1417
		som.setTodayValue(sectodayValue);
1418
		som.setThreedaysValue(secthreedaysValue);
1419
		som.setMtd(secmtd);
1420
		som.setLmtd(seclmtd);
27749 tejbeer 1421
		som.setLms(seclms);
27739 tejbeer 1422
		som.setTodayQty(sectodayQty);
1423
		som.setThreedaysQty(secthreedaysQty);
1424
		som.setMtdQty(secmtdQty);
1425
		som.setLmtdQty(seclmtdQty);
27749 tejbeer 1426
		som.setLmsQty(seclmsQty);
27739 tejbeer 1427
		billing.add(som);
27723 tejbeer 1428
		LOGGER.info("openPO" + openPO);
1429
		LOGGER.info("purchase" + purchase);
1430
		LOGGER.info("tertiary" + tertiary);
1431
		LOGGER.info("billing" + billing);
1432
 
1433
		LOGGER.info("warehouseIds" + warehouseIds);
1434
		model.addAttribute("warehouseMap", warehouseMap);
1435
		model.addAttribute("openPO", openPO);
1436
		model.addAttribute("purchase", purchase);
1437
		model.addAttribute("tertiary", tertiary);
1438
		model.addAttribute("billing", billing);
1439
 
1440
		return "inventory-listing";
1441
 
1442
	}
27738 tejbeer 1443
 
1444
	@RequestMapping(value = "/getOpenPoItemByBrand", method = RequestMethod.GET)
1445
	public String Inventory(HttpServletRequest request,
1446
			@RequestParam(name = "warehouseIds", required = true, defaultValue = "0") List<Integer> warehouseIds,
27749 tejbeer 1447
			@RequestParam(name = "brand", required = true, defaultValue = "") List<String> brand, int timeValue,
1448
			Model model) throws Exception {
27738 tejbeer 1449
		model.addAttribute("warehouseId", warehouseIds);
1450
		LOGGER.info("warehouseIds" + warehouseIds);
1451
 
1452
		Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
1453
		if (warehouseIds.contains(0)) {
1454
			warehouseIds.addAll(warehouseMap.keySet());
1455
		}
27749 tejbeer 1456
		LOGGER.info("brand" + brand);
1457
 
1458
		if (brand.contains("Total Values")) {
1459
			List<String> poBrands = warehousePurchaseOrderRepository.selectOpenPol(warehouseIds).stream()
1460
					.map(x -> x.getBrand()).collect(Collectors.toList());
1461
 
1462
			brand.addAll(poBrands);
1463
		}
1464
 
1465
		LOGGER.info("brand" + brand);
27738 tejbeer 1466
		LocalDateTime curDate = LocalDate.now().atStartOfDay();
1467
		List<OpenPoItemModel> openPOItem = null;
1468
		if (timeValue != 0) {
1469
			openPOItem = warehousePurchaseOrderRepository.selectOpenPoItem(warehouseIds, brand,
1470
					curDate.minusDays(timeValue), curDate);
1471
		} else {
1472
			openPOItem = warehousePurchaseOrderRepository.selectTodayOpenPoItem(warehouseIds, brand, curDate);
1473
		}
1474
		LOGGER.info("openPOItem" + openPOItem);
1475
 
1476
		model.addAttribute("openPOItem", openPOItem);
1477
 
1478
		return "inventory-listing-po-item";
1479
 
1480
	}
1481
 
1482
	@RequestMapping(value = "/getOurPurchaseItemByBrand", method = RequestMethod.GET)
1483
	public String getOurPurchaseItemByBrand(HttpServletRequest request,
1484
			@RequestParam(name = "warehouseIds", required = true, defaultValue = "0") List<Integer> warehouseIds,
27749 tejbeer 1485
			@RequestParam(name = "brand", required = true, defaultValue = "") List<String> brand, int timeValue,
1486
			Model model) throws Exception {
27738 tejbeer 1487
		model.addAttribute("warehouseId", warehouseIds);
1488
		LOGGER.info("warehouseIds" + warehouseIds);
1489
 
1490
		Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
1491
		if (warehouseIds.contains(0)) {
1492
			warehouseIds.addAll(warehouseMap.keySet());
1493
		}
1494
		LocalDateTime curDate = LocalDate.now().atStartOfDay();
27749 tejbeer 1495
 
1496
		if (brand.contains("Total Values")) {
1497
			List<String> purchasebrands = warehouseScanRepository.selectOurPurchase(warehouseIds).stream()
1498
					.map(x -> x.getBrand()).collect(Collectors.toList());
1499
 
1500
			brand.addAll(purchasebrands);
1501
		}
27738 tejbeer 1502
		List<OurPurchaseItemModel> ourPurchaseItem = null;
1503
		if (timeValue != 0) {
27749 tejbeer 1504
			if (timeValue == 1) {
27738 tejbeer 1505
				ourPurchaseItem = warehouseScanRepository.selectOurPurchaseItemByBrand(warehouseIds, brand,
27749 tejbeer 1506
						curDate.withDayOfMonth(1), curDate.plusDays(1));
1507
 
1508
			} else if (timeValue == -1) {
1509
 
1510
				ourPurchaseItem = warehouseScanRepository.selectOurPurchaseItemByBrand(warehouseIds, brand,
1511
						curDate.minusMonths(1).withDayOfMonth(1), curDate.withDayOfMonth(1));
1512
 
27738 tejbeer 1513
			} else {
1514
				ourPurchaseItem = warehouseScanRepository.selectOurPurchaseItemByBrand(warehouseIds, brand,
27749 tejbeer 1515
						curDate.minusDays(timeValue), curDate);
1516
 
27738 tejbeer 1517
			}
1518
		} else {
1519
			ourPurchaseItem = warehouseScanRepository.selectTodayOurPurchaseItemByBrand(warehouseIds, brand, curDate);
1520
		}
1521
		LOGGER.info("ourPurchaseItem" + ourPurchaseItem);
1522
 
1523
		model.addAttribute("ourPurchaseItem", ourPurchaseItem);
27749 tejbeer 1524
		model.addAttribute("warehouseMap", warehouseMap);
27738 tejbeer 1525
 
1526
		return "inventory-listing-purchase-item";
1527
 
1528
	}
1529
 
1530
	@RequestMapping(value = "/getSecondaryBillingItemByBrand", method = RequestMethod.GET)
1531
	public String getSecondaryBillingItemByBrand(HttpServletRequest request,
1532
			@RequestParam(name = "warehouseIds", required = true, defaultValue = "0") List<Integer> warehouseIds,
27749 tejbeer 1533
			@RequestParam(name = "brand", required = true, defaultValue = "") List<String> brand, int timeValue,
1534
			Model model) throws Exception {
27738 tejbeer 1535
		model.addAttribute("warehouseId", warehouseIds);
1536
		LOGGER.info("warehouseIds" + warehouseIds);
1537
 
1538
		Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
1539
		if (warehouseIds.contains(0)) {
1540
			warehouseIds.addAll(warehouseMap.keySet());
1541
		}
1542
		LocalDateTime curDate = LocalDate.now().atStartOfDay();
27749 tejbeer 1543
		int dayOfMonth = curDate.getDayOfMonth();
1544
		LocalDateTime startOfMonth = curDate.withDayOfMonth(1);
1545
		int lengthOfMonth = YearMonth.from(startOfMonth.minusMonths(1)).lengthOfMonth();
1546
 
1547
		if (brand.contains("Total Values")) {
1548
			List<String> billingbrands = orderRepository.selectAllBilledOrderGroupByBrand(warehouseIds).stream()
1549
					.map(x -> x.getBrand()).collect(Collectors.toList());
1550
 
1551
			brand.addAll(billingbrands);
1552
		}
27738 tejbeer 1553
		List<SecondaryOrderItemBillingModel> billedItem = null;
1554
		if (timeValue != 0) {
1555
			if (timeValue == 1) {
1556
				billedItem = orderRepository.selectAllBilledOrderItemByBrand(warehouseIds, brand,
1557
						curDate.withDayOfMonth(1), curDate.plusDays(1));
1558
 
1559
			} else if (timeValue == 2) {
27749 tejbeer 1560
				LOGGER.info("curDate" + curDate.withDayOfMonth(1).minusMonths(1));
1561
				LOGGER.info("curDate" + curDate.minusMonths(1).plusDays(Math.min(dayOfMonth, lengthOfMonth)));
1562
 
27738 tejbeer 1563
				billedItem = orderRepository.selectAllBilledOrderItemByBrand(warehouseIds, brand,
1564
						curDate.withDayOfMonth(1).minusMonths(1),
27749 tejbeer 1565
						startOfMonth.minusMonths(1).plusDays(Math.min(dayOfMonth, lengthOfMonth)));
1566
			} else if (timeValue == -1) {
1567
				billedItem = orderRepository.selectAllBilledOrderItemByBrand(warehouseIds, brand,
1568
						curDate.minusMonths(1).withDayOfMonth(1), startOfMonth);
1569
			} else {
27738 tejbeer 1570
 
1571
				billedItem = orderRepository.selectAllBilledOrderItemByBrand(warehouseIds, brand,
1572
						curDate.minusDays(timeValue), curDate);
1573
			}
1574
 
1575
		} else {
1576
			billedItem = orderRepository.selectTodayBilledOrderItemByBrand(warehouseIds, brand, curDate);
1577
		}
1578
		LOGGER.info("billedItem" + billedItem);
1579
 
1580
		model.addAttribute("billedItem", billedItem);
1581
 
1582
		return "inventory-listing-billing-item";
1583
 
1584
	}
1585
 
1586
	@RequestMapping(value = "/getPartnerTertiaryItemByBrand", method = RequestMethod.GET)
1587
	public String getPartnerTertiaryItemByBrand(HttpServletRequest request,
1588
			@RequestParam(name = "warehouseIds", required = true, defaultValue = "0") List<Integer> warehouseIds,
27749 tejbeer 1589
			@RequestParam(name = "brand", required = true, defaultValue = "") List<String> brand, int timeValue,
1590
			Model model) throws Exception {
27738 tejbeer 1591
		model.addAttribute("warehouseId", warehouseIds);
1592
		LOGGER.info("warehouseIds" + warehouseIds);
1593
 
1594
		Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
1595
		if (warehouseIds.contains(0)) {
1596
			warehouseIds.addAll(warehouseMap.keySet());
1597
		}
1598
		LocalDateTime curDate = LocalDate.now().atStartOfDay();
1599
		int dayOfMonth = curDate.getDayOfMonth();
1600
		LocalDateTime startOfMonth = curDate.withDayOfMonth(1);
27749 tejbeer 1601
		int lengthOfMonth = YearMonth.from(startOfMonth.minusMonths(1)).lengthOfMonth();
1602
		if (brand.contains("Total Values")) {
1603
			List<String> tertiaryBrands = fofoOrderRepository.selectGroupByBrandPartnerTertiary(warehouseIds).stream()
1604
					.map(x -> x.getBrand()).collect(Collectors.toList());
27738 tejbeer 1605
 
27749 tejbeer 1606
			brand.addAll(tertiaryBrands);
1607
		}
27738 tejbeer 1608
		List<BrandItemWiseTertiaryModel> tertiaryItem = null;
1609
		if (timeValue != 0) {
1610
			if (timeValue == 1) {
27749 tejbeer 1611
 
27738 tejbeer 1612
				tertiaryItem = fofoOrderRepository.selectItemPartnerTertiaryByBrand(warehouseIds, brand,
1613
						curDate.withDayOfMonth(1), curDate.plusDays(1));
1614
 
1615
			} else if (timeValue == 2) {
27749 tejbeer 1616
				LOGGER.info("curDate" + startOfMonth.minusMonths(1));
1617
				LOGGER.info("curDate" + startOfMonth.minusMonths(1).plusDays(Math.min(dayOfMonth, lengthOfMonth)));
27738 tejbeer 1618
 
1619
				tertiaryItem = fofoOrderRepository.selectItemPartnerTertiaryByBrand(warehouseIds, brand,
27749 tejbeer 1620
						startOfMonth.minusMonths(1),
27738 tejbeer 1621
						startOfMonth.minusMonths(1).plusDays(Math.min(dayOfMonth, lengthOfMonth)));
1622
 
27749 tejbeer 1623
			} else if (timeValue == -1) {
1624
				LOGGER.info("date" + curDate.minusMonths(1).withDayOfMonth(1));
1625
				LOGGER.info("date" + curDate.minusMonths(1).withDayOfMonth(lengthOfMonth).plusDays(1));
1626
 
1627
				tertiaryItem = fofoOrderRepository.selectItemPartnerTertiaryByBrand(warehouseIds, brand,
1628
						curDate.minusMonths(1).withDayOfMonth(1), startOfMonth);
27738 tejbeer 1629
			} else {
1630
				tertiaryItem = fofoOrderRepository.selectItemPartnerTertiaryByBrand(warehouseIds, brand,
1631
						curDate.minusDays(timeValue), curDate);
1632
			}
1633
 
1634
		} else {
1635
			tertiaryItem = fofoOrderRepository.selectTodayItemPartnerTertiaryByBrand(warehouseIds, brand, curDate);
1636
		}
1637
		LOGGER.info("tertiaryItem" + tertiaryItem);
1638
 
1639
		model.addAttribute("tertiaryItem", tertiaryItem);
1640
 
1641
		return "inventory-item-tertiary-item";
1642
 
1643
	}
24917 tejbeer 1644
}