| 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;
|