| 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")
|