Subversion Repositories SmartDukaan

Rev

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

Rev 33719 Rev 33720
Line 217... Line 217...
217
                    }
217
                    }
218
                }
218
                }
219
            }
219
            }
220
        } catch (Exception e) {
220
        } catch (Exception e) {
221
            // If no rescheduled calls found, fall back to original logic
221
            // If no rescheduled calls found, fall back to original logic
-
 
222
            UpSaleOrder TMinus2UpsaleOrder = this.getTMinus2UpSaleOrderByFofoIds(fofoIds);
222
 
223
 
223
            UpSaleOrder last48hourLatestOrder = this.getOldestUpSaleOrderFromLast48Hours(fofoIds);
224
            TMinus2UpsaleOrder.setFetched(true);
224
 
225
 
225
            last48hourLatestOrder.setFetched(true);
226
            LOGGER.info("last48hourLatestOrder {}", TMinus2UpsaleOrder);
226
 
-
 
227
            LOGGER.info("last48hourLatestOrder {}", last48hourLatestOrder);
227
            if (TMinus2UpsaleOrder != null) {
228
 
-
 
229
            boolean exists = upSaleCallRepository.existsOrderId(last48hourLatestOrder.getOrderId());
228
                boolean exists = upSaleCallRepository.existsOrderId(TMinus2UpsaleOrder.getOrderId());
230
                if (!exists) {
229
                if (!exists) {
231
                    FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(last48hourLatestOrder.getOrderId());
230
                    FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(TMinus2UpsaleOrder.getOrderId());
232
                    if (fofoIds.contains(fofoOrder.getFofoId())) {
231
                    if (fofoIds.contains(fofoOrder.getFofoId())) {
233
                        Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
232
                        Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
234
                        if (customer != null) {
233
                        if (customer != null) {
235
                            String mobile = customer.getMobileNumber();
234
                            String mobile = customer.getMobileNumber();
236
                                UpSaleCall upSaleCall = new UpSaleCall();
235
                            UpSaleCall upSaleCall = new UpSaleCall();
237
                                upSaleCall.setAgentId(user.getId());
236
                            upSaleCall.setAgentId(user.getId());
238
                                upSaleCall.setMobile(mobile);
237
                            upSaleCall.setMobile(mobile);
239
                                upSaleCall.setOriginalOrderId(fofoOrder.getId());
238
                            upSaleCall.setOriginalOrderId(fofoOrder.getId());
240
                                upSaleCall.setStatus(UpSaleCallStatus.FETCHED);
239
                            upSaleCall.setStatus(UpSaleCallStatus.FETCHED);
241
                                upSaleCall.setCreatedTimestamp(LocalDateTime.now());
240
                            upSaleCall.setCreatedTimestamp(LocalDateTime.now());
242
                                upSaleCallRepository.persist(upSaleCall);
241
                            upSaleCallRepository.persist(upSaleCall);
243
 
242
 
244
                            LOGGER.info("Processing UpSaleOrder {}", last48hourLatestOrder);
243
                            LOGGER.info("Processing UpSaleOrder {}", TMinus2UpsaleOrder);
245
 
244
 
246
                                List<Map<String, Object>> itemDetails = new ArrayList<>();
245
                            List<Map<String, Object>> itemDetails = new ArrayList<>();
247
                                List<FofoOrderItem> fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
246
                            List<FofoOrderItem> fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
248
 
247
 
249
                                for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
248
                            for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
250
                                    Item item = itemRepository.selectById(fofoOrderItem.getItemId());
249
                                Item item = itemRepository.selectById(fofoOrderItem.getItemId());
251
                                    if (item.isSmartPhone()) {
250
                                if (item.isSmartPhone()) {
252
                                        float sellingPrice = tagListingRepository.selectByItemId(item.getId()).getSellingPrice();
251
                                    float sellingPrice = tagListingRepository.selectByItemId(item.getId()).getSellingPrice();
253
                                        Map<String, List<MobileInsurancePlan>> plans = this.getPlans(fofoOrderItem.getSellingPrice(), item.getId());
252
                                    Map<String, List<MobileInsurancePlan>> plans = this.getPlans(fofoOrderItem.getSellingPrice(), item.getId());
254
                                        Map<String, Object> itemDetail = new HashMap<>();
253
                                    Map<String, Object> itemDetail = new HashMap<>();
255
                                        itemDetail.put("item", item);
254
                                    itemDetail.put("item", item);
256
                                        itemDetail.put("fofoOrderItem", fofoOrderItem);
255
                                    itemDetail.put("fofoOrderItem", fofoOrderItem);
257
                                        itemDetail.put("plans", plans);
256
                                    itemDetail.put("plans", plans);
258
                                        itemDetails.add(itemDetail);
257
                                    itemDetails.add(itemDetail);
259
                                    }
-
 
260
                                }
258
                                }
-
 
259
                            }
261
 
260
 
262
                                Set<Integer> fofoOrderItemIds = fofoOrderItems.stream().map(FofoOrderItem::getId).collect(Collectors.toSet());
261
                            Set<Integer> fofoOrderItemIds = fofoOrderItems.stream().map(FofoOrderItem::getId).collect(Collectors.toSet());
263
                                List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByFofoOrderItemIds(fofoOrderItemIds);
262
                            List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByFofoOrderItemIds(fofoOrderItemIds);
264
 
263
 
265
                                Map<Integer, List<FofoLineItem>> fofoLineItemMap = fofoLineItems.stream()
264
                            Map<Integer, List<FofoLineItem>> fofoLineItemMap = fofoLineItems.stream()
266
                                        .collect(Collectors.groupingBy(FofoLineItem::getFofoOrderItemId));
265
                                    .collect(Collectors.groupingBy(FofoLineItem::getFofoOrderItemId));
267
 
266
 
268
                                List<UpSaleCallStatus> upSaleCallStatuses = new ArrayList<>(Arrays.asList(UpSaleCallStatus.values()));
267
                            List<UpSaleCallStatus> upSaleCallStatuses = new ArrayList<>(Arrays.asList(UpSaleCallStatus.values()));
-
 
268
 
-
 
269
                            model.addAttribute("upSaleCallStatuses", upSaleCallStatuses);
-
 
270
                            model.addAttribute("fofoOrder", fofoOrder);
-
 
271
                            model.addAttribute("customer", customer);
-
 
272
                            model.addAttribute("itemDetails", itemDetails);
-
 
273
                            model.addAttribute("fofoLineItemMap", fofoLineItemMap);
-
 
274
                            model.addAttribute("upsaleCallId", upSaleCall.getId());
-
 
275
                            model.addAttribute("stateNames",
-
 
276
                                    stateRepository.selectAll().stream().map(State::getName).collect(Collectors.toList()));
-
 
277
                            model.addAttribute("totalProductSaleAmount", totalProductSaleAmount);
269
 
278
 
270
                                model.addAttribute("upSaleCallStatuses", upSaleCallStatuses);
-
 
271
                                model.addAttribute("fofoOrder", fofoOrder);
-
 
272
                                model.addAttribute("customer", customer);
-
 
273
                                model.addAttribute("itemDetails", itemDetails);
-
 
274
                                model.addAttribute("fofoLineItemMap", fofoLineItemMap);
-
 
275
                                model.addAttribute("upsaleCallId", upSaleCall.getId());
-
 
276
                                model.addAttribute("stateNames",
-
 
277
                                        stateRepository.selectAll().stream().map(State::getName).collect(Collectors.toList()));
-
 
278
                                model.addAttribute("totalProductSaleAmount", totalProductSaleAmount);
-
 
279
 
-
 
280
                                return "up-sale-call";
279
                            return "up-sale-call";
281
 
280
 
282
                        }
281
                        }
283
                    }
282
                    }
284
                }
283
                }
-
 
284
            }
285
 
285
 
286
        }
286
        }
287
 
287
 
288
 
288
 
289
        LOGGER.info("No valid UpSaleOrder found for up-sale call.");
289
        LOGGER.info("No valid UpSaleOrder found for up-sale call.");
290
        model.addAttribute("totalProductSaleAmount", totalProductSaleAmount);
290
        model.addAttribute("totalProductSaleAmount", totalProductSaleAmount);
291
        model.addAttribute("message", "No valid UpSaleOrder found.");
291
        model.addAttribute("message", "No valid UpSaleOrder found.");
292
        return "up-sale-call";
292
        return "up-sale-call";
293
    }
293
    }
294
 
294
 
295
    UpSaleOrder getOldestUpSaleOrderFromLast48Hours(Set<Integer> fofoIds) {
295
    UpSaleOrder getTMinus2UpSaleOrderByFofoIds(Set<Integer> fofoIds) {
296
        LocalDateTime startDateTime = LocalDateTime.now().minusDays(2); // 48 hours ago
296
        LocalDateTime startDateTime = LocalDateTime.now().minusDays(2); // 48 hours ago
297
        return upSaleOrderRepository.findOldestUpSaleOrderByFofoIdsLast48Hours(fofoIds, startDateTime);
297
        return upSaleOrderRepository.getTMinus2UpSaleOrderByFofoIds(fofoIds, startDateTime);
298
    }
298
    }
299
 
299
 
300
    @RequestMapping(value = "/generatePaymentLink", method = RequestMethod.POST)
300
    @RequestMapping(value = "/generatePaymentLink", method = RequestMethod.POST)
301
    public ResponseEntity<String> generatePaymentLink(HttpServletRequest request, Model model, @RequestBody PaymentLinkDetailModel paymentLinkDetailModel) {
301
    public ResponseEntity<String> generatePaymentLink(HttpServletRequest request, Model model, @RequestBody PaymentLinkDetailModel paymentLinkDetailModel) {
302
        double amount;
302
        double amount;