Subversion Repositories SmartDukaan

Rev

Rev 28263 | Rev 28344 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 28263 Rev 28339
Line 2... Line 2...
2
 
2
 
3
import java.io.ByteArrayInputStream;
3
import java.io.ByteArrayInputStream;
4
import java.io.ByteArrayOutputStream;
4
import java.io.ByteArrayOutputStream;
5
import java.io.InputStream;
5
import java.io.InputStream;
6
import java.time.LocalDateTime;
6
import java.time.LocalDateTime;
-
 
7
import java.time.format.DateTimeFormatter;
7
import java.time.temporal.ChronoUnit;
8
import java.time.temporal.ChronoUnit;
8
import java.util.ArrayList;
9
import java.util.ArrayList;
9
import java.util.Arrays;
10
import java.util.Arrays;
10
import java.util.HashMap;
11
import java.util.HashMap;
11
import java.util.HashSet;
12
import java.util.HashSet;
Line 17... Line 18...
17
import javax.servlet.http.HttpServletRequest;
18
import javax.servlet.http.HttpServletRequest;
18
import javax.servlet.http.HttpServletResponse;
19
import javax.servlet.http.HttpServletResponse;
19
 
20
 
20
import org.apache.logging.log4j.LogManager;
21
import org.apache.logging.log4j.LogManager;
21
import org.apache.logging.log4j.Logger;
22
import org.apache.logging.log4j.Logger;
-
 
23
import org.json.JSONObject;
22
import org.springframework.beans.factory.annotation.Autowired;
24
import org.springframework.beans.factory.annotation.Autowired;
23
import org.springframework.core.io.InputStreamResource;
25
import org.springframework.core.io.InputStreamResource;
24
import org.springframework.http.HttpHeaders;
26
import org.springframework.http.HttpHeaders;
25
import org.springframework.http.HttpStatus;
27
import org.springframework.http.HttpStatus;
26
import org.springframework.http.MediaType;
28
import org.springframework.http.MediaType;
Line 49... Line 51...
49
import com.spice.profitmandi.common.model.PartnerOptionsAndItemAmountModel;
51
import com.spice.profitmandi.common.model.PartnerOptionsAndItemAmountModel;
50
import com.spice.profitmandi.common.model.PaymentOptionTransactionModel;
52
import com.spice.profitmandi.common.model.PaymentOptionTransactionModel;
51
import com.spice.profitmandi.common.model.PdfModel;
53
import com.spice.profitmandi.common.model.PdfModel;
52
import com.spice.profitmandi.common.model.PriceModel;
54
import com.spice.profitmandi.common.model.PriceModel;
53
import com.spice.profitmandi.common.model.ProfitMandiConstants;
55
import com.spice.profitmandi.common.model.ProfitMandiConstants;
-
 
56
import com.spice.profitmandi.common.solr.SolrService;
54
import com.spice.profitmandi.common.util.PdfUtils;
57
import com.spice.profitmandi.common.util.PdfUtils;
55
import com.spice.profitmandi.common.util.StringUtils;
58
import com.spice.profitmandi.common.util.StringUtils;
56
import com.spice.profitmandi.common.web.util.ResponseSender;
59
import com.spice.profitmandi.common.web.util.ResponseSender;
57
import com.spice.profitmandi.dao.entity.catalog.Item;
60
import com.spice.profitmandi.dao.entity.catalog.Item;
58
import com.spice.profitmandi.dao.entity.catalog.TagListing;
61
import com.spice.profitmandi.dao.entity.catalog.TagListing;
Line 88... Line 91...
88
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
91
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
89
import com.spice.profitmandi.dao.repository.fofo.FofoPartnerPaymentOptionRepository;
92
import com.spice.profitmandi.dao.repository.fofo.FofoPartnerPaymentOptionRepository;
90
import com.spice.profitmandi.dao.repository.fofo.PaymentOptionRepository;
93
import com.spice.profitmandi.dao.repository.fofo.PaymentOptionRepository;
91
import com.spice.profitmandi.dao.repository.fofo.PendingOrderItemRepository;
94
import com.spice.profitmandi.dao.repository.fofo.PendingOrderItemRepository;
92
import com.spice.profitmandi.dao.repository.fofo.PendingOrderRepository;
95
import com.spice.profitmandi.dao.repository.fofo.PendingOrderRepository;
-
 
96
import com.spice.profitmandi.dao.repository.fofo.PendingOrderService;
93
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
97
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
94
import com.spice.profitmandi.dao.repository.user.AddressRepository;
98
import com.spice.profitmandi.dao.repository.user.AddressRepository;
95
import com.spice.profitmandi.service.authentication.RoleManager;
99
import com.spice.profitmandi.service.authentication.RoleManager;
96
import com.spice.profitmandi.service.integrations.zest.InsuranceService;
100
import com.spice.profitmandi.service.integrations.zest.InsuranceService;
97
import com.spice.profitmandi.service.integrations.zest.MobileInsurancePlan;
101
import com.spice.profitmandi.service.integrations.zest.MobileInsurancePlan;
98
import com.spice.profitmandi.service.order.OrderService;
102
import com.spice.profitmandi.service.order.OrderService;
99
import com.spice.profitmandi.service.pricing.PricingService;
103
import com.spice.profitmandi.service.pricing.PricingService;
100
import com.spice.profitmandi.service.user.RetailerService;
104
import com.spice.profitmandi.service.user.RetailerService;
101
import com.spice.profitmandi.web.model.LoginDetails;
105
import com.spice.profitmandi.web.model.LoginDetails;
-
 
106
import com.spice.profitmandi.web.services.EmailService;
102
import com.spice.profitmandi.web.util.CookiesProcessor;
107
import com.spice.profitmandi.web.util.CookiesProcessor;
103
import com.spice.profitmandi.web.util.MVCResponseSender;
108
import com.spice.profitmandi.web.util.MVCResponseSender;
104
 
109
 
105
@Controller
110
@Controller
106
@Transactional(rollbackFor = Throwable.class)
111
@Transactional(rollbackFor = Throwable.class)
107
public class OrderController {
112
public class OrderController {
108
 
113
 
109
	private static final Logger LOGGER = LogManager.getLogger(OrderController.class);
114
	private static final Logger LOGGER = LogManager.getLogger(OrderController.class);
110
 
115
 
-
 
116
	private static final List<String> offlineOrders = Arrays.asList("EMIOD", "POD");
-
 
117
 
111
	@Autowired
118
	@Autowired
112
	private CustomerRepository customerRepository;
119
	private CustomerRepository customerRepository;
113
 
120
 
114
	private boolean accessoriesDeals = true;
121
	private boolean accessoriesDeals = true;
115
 
122
 
Line 192... Line 199...
192
	private CurrentInventorySnapshotRepository currentInventorySnapshotRepository;
199
	private CurrentInventorySnapshotRepository currentInventorySnapshotRepository;
193
 
200
 
194
	@Autowired
201
	@Autowired
195
	private TagListingRepository tagListingRepository;
202
	private TagListingRepository tagListingRepository;
196
 
203
 
-
 
204
	@Autowired
-
 
205
	private PendingOrderService pendingOrderService;
-
 
206
 
-
 
207
	@Autowired
-
 
208
	private EmailService emailService;
-
 
209
 
-
 
210
	@Autowired
-
 
211
	private SolrService commonSolrService;
-
 
212
 
197
	@RequestMapping(value = "/order")
213
	@RequestMapping(value = "/order")
198
	public String orderIndex(HttpServletRequest request, @RequestParam(name = "cartData") String cartData, Model model)
214
	public String orderIndex(HttpServletRequest request, @RequestParam(name = "cartData") String cartData, Model model)
199
			throws ProfitMandiBusinessException {
215
			throws ProfitMandiBusinessException {
200
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
216
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
201
		;
-
 
202
 
217
 
203
		int addressId = retailerRegisteredAddressRepository.selectAddressIdByRetailerId(loginDetails.getFofoId());
218
		int addressId = retailerRegisteredAddressRepository.selectAddressIdByRetailerId(loginDetails.getFofoId());
204
		Address address = addressRepository.selectById(addressId);
219
		Address address = addressRepository.selectById(addressId);
205
 
220
 
206
		List<CartFofo> cartItems = orderService.cartCheckout(cartData);
221
		List<CartFofo> cartItems = orderService.cartCheckout(cartData);
207
		Set<Integer> itemIds = new HashSet<>();
222
		Set<Integer> itemIds = new HashSet<>();
-
 
223
		List<Integer> poIds = new ArrayList<>();
-
 
224
		List<Integer> poItemIds = new ArrayList<>();
208
		for (CartFofo cartFofo : cartItems) {
225
		for (CartFofo cartFofo : cartItems) {
209
			itemIds.add(cartFofo.getItemId());
226
			itemIds.add(cartFofo.getItemId());
-
 
227
			if (cartFofo.getPoId() != 0) {
-
 
228
				poIds.add(cartFofo.getPoId());
-
 
229
				poItemIds.add(cartFofo.getPoItemId());
-
 
230
			}
210
		}
231
		}
-
 
232
 
-
 
233
		PendingOrder po = null;
-
 
234
		Customer customer = null;
-
 
235
		PendingOrderItem poi = null;
211
		Map<Integer, PriceModel> mopPriceMap = pricingService.getPurchasePriceMopPriceNotFound(itemIds,
236
		Map<Integer, PriceModel> mopPriceMap = pricingService.getPurchasePriceMopPriceNotFound(itemIds,
212
				loginDetails.getFofoId());
237
				loginDetails.getFofoId());
213
		List<Integer> paymentOptionIds = fofoPartnerPaymentOptionRepository
238
		List<Integer> paymentOptionIds = fofoPartnerPaymentOptionRepository
214
				.selectPaymentOptionIdsByFofoId(loginDetails.getFofoId());
239
				.selectPaymentOptionIdsByFofoId(loginDetails.getFofoId());
-
 
240
 
-
 
241
		if (!poIds.isEmpty()) {
-
 
242
			po = pendingOrderRepository.selectById(poIds.get(0));
-
 
243
			customer = customerRepository.selectById(po.getCustomerId());
-
 
244
			if (!offlineOrders.contains(po.getPayMethod())) {
-
 
245
				paymentOptionIds.add(23);
-
 
246
			}
-
 
247
		}
-
 
248
 
-
 
249
		if (!poItemIds.isEmpty()) {
-
 
250
			poi = pendingOrderItemRepository.selectById(poItemIds.get(0));
-
 
251
		}
-
 
252
 
215
		List<PaymentOption> paymentOptions = paymentOptionRepository.selectByIds(new HashSet<>(paymentOptionIds));
253
		List<PaymentOption> paymentOptions = paymentOptionRepository.selectByIds(new HashSet<>(paymentOptionIds));
-
 
254
 
-
 
255
		LOGGER.info("pendingOrder" + po);
-
 
256
		LOGGER.info("pendingOrderItem" + poi);
-
 
257
 
216
		LOGGER.info("mopPriceMap {}", mopPriceMap);
258
		LOGGER.info("mopPriceMap {}", mopPriceMap);
217
		model.addAttribute("stateNames",
259
		model.addAttribute("stateNames",
218
				stateRepository.selectAll().stream().map(x -> x.getName()).collect(Collectors.toList()));
260
				stateRepository.selectAll().stream().map(x -> x.getName()).collect(Collectors.toList()));
219
		model.addAttribute("retailerStateName", address.getState());
261
		model.addAttribute("retailerStateName", address.getState());
-
 
262
		model.addAttribute("pendingPOCustomer", gson.toJson(customer));
-
 
263
		model.addAttribute("pendingPO", gson.toJson(po));
-
 
264
 
220
		model.addAttribute("cartItems", cartItems);
265
		model.addAttribute("cartItems", cartItems);
-
 
266
		model.addAttribute("pendingOrder", po);
-
 
267
		model.addAttribute("pendingOrderItem", poi);
-
 
268
 
221
		model.addAttribute("mopPriceMap", mopPriceMap);
269
		model.addAttribute("mopPriceMap", mopPriceMap);
222
		model.addAttribute("paymentOptions", paymentOptions);
270
		model.addAttribute("paymentOptions", paymentOptions);
223
		model.addAttribute("accessoriesDeals", accessoriesDeals);
271
		model.addAttribute("accessoriesDeals", accessoriesDeals);
224
		return "order-index";
272
		return "order-index";
225
	}
273
	}
Line 373... Line 421...
373
	private void markDoa(FofoOrder fofoOrder, FofoOrderItem foi, boolean isAdmin) {
421
	private void markDoa(FofoOrder fofoOrder, FofoOrderItem foi, boolean isAdmin) {
374
		if (isAdmin) {
422
		if (isAdmin) {
375
			foi.setDoa(true);
423
			foi.setDoa(true);
376
			return;
424
			return;
377
		}
425
		}
378
		boolean isImei = foi.getFofoLineItems().stream().anyMatch(x->x.getSerialNumber().equals("863903054378477"));
426
		boolean isImei = foi.getFofoLineItems().stream().anyMatch(x -> x.getSerialNumber().equals("863903054378477"));
379
		LocalDateTime buyDate = fofoOrder.getCreateTimestamp().truncatedTo(ChronoUnit.DAYS);
427
		LocalDateTime buyDate = fofoOrder.getCreateTimestamp().truncatedTo(ChronoUnit.DAYS);
380
		LocalDateTime curDate = LocalDateTime.now().truncatedTo(ChronoUnit.DAYS);
428
		LocalDateTime curDate = LocalDateTime.now().truncatedTo(ChronoUnit.DAYS);
381
		if (buyDate.isAfter(curDate.minusDays(45)) || isImei) {
429
		if (buyDate.isAfter(curDate.minusDays(45)) || isImei) {
382
			foi.setDoa(true);
430
			foi.setDoa(true);
383
		} else
431
		} else
Line 528... Line 576...
528
		// "Billing is on hold temporarily", "Billing is on hold temporarily");
576
		// "Billing is on hold temporarily", "Billing is on hold temporarily");
529
		LOGGER.info("request at uri {} body {}", request.getRequestURI(), createOrderRequest);
577
		LOGGER.info("request at uri {} body {}", request.getRequestURI(), createOrderRequest);
530
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
578
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
531
 
579
 
532
		int fofoOrderId = orderService.createOrder(createOrderRequest, fofoDetails.getFofoId(), accessoriesDeals);
580
		int fofoOrderId = orderService.createOrder(createOrderRequest, fofoDetails.getFofoId(), accessoriesDeals);
-
 
581
 
533
		LOGGER.info("Order has been created successfully...");
582
		LOGGER.info("Order has been created successfully...");
534
		return "redirect:/get-order/?orderId=" + fofoOrderId;
583
		return "redirect:/get-order/?orderId=" + fofoOrderId;
535
	}
584
	}
536
 
585
 
537
	@RequestMapping(value = "/order/bad_return", method = RequestMethod.POST)
586
	@RequestMapping(value = "/order/bad_return", method = RequestMethod.POST)
Line 861... Line 910...
861
 
910
 
862
		if (isAdmin) {
911
		if (isAdmin) {
863
			Map<Integer, CustomRetailer> customRetailersMap = retailerService.getFofoRetailers(fofoIds);
912
			Map<Integer, CustomRetailer> customRetailersMap = retailerService.getFofoRetailers(fofoIds);
864
			model.addAttribute("customRetailersMap", customRetailersMap);
913
			model.addAttribute("customRetailersMap", customRetailersMap);
865
		}
914
		}
866
		List<PendingOrder> pendingOrders = null;
915
		List<PendingOrderItem> pendingOrderItem = null;
-
 
916
 
-
 
917
		if (isAdmin) {
-
 
918
 
-
 
919
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatus(OrderStatus.PENDING);
-
 
920
 
-
 
921
		} else {
-
 
922
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatusAndFofoId(OrderStatus.PENDING,
-
 
923
					loginDetails.getFofoId());
-
 
924
		}
-
 
925
 
-
 
926
		Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
-
 
927
 
-
 
928
		model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
-
 
929
		if (!isAdmin) {
-
 
930
			model.addAttribute("inventoryMap", map.get("inventoryMap"));
-
 
931
		}
-
 
932
		model.addAttribute("isAdmin", isAdmin);
-
 
933
		return "pending_fofo_order";
-
 
934
	}
-
 
935
 
-
 
936
	@GetMapping("/billedOrders")
-
 
937
	public String getBilledOrders(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
-
 
938
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
939
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
-
 
940
 
-
 
941
		List<PendingOrderItem> pendingOrderItem = null;
-
 
942
 
867
		if (isAdmin) {
943
		if (isAdmin) {
-
 
944
 
868
			pendingOrders = pendingOrderRepository.selectAllByStatus(OrderStatus.PENDING);
945
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatus(OrderStatus.BILLED);
-
 
946
 
869
		} else {
947
		} else {
870
			pendingOrders = pendingOrderRepository.selectByFofoId(loginDetails.getFofoId(), OrderStatus.PENDING);
948
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatusAndFofoId(OrderStatus.BILLED,
-
 
949
					loginDetails.getFofoId());
871
		}
950
		}
872
 
951
 
-
 
952
		Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
-
 
953
 
-
 
954
		model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
-
 
955
		model.addAttribute("inventoryMap", map.get("inventoryMap"));
-
 
956
		model.addAttribute("isAdmin", isAdmin);
-
 
957
		return "billed_order_item";
-
 
958
	}
-
 
959
 
873
		if (!pendingOrders.isEmpty()) {
960
	@GetMapping("/settledOrders")
-
 
961
	public String getSettledOrders(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
874
			List<Integer> customerIds = pendingOrders.stream().map(x -> x.getCustomerId()).collect(Collectors.toList());
962
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
963
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
-
 
964
 
-
 
965
		List<PendingOrderItem> pendingOrderItem = null;
-
 
966
 
-
 
967
		if (isAdmin) {
875
 
968
 
876
			Map<Integer, Customer> customersMap = customerRepository.selectAllByIds(customerIds).stream()
969
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatus(OrderStatus.SETTLED);
877
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
-
 
878
			pendingOrders.stream().forEach(x -> {
-
 
879
				x.setCustomer(customersMap.get(x.getCustomerId()));
-
 
880
			});
-
 
881
 
970
 
-
 
971
		} else {
-
 
972
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatusAndFofoId(OrderStatus.SETTLED,
-
 
973
					loginDetails.getFofoId());
882
		}
974
		}
883
 
975
 
-
 
976
		Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
-
 
977
 
884
		model.addAttribute("pendingOrder", pendingOrders);
978
		model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
-
 
979
		model.addAttribute("inventoryMap", map.get("inventoryMap"));
885
		model.addAttribute("isAdmin", isAdmin);
980
		model.addAttribute("isAdmin", isAdmin);
886
		return "pending_fofo_order";
981
		return "settled_order_item";
-
 
982
	}
-
 
983
 
-
 
984
	@GetMapping("/unsettledOrders")
-
 
985
	public String getunsettledOrders(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
-
 
986
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
987
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
-
 
988
 
-
 
989
		List<PendingOrderItem> pendingOrderItem = null;
-
 
990
 
-
 
991
		if (isAdmin) {
-
 
992
 
-
 
993
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatus(OrderStatus.UNSETTLED);
-
 
994
 
-
 
995
		} else {
-
 
996
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatusAndFofoId(OrderStatus.UNSETTLED,
-
 
997
					loginDetails.getFofoId());
-
 
998
		}
-
 
999
 
-
 
1000
		Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
-
 
1001
 
-
 
1002
		model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
-
 
1003
		model.addAttribute("inventoryMap", map.get("inventoryMap"));
-
 
1004
		model.addAttribute("isAdmin", isAdmin);
-
 
1005
		return "unsettled_order_item";
-
 
1006
	}
-
 
1007
 
-
 
1008
	@GetMapping("/claimedOrders")
-
 
1009
	public String getclaimedOrders(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
-
 
1010
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
1011
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
-
 
1012
		List<Integer> fofoIds = fofoStoreRepository.selectActiveStores().stream().map(x -> x.getId())
-
 
1013
				.collect(Collectors.toList());
-
 
1014
 
-
 
1015
		List<PendingOrderItem> pendingOrderItem = null;
-
 
1016
 
-
 
1017
		if (isAdmin) {
-
 
1018
 
-
 
1019
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatus(OrderStatus.CLAIMED);
-
 
1020
			Map<Integer, CustomRetailer> customRetailersMap = retailerService.getFofoRetailers(fofoIds);
-
 
1021
			model.addAttribute("customRetailersMap", customRetailersMap);
-
 
1022
 
-
 
1023
		} else {
-
 
1024
			pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatusAndFofoId(OrderStatus.CLAIMED,
-
 
1025
					loginDetails.getFofoId());
-
 
1026
		}
-
 
1027
 
-
 
1028
		Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
-
 
1029
 
-
 
1030
		model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
-
 
1031
		model.addAttribute("inventoryMap", map.get("inventoryMap"));
-
 
1032
		model.addAttribute("isAdmin", isAdmin);
-
 
1033
		return "claim_raised_order_item";
887
	}
1034
	}
888
 
1035
 
889
	@GetMapping("/getPendingOrderItem")
1036
	@GetMapping("/getPendingOrderItem")
890
	public String getPendingOrderItem(HttpServletRequest request, @RequestParam int orderId, Model model)
1037
	public String getPendingOrderItem(HttpServletRequest request, @RequestParam int orderId, Model model)
891
			throws ProfitMandiBusinessException {
1038
			throws ProfitMandiBusinessException {
Line 896... Line 1043...
896
		Customer customer = customerRepository.selectById(pendingPO.getCustomerId());
1043
		Customer customer = customerRepository.selectById(pendingPO.getCustomerId());
897
		List<PendingOrderItem> pendingOrderItems = pendingOrderItemRepository.selectByOrderId(orderId);
1044
		List<PendingOrderItem> pendingOrderItems = pendingOrderItemRepository.selectByOrderId(orderId);
898
		for (PendingOrderItem pendingOrderItem : pendingOrderItems) {
1045
		for (PendingOrderItem pendingOrderItem : pendingOrderItems) {
899
			Item item = itemRepository.selectById(pendingOrderItem.getItemId());
1046
			Item item = itemRepository.selectById(pendingOrderItem.getItemId());
900
			CurrentInventorySnapshot cis = currentInventorySnapshotRepository
1047
			CurrentInventorySnapshot cis = currentInventorySnapshotRepository
901
					.selectByItemAndFofoId(pendingOrderItem.getItemId(), loginDetails.getFofoId());
1048
					.selectByItemAndFofoId(pendingOrderItem.getItemId(), pendingPO.getFofoId());
902
			itemMap.put(pendingOrderItem.getItemId(), item);
1049
			itemMap.put(pendingOrderItem.getItemId(), item);
903
			LOGGER.info("cis" + cis);
1050
			LOGGER.info("cis" + cis);
904
			inventoryMap.put(pendingOrderItem.getItemId(), cis);
1051
			inventoryMap.put(pendingOrderItem.getItemId(), cis);
905
		}
1052
		}
906
 
1053
 
Line 944... Line 1091...
944
		PendingOrder pendingOrder = pendingOrderRepository.selectById(pendingOrderItem.getOrderId());
1091
		PendingOrder pendingOrder = pendingOrderRepository.selectById(pendingOrderItem.getOrderId());
945
 
1092
 
946
		List<OrderStatus> status = pendingOrderItemRepository.selectByOrderId(pendingOrderItem.getOrderId()).stream()
1093
		List<OrderStatus> status = pendingOrderItemRepository.selectByOrderId(pendingOrderItem.getOrderId()).stream()
947
				.map(x -> x.getStatus()).collect(Collectors.toList());
1094
				.map(x -> x.getStatus()).collect(Collectors.toList());
948
 
1095
 
949
		if (!status.contains(OrderStatus.PENDING)) {
1096
		if (!status.contains(OrderStatus.PENDING) && !status.contains(OrderStatus.BILLED)
-
 
1097
				&& !status.contains(OrderStatus.UNSETTLED) && !status.contains(OrderStatus.CLAIMED)) {
950
			pendingOrder.setStatus(OrderStatus.CLOSED);
1098
			pendingOrder.setStatus(OrderStatus.CLOSED);
951
		}
1099
		}
952
		pendingOrderItemRepository.persist(pendingOrderItem);
1100
		pendingOrderItemRepository.persist(pendingOrderItem);
953
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
1101
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
954
 
1102
 
955
		return "response";
1103
		return "response";
-
 
1104
	}
-
 
1105
 
-
 
1106
	@RequestMapping(value = "/deliveredPendingOrderItem", method = RequestMethod.POST)
-
 
1107
	public String deliveredPendingOrderItem(HttpServletRequest request, @RequestParam int id, Model model)
-
 
1108
			throws Exception {
-
 
1109
 
-
 
1110
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
1111
		PendingOrderItem pendingOrderItem = pendingOrderItemRepository.selectById(id);
-
 
1112
		PendingOrder pendingOrder = pendingOrderRepository.selectById(pendingOrderItem.getOrderId());
-
 
1113
 
-
 
1114
		if (pendingOrder.getTotalAmount() == pendingOrder.getPaidAmount()) {
-
 
1115
			pendingOrderItem.setStatus(OrderStatus.UNSETTLED);
-
 
1116
			pendingOrderItem.setDeliveredTimestamp(LocalDateTime.now());
-
 
1117
 
-
 
1118
		} else {
-
 
1119
			pendingOrderItem.setStatus(OrderStatus.SETTLED);
-
 
1120
			pendingOrderItem.setDeliveredTimestamp(LocalDateTime.now());
-
 
1121
 
-
 
1122
		}
-
 
1123
 
-
 
1124
		List<OrderStatus> status = pendingOrderItemRepository.selectByOrderId(pendingOrderItem.getOrderId()).stream()
-
 
1125
				.map(x -> x.getStatus()).collect(Collectors.toList());
-
 
1126
 
-
 
1127
		List<Integer> catalogIds = new ArrayList<>();
-
 
1128
 
-
 
1129
		Item item = itemRepository.selectById(pendingOrderItem.getItemId());
-
 
1130
		pendingOrderItem.setItemName(item.getItemDescription());
-
 
1131
		catalogIds.add(item.getCatalogItemId());
-
 
1132
 
-
 
1133
		Map<Integer, JSONObject> contentMap = commonSolrService.getContentByCatalogIds(catalogIds);
-
 
1134
		JSONObject jsonObj = contentMap.get(item.getCatalogItemId());
-
 
1135
		pendingOrderItem.setImgUrl(jsonObj.getString("imageUrl_s"));
-
 
1136
		pendingOrder.setPendingOrderItems(Arrays.asList(pendingOrderItem));
-
 
1137
		CustomerAddress customerAddress = customerAddressRepository.selectById(pendingOrder.getCustomerAddressId());
-
 
1138
 
-
 
1139
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy h:mm a");
-
 
1140
 
-
 
1141
		Map<String, Object> emailModel = new HashMap<>();
-
 
1142
		emailModel.put("customer", customerAddress);
-
 
1143
		emailModel.put("pendingOrder", pendingOrder);
-
 
1144
		emailModel.put("date", dateTimeFormatter);
-
 
1145
		Customer customer = customerRepository.selectById(pendingOrder.getCustomerId());
-
 
1146
		String[] customerEmail = null;
-
 
1147
		if (customer.getEmailId() != null) {
-
 
1148
			customerEmail = new String[] { customer.getEmailId(), "tejbeer.kaur@smartdukaan.com" };
-
 
1149
 
-
 
1150
			emailService.sendMailWithAttachments("Order Delivered with SmartDukaan", "order-delivered.vm", emailModel,
-
 
1151
					customerEmail, null, null);
-
 
1152
 
-
 
1153
		}
-
 
1154
		if (!status.contains(OrderStatus.PENDING) && !status.contains(OrderStatus.BILLED)
-
 
1155
				&& !status.contains(OrderStatus.UNSETTLED) && !status.contains(OrderStatus.CLAIMED))
-
 
1156
 
-
 
1157
		{
-
 
1158
			pendingOrder.setStatus(OrderStatus.CLOSED);
-
 
1159
		}
-
 
1160
		pendingOrderItemRepository.persist(pendingOrderItem);
-
 
1161
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
-
 
1162
 
-
 
1163
		return "response";
-
 
1164
	}
-
 
1165
 
-
 
1166
	@RequestMapping(value = "/raiseClaimOrderItem", method = RequestMethod.POST)
-
 
1167
	public String raiseClaimOrderItem(HttpServletRequest request, @RequestParam int id, Model model) throws Exception {
-
 
1168
 
-
 
1169
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
1170
		PendingOrderItem pendingOrderItem = pendingOrderItemRepository.selectById(id);
-
 
1171
		PendingOrder pendingOrder = pendingOrderRepository.selectById(pendingOrderItem.getOrderId());
-
 
1172
 
-
 
1173
		if (pendingOrder.getTotalAmount() == pendingOrder.getPaidAmount()) {
-
 
1174
			pendingOrderItem.setStatus(OrderStatus.CLAIMED);
-
 
1175
			pendingOrderItem.setClaimedTimestamp(LocalDateTime.now());
-
 
1176
 
-
 
1177
		}
-
 
1178
		pendingOrderItemRepository.persist(pendingOrderItem);
-
 
1179
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
-
 
1180
 
-
 
1181
		return "response";
956
	}
1182
	}
957
 
1183
 
958
	@RequestMapping(value = "/cancelOrderByInvoice", method = RequestMethod.POST)
1184
	@RequestMapping(value = "/cancelOrderByInvoice", method = RequestMethod.POST)
959
	public String cancelOrder(HttpServletRequest request, @RequestParam List<String> invoiceNumbers, Model model)
1185
	public String cancelOrder(HttpServletRequest request, @RequestParam List<String> invoiceNumbers, Model model)
960
			throws Exception {
1186
			throws Exception {