Subversion Repositories SmartDukaan

Rev

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

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