Subversion Repositories SmartDukaan

Rev

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

Rev 33374 Rev 33400
Line 10... Line 10...
10
import com.spice.profitmandi.common.util.StringUtils;
10
import com.spice.profitmandi.common.util.StringUtils;
11
import com.spice.profitmandi.common.web.util.ResponseSender;
11
import com.spice.profitmandi.common.web.util.ResponseSender;
12
import com.spice.profitmandi.dao.entity.auth.AuthUser;
12
import com.spice.profitmandi.dao.entity.auth.AuthUser;
13
import com.spice.profitmandi.dao.entity.catalog.Item;
13
import com.spice.profitmandi.dao.entity.catalog.Item;
14
import com.spice.profitmandi.dao.entity.catalog.TagListing;
14
import com.spice.profitmandi.dao.entity.catalog.TagListing;
-
 
15
import com.spice.profitmandi.dao.entity.cs.Position;
15
import com.spice.profitmandi.dao.entity.dtr.InsurancePolicy;
16
import com.spice.profitmandi.dao.entity.dtr.InsurancePolicy;
16
import com.spice.profitmandi.dao.entity.dtr.InsuranceProvider;
17
import com.spice.profitmandi.dao.entity.dtr.InsuranceProvider;
17
import com.spice.profitmandi.dao.entity.dtr.PaymentOptionTransaction;
18
import com.spice.profitmandi.dao.entity.dtr.PaymentOptionTransaction;
18
import com.spice.profitmandi.dao.entity.fofo.*;
19
import com.spice.profitmandi.dao.entity.fofo.*;
19
import com.spice.profitmandi.dao.entity.transaction.TransactionApproval;
20
import com.spice.profitmandi.dao.entity.transaction.TransactionApproval;
20
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
21
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
21
import com.spice.profitmandi.dao.entity.user.Address;
22
import com.spice.profitmandi.dao.entity.user.Address;
-
 
23
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
22
import com.spice.profitmandi.dao.enumuration.dtr.PaymentOptionReferenceType;
24
import com.spice.profitmandi.dao.enumuration.dtr.PaymentOptionReferenceType;
23
import com.spice.profitmandi.dao.enumuration.transaction.OrderStatus;
25
import com.spice.profitmandi.dao.enumuration.transaction.OrderStatus;
24
import com.spice.profitmandi.dao.enumuration.transaction.TransactionApprovalStatus;
26
import com.spice.profitmandi.dao.enumuration.transaction.TransactionApprovalStatus;
25
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
27
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
26
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
28
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
27
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
29
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
-
 
30
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
28
import com.spice.profitmandi.dao.repository.dtr.*;
31
import com.spice.profitmandi.dao.repository.dtr.*;
29
import com.spice.profitmandi.dao.repository.fofo.*;
32
import com.spice.profitmandi.dao.repository.fofo.*;
30
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
33
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
31
import com.spice.profitmandi.dao.repository.transaction.*;
34
import com.spice.profitmandi.dao.repository.transaction.*;
32
import com.spice.profitmandi.dao.repository.user.AddressRepository;
35
import com.spice.profitmandi.dao.repository.user.AddressRepository;
Line 176... Line 179...
176
    CartRepository cartRepository;
179
    CartRepository cartRepository;
177
    @Autowired
180
    @Autowired
178
    UserWalletRepository userWalletRepository;
181
    UserWalletRepository userWalletRepository;
179
 
182
 
180
 
183
 
181
    @RequestMapping(value = "/order")
-
 
182
    public String orderIndex(HttpServletRequest request, @RequestParam(name = "cartData") String cartData, Model model)
-
 
183
            throws ProfitMandiBusinessException {
-
 
184
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
185
 
-
 
186
        int addressId = retailerRegisteredAddressRepository.selectAddressIdByRetailerId(loginDetails.getFofoId());
-
 
187
        Address address = addressRepository.selectById(addressId);
-
 
188
 
-
 
189
        List<CartFofo> cartItems = orderService.cartCheckout(cartData);
-
 
190
        Set<Integer> itemIds = new HashSet<>();
-
 
191
        List<Integer> poIds = new ArrayList<>();
-
 
192
        List<Integer> poItemIds = new ArrayList<>();
-
 
193
        for (CartFofo cartFofo : cartItems) {
-
 
194
            itemIds.add(cartFofo.getItemId());
-
 
195
            if (cartFofo.getPoId() != 0) {
-
 
196
                poIds.add(cartFofo.getPoId());
-
 
197
                poItemIds.add(cartFofo.getPoItemId());
-
 
198
            }
184
    @Autowired
199
        }
-
 
200
 
-
 
201
        PendingOrder po = null;
-
 
202
        Customer customer = null;
185
    PositionRepository positionRepository;
203
        PendingOrderItem poi = null;
-
 
204
        Map<Integer, PriceModel> mopPriceMap = pricingService.getPurchasePriceMopPriceNotFound(itemIds,
-
 
205
                loginDetails.getFofoId());
-
 
206
        List<Integer> paymentOptionIds = fofoPartnerPaymentOptionRepository
-
 
207
                .selectPaymentOptionIdsByFofoId(loginDetails.getFofoId());
-
 
208
 
-
 
209
        if (!poIds.isEmpty()) {
-
 
210
            po = pendingOrderRepository.selectById(poIds.get(0));
-
 
211
            customer = customerRepository.selectById(po.getCustomerId());
-
 
212
            if (!offlineOrders.contains(po.getPayMethod())) {
-
 
213
                paymentOptionIds.add(23);
-
 
214
            }
-
 
215
        }
-
 
216
 
-
 
217
        if (!poItemIds.isEmpty()) {
-
 
218
            poi = pendingOrderItemRepository.selectById(poItemIds.get(0));
-
 
219
        }
-
 
220
 
-
 
221
        // List<PaymentOption> paymentOptions = paymentOptionRepository.selectByIds(new
-
 
222
        // HashSet<>(paymentOptionIds));
-
 
223
 
-
 
224
        List<PaymentOption> paymentOptions = paymentOptionRepository.selectActiveOption();
-
 
225
 
-
 
226
        LOGGER.info("pendingOrder" + po);
-
 
227
        LOGGER.info("pendingOrderItem" + poi);
-
 
228
 
-
 
229
        LOGGER.info("mopPriceMap {}", mopPriceMap);
-
 
230
        model.addAttribute("stateNames",
-
 
231
                stateRepository.selectAll().stream().map(x -> x.getName()).collect(Collectors.toList()));
-
 
232
        model.addAttribute("retailerStateName", address.getState());
-
 
233
        model.addAttribute("pendingPOCustomer", gson.toJson(customer));
-
 
234
        model.addAttribute("pendingPO", gson.toJson(po));
-
 
235
 
-
 
236
        model.addAttribute("cartItems", cartItems);
-
 
237
        model.addAttribute("pendingOrder", po);
-
 
238
        model.addAttribute("pendingOrderItem", poi);
-
 
239
 
-
 
240
        model.addAttribute("mopPriceMap", mopPriceMap);
-
 
241
        model.addAttribute("paymentOptions", paymentOptions);
-
 
242
        model.addAttribute("accessoriesDeals", accessoriesDeals);
-
 
243
        return "order-index";
-
 
244
    }
-
 
245
 
186
 
246
    @RequestMapping(value = "/checkplans", method = RequestMethod.GET)
187
    @RequestMapping(value = "/checkplans", method = RequestMethod.GET)
247
    public String getInsurancePrices(HttpServletRequest request, @RequestParam float price, Model model,
188
    public String getInsurancePrices(HttpServletRequest request, @RequestParam float price, Model model,
248
                                     @RequestParam int itemId) throws ProfitMandiBusinessException {
189
                                     @RequestParam int itemId) throws ProfitMandiBusinessException {
249
        LOGGER.info("Request received at url : {}", request.getRequestURI());
190
        LOGGER.info("Request received at url : {}", request.getRequestURI());
Line 560... Line 501...
560
                    paymentOptionTransaction);
501
                    paymentOptionTransaction);
561
        }
502
        }
562
        return paymentOptionIdPaymentOptionTransactionMap;
503
        return paymentOptionIdPaymentOptionTransactionMap;
563
    }
504
    }
564
 
505
 
565
    @RequestMapping(value = "/create-order", method = RequestMethod.POST)
506
    @RequestMapping(value = "/order")
566
    public String createOrder(HttpServletRequest request, @RequestBody CreateOrderRequest createOrderRequest,
507
    public String orderIndex(HttpServletRequest request, @RequestParam(name = "cartData") String cartData, Model model)
567
                              Model model) throws ProfitMandiBusinessException {
508
            throws ProfitMandiBusinessException {
568
        // throw new ProfitMandiBusinessException("Billing is on hold temporarily",
-
 
569
        // "Billing is on hold temporarily", "Billing is on hold temporarily");
-
 
570
        LOGGER.info("request at uri {} body {}", request.getRequestURI(), createOrderRequest);
-
 
571
        LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
509
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
572
 
510
 
573
        int fofoOrderId = orderService.createOrder(createOrderRequest, fofoDetails.getFofoId(), accessoriesDeals);
511
        int addressId = retailerRegisteredAddressRepository.selectAddressIdByRetailerId(loginDetails.getFofoId());
-
 
512
        Address address = addressRepository.selectById(addressId);
574
 
513
 
575
        LOGGER.info("Order has been created successfully...");
514
        List<CartFofo> cartItems = orderService.cartCheckout(cartData);
-
 
515
        Set<Integer> itemIds = new HashSet<>();
-
 
516
        List<Integer> poIds = new ArrayList<>();
-
 
517
        List<Integer> poItemIds = new ArrayList<>();
576
        try {
518
        for (CartFofo cartFofo : cartItems) {
577
            this.sendWhatsappInvoice(fofoOrderRepository.selectByOrderId(fofoOrderId));
519
            itemIds.add(cartFofo.getItemId());
578
        } catch (Exception e) {
520
            if (cartFofo.getPoId() != 0) {
579
            LOGGER.info("Could not send whatsapp message");
521
                poIds.add(cartFofo.getPoId());
580
            e.printStackTrace();
522
                poItemIds.add(cartFofo.getPoItemId());
-
 
523
            }
581
        }
524
        }
-
 
525
 
-
 
526
        PendingOrder po = null;
-
 
527
        Customer customer = null;
-
 
528
        PendingOrderItem poi = null;
-
 
529
        Map<Integer, PriceModel> mopPriceMap = pricingService.getPurchasePriceMopPriceNotFound(itemIds,
-
 
530
                loginDetails.getFofoId());
-
 
531
        List<Integer> paymentOptionIds = fofoPartnerPaymentOptionRepository
-
 
532
                .selectPaymentOptionIdsByFofoId(loginDetails.getFofoId());
-
 
533
 
-
 
534
        if (!poIds.isEmpty()) {
-
 
535
            po = pendingOrderRepository.selectById(poIds.get(0));
-
 
536
            customer = customerRepository.selectById(po.getCustomerId());
-
 
537
            if (!offlineOrders.contains(po.getPayMethod())) {
-
 
538
                paymentOptionIds.add(23);
-
 
539
            }
-
 
540
        }
-
 
541
 
-
 
542
        if (!poItemIds.isEmpty()) {
-
 
543
            poi = pendingOrderItemRepository.selectById(poItemIds.get(0));
-
 
544
        }
-
 
545
 
-
 
546
        // List<PaymentOption> paymentOptions = paymentOptionRepository.selectByIds(new
-
 
547
        // HashSet<>(paymentOptionIds));
-
 
548
 
-
 
549
        List<PaymentOption> paymentOptions = paymentOptionRepository.selectActiveOption();
-
 
550
 
-
 
551
        LOGGER.info("pendingOrder" + po);
-
 
552
        LOGGER.info("pendingOrderItem" + poi);
-
 
553
 
-
 
554
        int onlineSellingPrice = 0;
-
 
555
        Map<Integer, PendingOrderItem> itemIdAndPoiMap = new HashMap<>();
-
 
556
        if (po != null) {
-
 
557
            List<PendingOrderItem> pendingOrderItems = pendingOrderItemRepository.selectByOrderId(po.getId());
582
        return "redirect:/get-order/?orderId=" + fofoOrderId;
558
            for (PendingOrderItem poItem : pendingOrderItems) {
-
 
559
                onlineSellingPrice += poItem.getSellingPrice();
-
 
560
            }
-
 
561
 
-
 
562
            itemIdAndPoiMap = pendingOrderItems.stream().collect(Collectors.toMap(x -> x.getItemId(), x -> pendingOrderItemRepository.selectById(x.getId())));
-
 
563
        }
-
 
564
 
-
 
565
        LOGGER.info("itemIdAndPoiMap {}", itemIdAndPoiMap);
-
 
566
        LOGGER.info("mopPriceMap {}", mopPriceMap);
-
 
567
        model.addAttribute("stateNames",
-
 
568
                stateRepository.selectAll().stream().map(x -> x.getName()).collect(Collectors.toList()));
-
 
569
        model.addAttribute("retailerStateName", address.getState());
-
 
570
        model.addAttribute("pendingPOCustomer", gson.toJson(customer));
-
 
571
        model.addAttribute("pendingPO", gson.toJson(po));
-
 
572
 
-
 
573
        model.addAttribute("cartItems", cartItems);
-
 
574
        model.addAttribute("pendingOrder", po);
-
 
575
        model.addAttribute("pendingOrderItem", poi);
-
 
576
        model.addAttribute("itemIdAndPoiMap", itemIdAndPoiMap);
-
 
577
        model.addAttribute("onlineSellingPrice", onlineSellingPrice);
-
 
578
 
-
 
579
        model.addAttribute("mopPriceMap", mopPriceMap);
-
 
580
        model.addAttribute("paymentOptions", paymentOptions);
-
 
581
        model.addAttribute("accessoriesDeals", accessoriesDeals);
-
 
582
        return "order-index";
583
    }
583
    }
584
 
584
 
585
    private void sendWhatsappInvoice(FofoOrder fofoOrder) throws Exception {
585
    private void sendWhatsappInvoice(FofoOrder fofoOrder) throws Exception {
586
        Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
586
        Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
587
        CustomRetailer retailer = retailerService.getFofoRetailer(fofoOrder.getFofoId());
587
        CustomRetailer retailer = retailerService.getFofoRetailer(fofoOrder.getFofoId());
Line 1019... Line 1019...
1019
        model.addAttribute("isAdmin", isAdmin);
1019
        model.addAttribute("isAdmin", isAdmin);
1020
        return "pending_fofo_order";
1020
        return "pending_fofo_order";
1021
 
1021
 
1022
    }
1022
    }
1023
 
1023
 
-
 
1024
    @RequestMapping(value = "/create-order", method = RequestMethod.POST)
-
 
1025
    public String createOrder(HttpServletRequest request, @RequestBody CreateOrderRequest createOrderRequest,
-
 
1026
                              Model model) throws ProfitMandiBusinessException {
-
 
1027
        // throw new ProfitMandiBusinessException("Billing is on hold temporarily",
-
 
1028
        // "Billing is on hold temporarily", "Billing is on hold temporarily");
-
 
1029
        LOGGER.info("request at uri {}", request.getRequestURI());
-
 
1030
        LOGGER.info("request body {}", createOrderRequest);
-
 
1031
        LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
-
 
1032
 
-
 
1033
        int fofoOrderId = orderService.createOrder(createOrderRequest, fofoDetails.getFofoId(), accessoriesDeals);
-
 
1034
 
-
 
1035
        LOGGER.info("Order has been created successfully...");
-
 
1036
        try {
-
 
1037
            this.sendWhatsappInvoice(fofoOrderRepository.selectByOrderId(fofoOrderId));
-
 
1038
        } catch (Exception e) {
-
 
1039
            LOGGER.info("Could not send whatsapp message");
-
 
1040
            e.printStackTrace();
-
 
1041
        }
-
 
1042
        return "redirect:/get-order/?orderId=" + fofoOrderId;
-
 
1043
    }
-
 
1044
 
1024
    @GetMapping("/billedOrders")
1045
    @GetMapping("/billedOrders")
1025
    public String getBilledOrders(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
1046
    public String getBilledOrders(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
1026
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1047
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1027
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
1048
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
1028
 
1049
 
1029
        List<PendingOrderItem> pendingOrderItem;
1050
        List<PendingOrderItem> pendingOrderItems;
1030
 
1051
 
1031
        if (isAdmin) {
1052
        if (isAdmin) {
1032
 
1053
 
1033
            pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatus(OrderStatus.BILLED);
1054
            pendingOrderItems = pendingOrderItemRepository.selectOrderItemByStatus(OrderStatus.BILLED);
1034
 
1055
 
1035
        } else {
1056
        } else {
1036
            pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatusAndFofoId(OrderStatus.BILLED,
1057
            pendingOrderItems = pendingOrderItemRepository.selectOrderItemByStatusAndFofoId(OrderStatus.BILLED,
1037
                    loginDetails.getFofoId());
1058
                    loginDetails.getFofoId());
-
 
1059
 
-
 
1060
 
1038
        }
1061
        }
1039
 
1062
 
1040
        Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
1063
        Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItems, loginDetails.getFofoId());
-
 
1064
        model.addAttribute("pendingOrderItems", (List<PendingOrderItem>) map.get("pendingOrderItems"));
1041
 
1065
 
1042
        model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
-
 
1043
        model.addAttribute("isAdmin", isAdmin);
1066
        model.addAttribute("isAdmin", isAdmin);
1044
        return "billed_order_item";
1067
        return "billed_order_item";
1045
    }
1068
    }
1046
 
1069
 
1047
    @GetMapping("/settledOrders")
1070
    @GetMapping("/settledOrders")
Line 1060... Line 1083...
1060
                    loginDetails.getFofoId());
1083
                    loginDetails.getFofoId());
1061
        }
1084
        }
1062
 
1085
 
1063
        Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
1086
        Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
1064
 
1087
 
1065
        model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
1088
        model.addAttribute("pendingOrderItems", (List<PendingOrderItem>) map.get("pendingOrderItems"));
1066
        model.addAttribute("isAdmin", isAdmin);
1089
        model.addAttribute("isAdmin", isAdmin);
1067
        return "settled_order_item";
1090
        return "settled_order_item";
1068
    }
1091
    }
1069
 
1092
 
1070
    @GetMapping("/unsettledOrders")
1093
    @GetMapping("/unsettledOrders")
Line 1083... Line 1106...
1083
                    loginDetails.getFofoId());
1106
                    loginDetails.getFofoId());
1084
        }
1107
        }
1085
 
1108
 
1086
        Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
1109
        Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
1087
 
1110
 
1088
        model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
1111
        model.addAttribute("pendingOrderItems", (List<PendingOrderItem>) map.get("pendingOrderItems"));
1089
        model.addAttribute("isAdmin", isAdmin);
1112
        model.addAttribute("isAdmin", isAdmin);
1090
        return "unsettled_order_item";
1113
        return "unsettled_order_item";
1091
    }
1114
    }
1092
 
1115
 
1093
    @GetMapping("/claimedOrders")
-
 
1094
    public String getclaimedOrders(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
-
 
1095
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
1096
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
-
 
1097
        List<Integer> fofoIds = fofoStoreRepository.selectActiveStores().stream().map(x -> x.getId())
-
 
1098
                .collect(Collectors.toList());
-
 
1099
 
-
 
1100
        List<PendingOrderItem> pendingOrderItem = null;
-
 
1101
 
-
 
1102
        if (isAdmin) {
-
 
1103
 
-
 
1104
            pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatus(OrderStatus.CLAIMED);
-
 
1105
            Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
-
 
1106
 
-
 
1107
            Map<Integer, CustomRetailer> customRetailersMap = fofoIds.stream().map(x -> customRetailerMap.get(x))
-
 
1108
                    .filter(x -> x != null).collect(Collectors.toList()).stream()
-
 
1109
                    .collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
-
 
1110
            model.addAttribute("customRetailersMap", customRetailersMap);
-
 
1111
 
-
 
1112
        } else {
-
 
1113
            pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatusAndFofoId(OrderStatus.CLAIMED,
-
 
1114
                    loginDetails.getFofoId());
-
 
1115
        }
-
 
1116
 
-
 
1117
        Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
-
 
1118
 
-
 
1119
        model.addAttribute("pendingOrderItem", map.get("pendingOrderItem"));
-
 
1120
        model.addAttribute("isAdmin", isAdmin);
-
 
1121
        return "claim_raised_order_item";
-
 
1122
    }
-
 
1123
 
-
 
1124
    @GetMapping("/getPendingOrderItem")
1116
    @GetMapping("/getPendingOrderItem")
1125
    public String getPendingOrderItem(HttpServletRequest request, @RequestParam int orderId, Model model)
1117
    public String getPendingOrderItem(HttpServletRequest request, @RequestParam int orderId, Model model)
1126
            throws ProfitMandiBusinessException {
1118
            throws ProfitMandiBusinessException {
1127
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1119
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1128
        Map<Integer, Item> itemMap = new HashMap<>();
1120
        Map<Integer, Item> itemMap = new HashMap<>();
Line 1238... Line 1230...
1238
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
1230
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
1239
 
1231
 
1240
        return "response";
1232
        return "response";
1241
    }
1233
    }
1242
 
1234
 
1243
    @RequestMapping(value = "/deliveredPendingOrderItem", method = RequestMethod.POST)
1235
    @GetMapping("/claimedOrders")
1244
    public String deliveredPendingOrderItem(HttpServletRequest request, @RequestParam int id, Model model)
1236
    public String getclaimedOrders(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
1245
            throws Exception {
-
 
1246
 
-
 
1247
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1237
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1248
        PendingOrderItem pendingOrderItem = pendingOrderItemRepository.selectById(id);
-
 
1249
        PendingOrder pendingOrder = pendingOrderRepository.selectById(pendingOrderItem.getOrderId());
-
 
1250
 
-
 
1251
        if (pendingOrder.getTotalAmount() == pendingOrder.getPaidAmount()) {
-
 
1252
            pendingOrderItem.setStatus(OrderStatus.UNSETTLED);
-
 
1253
            pendingOrderItem.setDeliveredTimestamp(LocalDateTime.now());
1238
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
1254
 
-
 
1255
        } else {
-
 
1256
            pendingOrderItem.setStatus(OrderStatus.SETTLED);
-
 
1257
            pendingOrderItem.setDeliveredTimestamp(LocalDateTime.now());
-
 
1258
 
-
 
1259
        }
-
 
1260
 
-
 
1261
        List<OrderStatus> status = pendingOrderItemRepository.selectByOrderId(pendingOrderItem.getOrderId()).stream()
1239
        List<Integer> fofoIds = fofoStoreRepository.selectActiveStores().stream().map(x -> x.getId())
1262
                .map(x -> x.getStatus()).collect(Collectors.toList());
1240
                .collect(Collectors.toList());
1263
 
1241
 
1264
        List<Integer> catalogIds = new ArrayList<>();
1242
        List<PendingOrderItem> pendingOrderItem = null;
1265
 
1243
 
1266
        Item item = itemRepository.selectById(pendingOrderItem.getItemId());
-
 
1267
        pendingOrderItem.setItemName(item.getItemDescription());
-
 
1268
        catalogIds.add(item.getCatalogItemId());
1244
        if (isAdmin) {
1269
 
1245
 
1270
        Map<Integer, JSONObject> contentMap = commonSolrService.getContentByCatalogIds(catalogIds);
-
 
1271
        JSONObject jsonObj = contentMap.get(item.getCatalogItemId());
-
 
1272
        pendingOrderItem.setImgUrl(jsonObj.getString("imageUrl_s"));
-
 
1273
        pendingOrder.setPendingOrderItems(Arrays.asList(pendingOrderItem));
1246
            pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatus(OrderStatus.CLAIMED);
1274
        CustomerAddress customerAddress = customerAddressRepository.selectById(pendingOrder.getCustomerAddressId());
-
 
1275
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy h:mm a");
-
 
1276
        Map<String, Object> emailModel = new HashMap<>();
-
 
1277
        emailModel.put("customer", customerAddress);
-
 
1278
        emailModel.put("pendingOrder", pendingOrder);
-
 
1279
        emailModel.put("date", dateTimeFormatter);
-
 
1280
        Customer customer = customerRepository.selectById(pendingOrder.getCustomerId());
1247
            Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
1281
        String[] customerEmail = null;
-
 
1282
        if (customer.getEmailId() != null && !customer.getEmailId().isEmpty()) {
-
 
1283
            customerEmail = new String[]{customer.getEmailId()};
-
 
1284
            List<String> bccTo = Arrays.asList("tejbeer.kaur@smartdukaan.com");
-
 
1285
 
1248
 
1286
            emailService.sendMailWithAttachments("Order Delivered with SmartDukaan", "order-delivered.vm", emailModel,
1249
            Map<Integer, CustomRetailer> customRetailersMap = fofoIds.stream().map(x -> customRetailerMap.get(x))
-
 
1250
                    .filter(x -> x != null).collect(Collectors.toList()).stream()
1287
                    customerEmail, null, bccTo.toArray(new String[0]));
1251
                    .collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
-
 
1252
            model.addAttribute("customRetailersMap", customRetailersMap);
1288
 
1253
 
-
 
1254
        } else {
-
 
1255
            pendingOrderItem = pendingOrderItemRepository.selectOrderItemByStatusAndFofoId(OrderStatus.CLAIMED,
-
 
1256
                    loginDetails.getFofoId());
1289
        }
1257
        }
1290
        if (!status.contains(OrderStatus.PENDING) && !status.contains(OrderStatus.PROCESSING)
-
 
1291
                && !status.contains(OrderStatus.BILLED) && !status.contains(OrderStatus.UNSETTLED)
-
 
1292
                && !status.contains(OrderStatus.CLAIMED)) {
-
 
1293
            pendingOrder.setStatus(OrderStatus.CLOSED);
-
 
1294
        }
-
 
1295
        pendingOrderItemRepository.persist(pendingOrderItem);
-
 
1296
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
-
 
1297
 
1258
 
-
 
1259
        Map<String, Object> map = pendingOrderService.getItemOrders(pendingOrderItem, loginDetails.getFofoId());
-
 
1260
 
-
 
1261
        model.addAttribute("pendingOrderItems", map.get("pendingOrderItems"));
-
 
1262
        model.addAttribute("isAdmin", isAdmin);
1298
        return "response";
1263
        return "claim_raised_order_item";
1299
    }
1264
    }
1300
 
1265
 
1301
    @RequestMapping(value = "/raiseClaimOrderItem", method = RequestMethod.POST)
1266
    @RequestMapping(value = "/raiseClaimOrderItem", method = RequestMethod.POST)
1302
    public String raiseClaimOrderItem(HttpServletRequest request, @RequestParam int id, Model model) throws Exception {
1267
    public String raiseClaimOrderItem(HttpServletRequest request, @RequestParam int id, Model model) throws Exception {
1303
 
1268
 
Line 1340... Line 1305...
1340
    @RequestMapping(value = "/getOnlineOrder", method = RequestMethod.GET)
1305
    @RequestMapping(value = "/getOnlineOrder", method = RequestMethod.GET)
1341
    public String cancelOrder(HttpServletRequest request, Model model) throws Exception {
1306
    public String cancelOrder(HttpServletRequest request, Model model) throws Exception {
1342
        return "online-order";
1307
        return "online-order";
1343
    }
1308
    }
1344
 
1309
 
-
 
1310
    @RequestMapping(value = "/deliveredPendingOrderItem", method = RequestMethod.POST)
-
 
1311
    public String deliveredPendingOrderItem(HttpServletRequest request, @RequestParam(name = "id") int pendingOrderItemId, Model model)
-
 
1312
            throws Exception {
-
 
1313
 
-
 
1314
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
1315
        PendingOrderItem pendingOrderItem = pendingOrderItemRepository.selectById(pendingOrderItemId);
-
 
1316
        PendingOrder pendingOrder = pendingOrderRepository.selectById(pendingOrderItem.getOrderId());
-
 
1317
 
-
 
1318
        //Prepaid payment successful
-
 
1319
        if (pendingOrder.getTotalAmount() == pendingOrder.getPaidAmount()) {
-
 
1320
            //pendingOrderItem.setStatus(OrderStatus.UNSETTLED);
-
 
1321
//            pendingOrderItem.setSettled(false);
-
 
1322
            pendingOrderItem.setStatus(OrderStatus.CLAIMED);
-
 
1323
            pendingOrderItem.setClaimedTimestamp(LocalDateTime.now());
-
 
1324
        } else {
-
 
1325
            pendingOrderItem.setStatus(OrderStatus.SETTLED);
-
 
1326
        }
-
 
1327
        pendingOrderItem.setDeliveredTimestamp(LocalDateTime.now());
-
 
1328
 
-
 
1329
        List<OrderStatus> pendingOrderItemStatusList = pendingOrderItemRepository.selectByOrderId(pendingOrderItem.getOrderId()).stream()
-
 
1330
                .map(x -> x.getStatus()).collect(Collectors.toList());
-
 
1331
 
-
 
1332
        List<Integer> catalogIds = new ArrayList<>();
-
 
1333
 
-
 
1334
        Item item = itemRepository.selectById(pendingOrderItem.getItemId());
-
 
1335
        pendingOrderItem.setItemName(item.getItemDescription());
-
 
1336
        catalogIds.add(item.getCatalogItemId());
-
 
1337
 
-
 
1338
        Map<Integer, JSONObject> contentMap = commonSolrService.getContentByCatalogIds(catalogIds);
-
 
1339
        JSONObject jsonObj = contentMap.get(item.getCatalogItemId());
-
 
1340
        pendingOrderItem.setImgUrl(jsonObj.getString("imageUrl_s"));
-
 
1341
        pendingOrder.setPendingOrderItems(Arrays.asList(pendingOrderItem));
-
 
1342
        CustomerAddress customerAddress = customerAddressRepository.selectById(pendingOrder.getCustomerAddressId());
-
 
1343
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy h:mm a");
-
 
1344
        Map<String, Object> emailModel = new HashMap<>();
-
 
1345
        emailModel.put("customer", customerAddress);
-
 
1346
        emailModel.put("pendingOrder", pendingOrder);
-
 
1347
        emailModel.put("date", dateTimeFormatter);
-
 
1348
        Customer customer = customerRepository.selectById(pendingOrder.getCustomerId());
-
 
1349
        String[] customerEmail = null;
-
 
1350
        if (customer.getEmailId() != null && !customer.getEmailId().isEmpty()) {
-
 
1351
            customerEmail = new String[]{customer.getEmailId()};
-
 
1352
            List<String> bccTo = Arrays.asList("tejbeer.kaur@smartdukaan.com");
-
 
1353
 
-
 
1354
            emailService.sendMailWithAttachments("Order Delivered with SmartDukaan", "order-delivered.vm", emailModel,
-
 
1355
                    customerEmail, null, bccTo.toArray(new String[0]));
-
 
1356
 
-
 
1357
        }
-
 
1358
        if (!pendingOrderItemStatusList.contains(OrderStatus.PENDING) && !pendingOrderItemStatusList.contains(OrderStatus.PROCESSING)
-
 
1359
                && !pendingOrderItemStatusList.contains(OrderStatus.BILLED) && !pendingOrderItemStatusList.contains(OrderStatus.UNSETTLED)
-
 
1360
                && !pendingOrderItemStatusList.contains(OrderStatus.CLAIMED)) {
-
 
1361
            pendingOrder.setStatus(OrderStatus.CLOSED);
-
 
1362
        }
-
 
1363
        pendingOrderItemRepository.persist(pendingOrderItem);
-
 
1364
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
-
 
1365
 
-
 
1366
        return "response";
-
 
1367
    }
-
 
1368
 
1345
    @GetMapping("/getAllOrdersByStatus")
1369
    @GetMapping("/getAllOrdersByStatus")
1346
    public String getAllOrdersByStatus(HttpServletRequest request, @RequestParam OrderStatus status,
1370
    public String getAllOrdersByStatus(HttpServletRequest request, @RequestParam OrderStatus status,
1347
                                       @RequestParam(required = false) LocalDateTime startTime,
1371
                                       @RequestParam(required = false) LocalDateTime startTime,
1348
                                       @RequestParam(required = false) LocalDateTime endTime, Model model) throws ProfitMandiBusinessException {
1372
                                       @RequestParam(required = false) LocalDateTime endTime, Model model) throws ProfitMandiBusinessException {
1349
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1373
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1350
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
1374
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
-
 
1375
        boolean isAccountsL2 = false;
-
 
1376
        if (isAdmin) {
-
 
1377
            AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
-
 
1378
            List<Position> positions = positionRepository.selectPositionByAuthId(authUser.getId());
-
 
1379
            for (Position position : positions) {
-
 
1380
                if ((position.getEscalationType().equals(EscalationType.L2)
-
 
1381
                        && position.getCategoryId() == ProfitMandiConstants.TICKET_CATEGORY_ACCOUNTS)) {
-
 
1382
                    isAccountsL2 = true;
-
 
1383
                    break;
-
 
1384
                }
-
 
1385
            }
-
 
1386
 
-
 
1387
            LOGGER.info("positions {}", positions);
-
 
1388
        }
-
 
1389
 
-
 
1390
 
-
 
1391
 
1351
 
1392
 
1352
        LOGGER.info("startTime {}", startTime);
1393
        LOGGER.info("startTime {}", startTime);
1353
        LOGGER.info("endTime {}", endTime);
1394
        LOGGER.info("endTime {}", endTime);
1354
 
1395
 
1355
        List<PendingOrderItem> pendingOrderItems;
1396
        List<PendingOrderItem> pendingOrderItems;
Line 1391... Line 1432...
1391
 
1432
 
1392
        model.addAttribute("pendingOrderItems", (List<PendingOrderItem>) map.get("pendingOrderItems"));
1433
        model.addAttribute("pendingOrderItems", (List<PendingOrderItem>) map.get("pendingOrderItems"));
1393
        model.addAttribute("partnerInventoryMap", map.get("partnerInventoryMap"));
1434
        model.addAttribute("partnerInventoryMap", map.get("partnerInventoryMap"));
1394
 
1435
 
1395
        model.addAttribute("isAdmin", isAdmin);
1436
        model.addAttribute("isAdmin", isAdmin);
-
 
1437
        model.addAttribute("isAccountsL2", isAccountsL2);
1396
        return "online-order-item";
1438
        return "online-order-item";
1397
    }
1439
    }
1398
 
1440
 
-
 
1441
    @RequestMapping(value = "/onlinePaymentAddToPartnerWallet", method = RequestMethod.POST)
-
 
1442
    public String onlinePaymentAddToPartnerWallet(HttpServletRequest request, @RequestParam int id,
-
 
1443
                                                  Model model) throws Exception {
-
 
1444
        PendingOrderItem pendingOrderItem = pendingOrderItemRepository.selectById(id);
-
 
1445
        PendingOrder pendingOrder = pendingOrderRepository.selectById(pendingOrderItem.getOrderId());
-
 
1446
        int fofoId = pendingOrder.getFofoId();
-
 
1447
        double deductionPayment = (pendingOrderItem.getSellingPrice() * 2.36) / 100;
-
 
1448
        walletService.addAmountToWallet(fofoId, id, WalletReferenceType.ONLINE_ORDER_PAYMENT, "Online Order Payment", pendingOrderItem.getSellingPrice(), LocalDateTime.now());
-
 
1449
        walletService.consumeAmountFromWallet(fofoId, id,
-
 
1450
                WalletReferenceType.ONLINE_GATEWAY_FEE, "Payment Gatewayfee", (float) deductionPayment, LocalDateTime.now());
-
 
1451
 
-
 
1452
        pendingOrderItem.setStatus(OrderStatus.CLOSED);
-
 
1453
        pendingOrder.setStatus(OrderStatus.CLOSED);
-
 
1454
 
-
 
1455
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
-
 
1456
 
-
 
1457
        return "response";
-
 
1458
    }
-
 
1459
 
1399
    //TODO Tejus
1460
    //TODO Tejus
1400
    @RequestMapping(value = "/getBulkOrder")
1461
    @RequestMapping(value = "/getBulkOrder")
1401
    public String getBulkOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException, MessagingException, IOException {
1462
    public String getBulkOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException, MessagingException, IOException {
1402
        return "bulk-order";
1463
        return "bulk-order";
1403
    }
1464
    }