Subversion Repositories SmartDukaan

Rev

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

Rev 35467 Rev 35469
Line 260... Line 260...
260
            @ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
260
            @ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
261
    public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String
261
    public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String
262
                                                     gmailId,
262
                                                     gmailId,
263
                                             @RequestParam(name = "status") LeadStatus status) throws ProfitMandiBusinessException {
263
                                             @RequestParam(name = "status") LeadStatus status) throws ProfitMandiBusinessException {
264
        AuthUser authUser = authRepository.selectByGmailId(gmailId);
264
        AuthUser authUser = authRepository.selectByGmailId(gmailId);
265
        if (authUser == null) {
-
 
266
            throw new ProfitMandiBusinessException("gmailId", gmailId, "Invalid gmailId");
-
 
267
        }
-
 
268
        List<Lead> leads = null;
265
        List<Lead> leads = null;
269
        LOGGER.info("emails" + status);
266
        LOGGER.info("emails" + status);
270
 
267
 
-
 
268
        List<VisitRequest> visitRequests = visitRequestRepository.selectByAuthIdAndDate(authUser.getId(),
-
 
269
                LocalDate.now());
-
 
270
        Map<Integer, List<VisitRequest>> visitRequestMap = null;
-
 
271
        if (!visitRequests.isEmpty()) {
-
 
272
            visitRequestMap = visitRequests.stream().collect(Collectors.groupingBy(x -> x.getVisitId()));
-
 
273
        }
271
        if (status.equals(LeadStatus.followUp)) {
274
        if (status.equals(LeadStatus.followUp)) {
272
            leads = leadRepository.selectLeadsScheduledBetweenDate(Arrays.asList(authUser.getId()), null, null);
-
 
273
 
275
 
274
            // Only fetch visitRequests when needed for followUp status
-
 
275
            List<VisitRequest> visitRequests = visitRequestRepository.selectByAuthIdAndDate(authUser.getId(),
276
            leads = leadRepository.selectLeadsScheduledBetweenDate(Arrays.asList(authUser.getId()), null, null);
276
                    LocalDate.now());
-
 
277
            if (!visitRequests.isEmpty()) {
-
 
278
                Map<Integer, List<VisitRequest>> visitRequestMap = visitRequests.stream()
-
 
279
                        .collect(Collectors.groupingBy(VisitRequest::getVisitId));
-
 
280
 
277
 
281
                Comparator<VisitRequest> visitComparator = Comparator.comparing(VisitRequest::getCreatedTimestamp);
278
            if (visitRequestMap != null) {
282
                for (Lead lead : leads) {
279
                for (Lead lead : leads) {
283
                    List<VisitRequest> visitRequest = visitRequestMap.get(lead.getId());
280
                    List<VisitRequest> visitRequest = visitRequestMap.get(lead.getId());
-
 
281
 
284
                    if (visitRequest != null) {
282
                    if (visitRequest != null) {
285
                        if (visitRequest.size() > 1) {
283
                        if (visitRequest.size() > 1) {
-
 
284
 
-
 
285
                            Comparator<VisitRequest> visitComparato = Comparator
-
 
286
                                    .comparing(VisitRequest::getCreatedTimestamp);
-
 
287
 
286
                            VisitRequest youngestVisit = visitRequest.stream().max(visitComparator).get();
288
                            VisitRequest youngestVisit = visitRequest.stream().max(visitComparato).get();
287
                            lead.setVisitStatus(youngestVisit.getStatus());
289
                            lead.setVisitStatus(youngestVisit.getStatus());
-
 
290
 
288
                        } else {
291
                        } else {
289
                            lead.setVisitStatus(visitRequest.get(0).getStatus());
292
                            lead.setVisitStatus(visitRequest.get(0).getStatus());
-
 
293
 
290
                        }
294
                        }
291
                    }
295
                    }
-
 
296
 
292
                }
297
                }
293
            }
298
            }
294
 
299
 
295
            leads = leads.stream()
300
            leads = leads.stream()
296
                    .sorted(Comparator.comparing(Lead::getScheduledTimestamp, Comparator.nullsFirst(Comparator.reverseOrder())))
301
                    .sorted(Comparator.comparing(Lead::getScheduledTimestamp, Comparator.nullsFirst(Comparator.reverseOrder())))
297
                    .collect(Collectors.toList());
302
                    .collect(Collectors.toList());
-
 
303
            /*
-
 
304
             * Collections.sort(leads, (o1, o2) -> { if (o1.getScheduledTimestamp() != null
-
 
305
             * && o2.getScheduledTimestamp() != null) { return
-
 
306
             * o1.getScheduledTimestamp().isBefore(o2.getScheduledTimestamp()) ? -1 : 1; }
-
 
307
             * else if (o1.getScheduledTimestamp() != null) { return 1; } else { return -1;
-
 
308
             * } });
-
 
309
             */
-
 
310
 
298
        } else {
311
        } else {
299
            leads = leadRepository.selectByAssignAuthIdAndStatus(authUser.getId(), status);
312
            leads = leadRepository.selectByAssignAuthIdAndStatus(authUser.getId(), status);
-
 
313
 
300
        }
314
        }
301
 
315
 
302
        return responseSender.ok(leads);
316
        return responseSender.ok(leads);
-
 
317
 
303
    }
318
    }
304
 
319
 
305
    @RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
320
    @RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
306
    @ApiImplicitParams({@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
321
    @ApiImplicitParams({@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header")})
307
    public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id) throws
322
    public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id) throws