Subversion Repositories SmartDukaan

Rev

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

Rev 36101 Rev 36642
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());