| Line 141... |
Line 141... |
| 141 |
|
141 |
|
| 142 |
@Autowired
|
142 |
@Autowired
|
| 143 |
private LeadDetailRepository leadDetailRepository;
|
143 |
private LeadDetailRepository leadDetailRepository;
|
| 144 |
|
144 |
|
| 145 |
@Autowired
|
145 |
@Autowired
|
| - |
|
146 |
private LeadLiveLocationRepository leadLiveLocationRepository;
|
| - |
|
147 |
|
| - |
|
148 |
@Autowired
|
| - |
|
149 |
private LeadVisitApprovalRepository leadVisitApprovalRepository;
|
| - |
|
150 |
|
| - |
|
151 |
@Autowired
|
| 146 |
private Mongo mongoClient;
|
152 |
private Mongo mongoClient;
|
| 147 |
|
153 |
|
| 148 |
@Autowired
|
154 |
@Autowired
|
| 149 |
private ResponseSender<?> responseSender;
|
155 |
private ResponseSender<?> responseSender;
|
| 150 |
|
156 |
|
| Line 376... |
Line 382... |
| 376 |
brandsDisplays.addAll(brandsService.getBrandsToDisplay(6));
|
382 |
brandsDisplays.addAll(brandsService.getBrandsToDisplay(6));
|
| 377 |
model.addAttribute("brandsDisplays", brandsDisplays.stream().distinct().collect(Collectors.toList()));
|
383 |
model.addAttribute("brandsDisplays", brandsDisplays.stream().distinct().collect(Collectors.toList()));
|
| 378 |
|
384 |
|
| 379 |
LOGGER.info("brandsDisplays" + brandsDisplays);
|
385 |
LOGGER.info("brandsDisplays" + brandsDisplays);
|
| 380 |
|
386 |
|
| - |
|
387 |
// Geo location status map for all leads
|
| - |
|
388 |
if (!leads.isEmpty()) {
|
| - |
|
389 |
List<Integer> allLeadIds = leads.stream().map(Lead::getId).collect(Collectors.toList());
|
| - |
|
390 |
Map<Integer, LeadLiveLocation> geoLocationMap = leadLiveLocationRepository.selectByLeadIds(allLeadIds).stream()
|
| - |
|
391 |
.collect(Collectors.toMap(LeadLiveLocation::getLeadId, x -> x, (a, b) -> a));
|
| - |
|
392 |
model.addAttribute("geoLocationMap", geoLocationMap);
|
| - |
|
393 |
} else {
|
| - |
|
394 |
model.addAttribute("geoLocationMap", new HashMap<>());
|
| - |
|
395 |
}
|
| - |
|
396 |
model.addAttribute("salesUsers", salesUsers);
|
| - |
|
397 |
model.addAttribute("bgcUsers", bgcUsers);
|
| 381 |
|
398 |
|
| 382 |
return "lead";
|
399 |
return "lead";
|
| 383 |
|
400 |
|
| 384 |
}
|
401 |
}
|
| 385 |
|
402 |
|
| Line 884... |
Line 901... |
| 884 |
if (leadDetail == null && !createLeadActivityRequest.getStatus().equals(LeadStatus.notInterested) && leadAuthUser.isActive()) {
|
901 |
if (leadDetail == null && !createLeadActivityRequest.getStatus().equals(LeadStatus.notInterested) && leadAuthUser.isActive()) {
|
| 885 |
|
902 |
|
| 886 |
throw new ProfitMandiBusinessException("LeadDetail", "", "Please fill lead detail");
|
903 |
throw new ProfitMandiBusinessException("LeadDetail", "", "Please fill lead detail");
|
| 887 |
}
|
904 |
}
|
| 888 |
|
905 |
|
| - |
|
906 |
// Validate approved geolocation for physical visit
|
| - |
|
907 |
if (createLeadActivityRequest.getStatus() == LeadStatus.followUp
|
| - |
|
908 |
&& createLeadActivityRequest.getCommunicationType() != null
|
| - |
|
909 |
&& createLeadActivityRequest.getCommunicationType().equals(CommunicationType.VISIT)) {
|
| - |
|
910 |
LeadLiveLocation approvedGeo = leadLiveLocationRepository.selectApprovedByLeadId(createLeadActivityRequest.getId());
|
| - |
|
911 |
if (approvedGeo == null) {
|
| - |
|
912 |
throw new ProfitMandiBusinessException("Lead", "", "Missing Valid Live Geo Location for the lead");
|
| - |
|
913 |
}
|
| - |
|
914 |
}
|
| - |
|
915 |
|
| 889 |
LeadActivity leadActivity = new LeadActivity();
|
916 |
LeadActivity leadActivity = new LeadActivity();
|
| 890 |
leadActivity.setLeadId(createLeadActivityRequest.getId());
|
917 |
leadActivity.setLeadId(createLeadActivityRequest.getId());
|
| 891 |
leadActivity.setRemark(createLeadActivityRequest.getRemark());
|
918 |
leadActivity.setRemark(createLeadActivityRequest.getRemark());
|
| 892 |
|
919 |
|
| 893 |
LOGGER.info("createRefferalRequest" + createLeadActivityRequest);
|
920 |
LOGGER.info("createRefferalRequest" + createLeadActivityRequest);
|
| 894 |
|
921 |
|
| 895 |
if (createLeadActivityRequest.getStatus() == LeadStatus.followUp) {
|
922 |
if (createLeadActivityRequest.getStatus() == LeadStatus.followUp) {
|
| 896 |
leadActivity.setSchelduleTimestamp(createLeadActivityRequest.getScheldule());
|
923 |
leadActivity.setSchelduleTimestamp(createLeadActivityRequest.getScheldule());
|
| 897 |
leadActivity.setCommunicationType(createLeadActivityRequest.getCommunicationType());
|
924 |
leadActivity.setCommunicationType(createLeadActivityRequest.getCommunicationType());
|
| 898 |
if (leadActivity.getCommunicationType().equals(CommunicationType.VISIT)) {
|
925 |
if (leadActivity.getCommunicationType().equals(CommunicationType.VISIT)) {
|
| - |
|
926 |
// Create pending visit approval instead of direct visit request
|
| - |
|
927 |
LeadVisitApproval approval = new LeadVisitApproval();
|
| - |
|
928 |
approval.setLeadId(createLeadActivityRequest.getId());
|
| - |
|
929 |
approval.setAssignedTo(createLeadActivityRequest.getAssignTo());
|
| - |
|
930 |
approval.setRequestedBy(authUser.getId());
|
| 899 |
visitRequestRepository.createVisitRequest(createLeadActivityRequest.getId(), "lead", createLeadActivityRequest.getAssignTo(), createLeadActivityRequest.getScheldule());
|
931 |
approval.setScheduleTimestamp(createLeadActivityRequest.getScheldule());
|
| - |
|
932 |
approval.setStatus("PENDING");
|
| - |
|
933 |
approval.setCreatedTimestamp(LocalDateTime.now());
|
| - |
|
934 |
approval.setUpdatedTimestamp(LocalDateTime.now());
|
| - |
|
935 |
|
| - |
|
936 |
// Parse beat selection if provided (format: "date|beatName|planGroupId")
|
| - |
|
937 |
String beatSelection = createLeadActivityRequest.getBeatSelection();
|
| - |
|
938 |
if (beatSelection != null && beatSelection.contains("|")) {
|
| - |
|
939 |
String[] parts = beatSelection.split("\\|", 3);
|
| - |
|
940 |
approval.setBeatDate(LocalDate.parse(parts[0]));
|
| - |
|
941 |
approval.setBeatName(parts.length > 1 ? parts[1] : "");
|
| - |
|
942 |
if (parts.length > 2) {
|
| - |
|
943 |
approval.setBeatPlanGroupId(parts[2]);
|
| - |
|
944 |
}
|
| - |
|
945 |
} else if (createLeadActivityRequest.getScheldule() != null) {
|
| - |
|
946 |
approval.setBeatDate(createLeadActivityRequest.getScheldule().toLocalDate());
|
| - |
|
947 |
}
|
| - |
|
948 |
|
| - |
|
949 |
leadVisitApprovalRepository.persist(approval);
|
| - |
|
950 |
|
| - |
|
951 |
// Log activity
|
| - |
|
952 |
LeadActivity approvalActivity = new LeadActivity();
|
| - |
|
953 |
approvalActivity.setLeadId(createLeadActivityRequest.getId());
|
| - |
|
954 |
approvalActivity.setRemark("Visit requested on beat: " + approval.getBeatName()
|
| - |
|
955 |
+ " (" + approval.getBeatDate() + ") - Pending L4 approval");
|
| - |
|
956 |
approvalActivity.setAuthId(authUser.getId());
|
| - |
|
957 |
approvalActivity.setCreatedTimestamp(LocalDateTime.now());
|
| - |
|
958 |
leadActivityRepository.persist(approvalActivity);
|
| 900 |
}
|
959 |
}
|
| 901 |
} else {
|
960 |
} else {
|
| 902 |
leadActivity.setSchelduleTimestamp(null);
|
961 |
leadActivity.setSchelduleTimestamp(null);
|
| 903 |
}
|
962 |
}
|
| 904 |
leadActivity.setCreatedTimestamp(LocalDateTime.now());
|
963 |
leadActivity.setCreatedTimestamp(LocalDateTime.now());
|