Subversion Repositories SmartDukaan

Rev

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

Rev 35395 Rev 35569
Line 434... Line 434...
434
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
434
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
435
        List<Ticket> tickets = null;
435
        List<Ticket> tickets = null;
436
        List<TicketAssigned> ticketAssigneds = null;
436
        List<TicketAssigned> ticketAssigneds = null;
437
        long size = 0;
437
        long size = 0;
438
        Map<Integer, AuthUser> authUserIdAndAuthUserMap = null;
438
        Map<Integer, AuthUser> authUserIdAndAuthUserMap = null;
439
        if (roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
439
        boolean isAdmin = roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()));
440
            AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
440
        AuthUser currentAuthUser = isAdmin ? authRepository.selectByEmailOrMobile(loginDetails.getEmailId()) : null;
-
 
441
 
-
 
442
        if (isAdmin) {
-
 
443
            int authUserId = currentAuthUser.getId();
441
            if (ticketSearchType == null) {
444
            if (ticketSearchType == null) {
442
                if (ticketStatus.equals(TicketStatus.RESOLVED)) {
445
                if (ticketStatus.equals(TicketStatus.RESOLVED)) {
443
                    tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.empty(), sortOrder, null, searchTerm);
446
                    tickets = ticketRepository.selectAllByAssignee(authUserId, Optional.empty(), sortOrder, null, searchTerm);
444
                    size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.empty(), null, searchTerm);
447
                    size = ticketRepository.selectAllCountByAssignee(authUserId, Optional.empty(), null, searchTerm);
445
                } else {
448
                } else {
446
                    tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, null, searchTerm);
449
                    tickets = ticketRepository.selectAllByAssignee(authUserId, Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, null, searchTerm);
447
                    size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), null, searchTerm);
450
                    size = ticketRepository.selectAllCountByAssignee(authUserId, Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), null, searchTerm);
448
                }
451
                }
449
 
452
 
450
            } else {
453
            } else {
451
 
454
 
452
                if (ticketStatus.equals(TicketStatus.RESOLVED)) {
455
                if (ticketStatus.equals(TicketStatus.RESOLVED)) {
453
                    tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.empty(), sortOrder, ticketSearchType, searchTerm);
456
                    tickets = ticketRepository.selectAllByAssignee(authUserId, Optional.empty(), sortOrder, ticketSearchType, searchTerm);
454
                    size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.empty(), ticketSearchType, searchTerm);
457
                    size = ticketRepository.selectAllCountByAssignee(authUserId, Optional.empty(), ticketSearchType, searchTerm);
455
                } else {
458
                } else {
456
                    tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, ticketSearchType, searchTerm);
459
                    tickets = ticketRepository.selectAllByAssignee(authUserId, Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, ticketSearchType, searchTerm);
457
                    size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), ticketSearchType, searchTerm);
460
                    size = ticketRepository.selectAllCountByAssignee(authUserId, Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), ticketSearchType, searchTerm);
458
                }
461
                }
459
            }
462
            }
460
            // LOGGER.info(size + "size");
463
            // LOGGER.info(size + "size");
461
            if (tickets.size() > 0) {
464
            if (tickets.size() > 0) {
462
                ticketAssigneds = ticketAssignedRepository.selectByTicketIds(tickets.stream().map(x -> x.getId()).collect(Collectors.toList()));
465
                ticketAssigneds = ticketAssignedRepository.selectByTicketIds(tickets.stream().map(x -> x.getId()).collect(Collectors.toList()));
Line 470... Line 473...
470
            size = ticketRepository.selectAllCountByCreator(loginDetails.getFofoId(), Optional.of(TicketStatus.OPENED.equals(ticketStatus)));
473
            size = ticketRepository.selectAllCountByCreator(loginDetails.getFofoId(), Optional.of(TicketStatus.OPENED.equals(ticketStatus)));
471
        }
474
        }
472
        authUserIdAndAuthUserMap = csService.getTicketIdAndAuthUserMapUsingTickets(tickets);
475
        authUserIdAndAuthUserMap = csService.getTicketIdAndAuthUserMapUsingTickets(tickets);
473
 
476
 
474
        model.addAttribute("size", size);
477
        model.addAttribute("size", size);
475
        model.addAttribute("roleType", roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds())));
478
        model.addAttribute("roleType", isAdmin);
-
 
479
        // Check if user is in CRM category (only CRM can send external communications)
-
 
480
        boolean isCrmUser = isAdmin && positionRepository.hasCategory(currentAuthUser.getId(), ProfitMandiConstants.TICKET_CATEGORY_CRM);
-
 
481
        model.addAttribute("isCrmUser", isCrmUser);
476
 
482
 
477
        List<Integer> subCategoryIds = tickets.stream().map(x -> x.getSubCategoryId()).collect(Collectors.toList());
483
        List<Integer> subCategoryIds = tickets.stream().map(x -> x.getSubCategoryId()).collect(Collectors.toList());
478
        Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService.getSubCategoryIdAndSubCategoryMap(subCategoryIds);
484
        Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService.getSubCategoryIdAndSubCategoryMap(subCategoryIds);
479
 
485
 
480
        Map<Integer, TicketCategory> subCategoryIdAndCategoryMap = csService.getSubCategoryIdAndCategoryMap(subCategoryIds);
486
        Map<Integer, TicketCategory> subCategoryIdAndCategoryMap = csService.getSubCategoryIdAndCategoryMap(subCategoryIds);
481
 
487
 
482
        List<Integer> ticketIds = tickets.stream().map(x -> x.getId()).collect(Collectors.toList());
488
        List<Integer> ticketIds = tickets.stream().map(x -> x.getId()).collect(Collectors.toList());
483
 
489
 
484
        Map<Integer, List<Activity>> activityMap = new HashMap<Integer, List<Activity>>();
490
        Map<Integer, List<Activity>> activityMap = new HashMap<>();
485
        Map<Integer, List<Activity>> activityMapWithActivityId = new HashMap<>();
491
        Map<Integer, List<Activity>> activityMapWithActivityId = new HashMap<>();
-
 
492
        Map<Integer, AuthUser> authUserMap = new HashMap<>();
486
 
493
 
487
        if (!ticketIds.isEmpty()) {
494
        if (!ticketIds.isEmpty()) {
-
 
495
            // Fetch activities once and group by both ticketId and activityId
-
 
496
            List<Activity> allActivities = activityRepository.selectAll(ticketIds);
488
            activityMap = activityRepository.selectAll(ticketIds).stream().collect(Collectors.groupingBy(x -> x.getTicketId()));
497
            activityMap = allActivities.stream().collect(Collectors.groupingBy(Activity::getTicketId));
489
            activityMapWithActivityId = activityRepository.selectAll(ticketIds).stream().collect(Collectors.groupingBy(x -> x.getId()));
498
            activityMapWithActivityId = allActivities.stream().collect(Collectors.groupingBy(Activity::getId));
490
 
499
 
-
 
500
            // Only fetch AuthUsers who created activities (instead of all users)
-
 
501
            Set<Integer> activityCreatorIds = allActivities.stream()
-
 
502
                    .map(Activity::getCreatedBy)
-
 
503
                    .filter(id -> id > 0)
-
 
504
                    .collect(Collectors.toSet());
-
 
505
            if (!activityCreatorIds.isEmpty()) {
-
 
506
                authUserMap = authRepository.selectByIds(new ArrayList<>(activityCreatorIds))
-
 
507
                        .stream().collect(Collectors.toMap(AuthUser::getId, x -> x));
-
 
508
            }
491
        }
509
        }
492
 
510
 
493
        List<AuthUser> authUsersList = authRepository.selectAll();
-
 
494
        Map<Integer, AuthUser> authUserMap = authUsersList.stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
-
 
495
 
-
 
496
        model.addAttribute("tickets", tickets);
511
        model.addAttribute("tickets", tickets);
497
        model.addAttribute("resolved", ActivityType.RESOLVED);
512
        model.addAttribute("resolved", ActivityType.RESOLVED);
498
        model.addAttribute("resolved-accepted", ActivityType.RESOLVED_ACCEPTED);
513
        model.addAttribute("resolved-accepted", ActivityType.RESOLVED_ACCEPTED);
499
        model.addAttribute("resolved-rejected", ActivityType.RESOLVED_REJECTED);
514
        model.addAttribute("resolved-rejected", ActivityType.RESOLVED_REJECTED);
500
        model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
515
        model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
Line 576... Line 591...
576
                AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
591
                AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
577
                activity.setCreatedBy(authUser.getId());
592
                activity.setCreatedBy(authUser.getId());
578
                authUsersMap.remove(authUser.getId());
593
                authUsersMap.remove(authUser.getId());
579
                subject = String.format("Ticket Update #%s by %s", ticket.getId(), authUser.getName());
594
                subject = String.format("Ticket Update #%s by %s", ticket.getId(), authUser.getName());
580
                mailMessage = String.format("%s's message - %s", authUser.getFirstName(), message);
595
                mailMessage = String.format("%s's message - %s", authUser.getFirstName(), message);
-
 
596
                // Only CRM users can send external communications
-
 
597
                boolean isCrmUser = positionRepository.hasCategory(authUser.getId(), ProfitMandiConstants.TICKET_CATEGORY_CRM);
581
                if (internal) {
598
                if (internal || !isCrmUser) {
582
                    activity.setType(ActivityType.COMMUNICATION_INTERNAL);
599
                    activity.setType(ActivityType.COMMUNICATION_INTERNAL);
583
                    // String subject = String.format(ACTIVITY_SUBJECT, ticket.getId());
-
 
584
                } else {
600
                } else {
585
                    String updatedBy = "SD Team";
601
                    String updatedBy = "SD Team";
586
                    CustomRetailer customRetailer = retailerService.getFofoRetailers(false).get(ticket.getFofoId());
602
                    CustomRetailer customRetailer = retailerService.getFofoRetailers(false).get(ticket.getFofoId());
587
                    subject = String.format("Ticket Update #%s by %s", ticket.getId(), updatedBy);
603
                    subject = String.format("Ticket Update #%s by %s", ticket.getId(), updatedBy);
588
                    String partnerMessage = String.format("%s's message - %s", updatedBy, message);
604
                    String partnerMessage = String.format("%s's message - %s", updatedBy, message);
Line 677... Line 693...
677
        Map<Integer, TicketCategory> subCategoryIdAndCategoryMap = csService.getSubCategoryIdAndCategoryMap(subCategoryIds);
693
        Map<Integer, TicketCategory> subCategoryIdAndCategoryMap = csService.getSubCategoryIdAndCategoryMap(subCategoryIds);
678
 
694
 
679
        List<Integer> ticketIds = tickets.stream().map(x -> x.getId()).collect(Collectors.toList());
695
        List<Integer> ticketIds = tickets.stream().map(x -> x.getId()).collect(Collectors.toList());
680
        Map<Integer, List<Activity>> activityMap = new HashMap<>();
696
        Map<Integer, List<Activity>> activityMap = new HashMap<>();
681
        Map<Integer, List<Activity>> activityMapWithActivityId = new HashMap<>();
697
        Map<Integer, List<Activity>> activityMapWithActivityId = new HashMap<>();
-
 
698
        Map<Integer, AuthUser> authUserMap = new HashMap<>();
682
 
699
 
683
        if (!ticketIds.isEmpty()) {
700
        if (!ticketIds.isEmpty()) {
-
 
701
            // Fetch activities once and group by both ticketId and activityId
-
 
702
            List<Activity> allActivities = activityRepository.selectAll(ticketIds);
684
            activityMap = activityRepository.selectAll(ticketIds).stream().collect(Collectors.groupingBy(x -> x.getTicketId()));
703
            activityMap = allActivities.stream().collect(Collectors.groupingBy(Activity::getTicketId));
685
            activityMapWithActivityId = activityRepository.selectAll(ticketIds).stream().collect(Collectors.groupingBy(x -> x.getId()));
704
            activityMapWithActivityId = allActivities.stream().collect(Collectors.groupingBy(Activity::getId));
686
 
705
 
-
 
706
            // Only fetch AuthUsers who created activities (instead of all users)
-
 
707
            Set<Integer> activityCreatorIds = allActivities.stream()
-
 
708
                    .map(Activity::getCreatedBy)
-
 
709
                    .filter(id -> id > 0)
-
 
710
                    .collect(Collectors.toSet());
-
 
711
            if (!activityCreatorIds.isEmpty()) {
-
 
712
                authUserMap = authRepository.selectByIds(new ArrayList<>(activityCreatorIds))
-
 
713
                        .stream().collect(Collectors.toMap(AuthUser::getId, x -> x));
-
 
714
            }
687
        }
715
        }
688
 
716
 
689
        List<AuthUser> authUsersList = authRepository.selectAll();
-
 
690
        Map<Integer, AuthUser> authUserMap = authUsersList.stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
-
 
691
 
-
 
692
        model.addAttribute("ticketStatusValues", TicketStatus.values());
717
        model.addAttribute("ticketStatusValues", TicketStatus.values());
693
        model.addAttribute("orderByValues", SortOrder.values());
718
        model.addAttribute("orderByValues", SortOrder.values());
694
        model.addAttribute("selectedticketStatus", ticketStatus);
719
        model.addAttribute("selectedticketStatus", ticketStatus);
695
        model.addAttribute("selectedorderby", sortOrder);
720
        model.addAttribute("selectedorderby", sortOrder);
696
        model.addAttribute("tickets", tickets);
721
        model.addAttribute("tickets", tickets);
Line 703... Line 728...
703
        model.addAttribute("subCategoryIdAndCategoryMap", subCategoryIdAndCategoryMap);
728
        model.addAttribute("subCategoryIdAndCategoryMap", subCategoryIdAndCategoryMap);
704
 
729
 
705
        model.addAttribute("activityMap", activityMap);
730
        model.addAttribute("activityMap", activityMap);
706
        model.addAttribute("authUserMap", authUserMap);
731
        model.addAttribute("authUserMap", authUserMap);
707
        model.addAttribute("activityMapWithActivityId", activityMapWithActivityId);
732
        model.addAttribute("activityMapWithActivityId", activityMapWithActivityId);
-
 
733
        // Check if user is in CRM category (only CRM can send external communications)
-
 
734
        boolean isCrmUser = positionRepository.hasCategory(authUser.getId(), ProfitMandiConstants.TICKET_CATEGORY_CRM);
-
 
735
        model.addAttribute("isCrmUser", isCrmUser);
708
 
736
 
709
        return "my-partner-tickets";
737
        return "my-partner-tickets";
710
    }
738
    }
711
 
739
 
712
    @GetMapping(value = "/cs/managerTicket")
740
    @GetMapping(value = "/cs/managerTicket")