Subversion Repositories SmartDukaan

Rev

Rev 36771 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 36771 Rev 36827
Line 482... Line 482...
482
                LocalDate.now());
482
                LocalDate.now());
483
        Map<Integer, List<VisitRequest>> visitRequestMap = null;
483
        Map<Integer, List<VisitRequest>> visitRequestMap = null;
484
        if (!visitRequests.isEmpty()) {
484
        if (!visitRequests.isEmpty()) {
485
            visitRequestMap = visitRequests.stream().collect(Collectors.groupingBy(x -> x.getVisitId()));
485
            visitRequestMap = visitRequests.stream().collect(Collectors.groupingBy(x -> x.getVisitId()));
486
        }
486
        }
-
 
487
 
-
 
488
        // Hierarchy expansion (Sales only):
-
 
489
        //   L1 → just self
-
 
490
        //   L2 → self + every L1 reportee
-
 
491
        //   L3 → self + L1 + L2 reportees
-
 
492
        //   L4 → self + L1 + L2 + L3 reportees
-
 
493
        // Non-Sales callers stay at "just self" — same as today.
-
 
494
        List<Integer> visibleAuthIds = visibleAuthIdsForLeads(authUser.getId());
-
 
495
 
487
        if (status.equals(LeadStatus.followUp)) {
496
        if (status.equals(LeadStatus.followUp)) {
488
 
497
 
489
            leads = leadRepository.selectLeadsScheduledBetweenDate(Arrays.asList(authUser.getId()), null, null);
498
            leads = leadRepository.selectLeadsScheduledBetweenDate(visibleAuthIds, null, null);
490
 
499
 
491
            if (visitRequestMap != null) {
500
            if (visitRequestMap != null) {
492
                for (Lead lead : leads) {
501
                for (Lead lead : leads) {
493
                    List<VisitRequest> visitRequest = visitRequestMap.get(lead.getId());
502
                    List<VisitRequest> visitRequest = visitRequestMap.get(lead.getId());
494
 
503
 
Line 520... Line 529...
520
             * else if (o1.getScheduledTimestamp() != null) { return 1; } else { return -1;
529
             * else if (o1.getScheduledTimestamp() != null) { return 1; } else { return -1;
521
             * } });
530
             * } });
522
             */
531
             */
523
 
532
 
524
        } else {
533
        } else {
-
 
534
            // Same hierarchy expansion as the followUp branch — Sales heads see their
-
 
535
            // downline's leads alongside their own.
525
            leads = leadRepository.selectByAssignAuthIdAndStatus(authUser.getId(), status);
536
            leads = leadRepository.selectByAssignAuthIdsAndStatus(visibleAuthIds, status);
526
 
537
 
527
        }
538
        }
528
 
539
 
529
        return responseSender.ok(leads);
540
        return responseSender.ok(leads);
530
 
541
 
531
    }
542
    }
532
 
543
 
-
 
544
    // Returns the auth-user IDs whose leads are visible to `authUserId` on the
-
 
545
    // mobile "My Leads" screen. Sales heads see their full downline; everyone
-
 
546
    // else (incl. non-Sales) sees only themselves.
-
 
547
    private List<Integer> visibleAuthIdsForLeads(int authUserId) {
-
 
548
        List<Integer> ids = new ArrayList<>();
-
 
549
        ids.add(authUserId);
-
 
550
 
-
 
551
        EscalationType highestSales = null;
-
 
552
        try {
-
 
553
            for (Position p : positionRepository.selectPositionByAuthId(authUserId)) {
-
 
554
                if (p.getCategoryId() == ProfitMandiConstants.TICKET_CATEGORY_SALES) {
-
 
555
                    if (highestSales == null || p.getEscalationType().isGreaterThanEqualTo(highestSales)) {
-
 
556
                        highestSales = p.getEscalationType();
-
 
557
                    }
-
 
558
                }
-
 
559
            }
-
 
560
        } catch (Exception ignored) {
-
 
561
        }
-
 
562
 
-
 
563
        // Only sales heads (L2+) get the downline expansion. L1 / non-Sales stay at self.
-
 
564
        if (highestSales != null && highestSales.isGreaterThanEqualTo(EscalationType.L2)) {
-
 
565
            try {
-
 
566
                List<Integer> reportees = authService.getAllReportees(authUserId);
-
 
567
                if (reportees != null) {
-
 
568
                    for (Integer r : reportees) {
-
 
569
                        if (r != null && !ids.contains(r)) ids.add(r);
-
 
570
                    }
-
 
571
                }
-
 
572
            } catch (Exception ignored) {
-
 
573
            }
-
 
574
        }
-
 
575
        return ids;
-
 
576
    }
-
 
577
 
533
    @RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
578
    @RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
534
    @ApiImplicitParams({@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
579
    @ApiImplicitParams({@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
535
    public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id) throws
580
    public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id) throws
536
            ProfitMandiBusinessException {
581
            ProfitMandiBusinessException {
537
 
582