| Line 1... |
Line 1... |
| 1 |
package com.spice.profitmandi.web.controller;
|
1 |
package com.spice.profitmandi.web.controller;
|
| 2 |
|
2 |
|
| 3 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
3 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
| 4 |
import com.spice.profitmandi.common.model.CustomRetailer;
|
4 |
import com.spice.profitmandi.common.model.CustomRetailer;
|
| 5 |
import com.spice.profitmandi.common.model.ProfitMandiConstants;
|
5 |
import com.spice.profitmandi.common.model.ProfitMandiConstants;
|
| 6 |
import com.spice.profitmandi.common.util.Utils;
|
- |
|
| 7 |
import com.spice.profitmandi.dao.entity.auth.AuthUser;
|
6 |
import com.spice.profitmandi.dao.entity.auth.AuthUser;
|
| 8 |
import com.spice.profitmandi.service.mail.MailOutboxService;
|
- |
|
| 9 |
import com.spice.profitmandi.dao.entity.cs.*;
|
7 |
import com.spice.profitmandi.dao.entity.cs.*;
|
| 10 |
import com.spice.profitmandi.dao.entity.cs.Position;
|
- |
|
| 11 |
import com.spice.profitmandi.dao.entity.dtr.Document;
|
- |
|
| 12 |
import com.spice.profitmandi.dao.entity.cs.TicketReadStatus.UserType;
|
8 |
import com.spice.profitmandi.dao.entity.cs.TicketReadStatus.UserType;
|
| - |
|
9 |
import com.spice.profitmandi.dao.entity.dtr.Document;
|
| 13 |
import com.spice.profitmandi.dao.entity.fofo.ActivityType;
|
10 |
import com.spice.profitmandi.dao.entity.fofo.ActivityType;
|
| 14 |
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
|
11 |
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
|
| 15 |
import com.spice.profitmandi.dao.enumuration.cs.TicketStatus;
|
12 |
import com.spice.profitmandi.dao.enumuration.cs.TicketStatus;
|
| 16 |
import com.spice.profitmandi.dao.model.CreatePositionModel;
|
13 |
import com.spice.profitmandi.dao.model.CreatePositionModel;
|
| 17 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
14 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
| 18 |
import com.spice.profitmandi.dao.repository.cs.*;
|
15 |
import com.spice.profitmandi.dao.repository.cs.*;
|
| 19 |
import com.spice.profitmandi.dao.repository.dtr.DocumentRepository;
|
16 |
import com.spice.profitmandi.dao.repository.dtr.DocumentRepository;
|
| 20 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
17 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
| 21 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
18 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
| - |
|
19 |
import com.spice.profitmandi.service.mail.MailOutboxService;
|
| 22 |
import com.spice.profitmandi.service.user.RetailerService;
|
20 |
import com.spice.profitmandi.service.user.RetailerService;
|
| 23 |
import com.spice.profitmandi.web.model.LoginDetails;
|
21 |
import com.spice.profitmandi.web.model.LoginDetails;
|
| 24 |
import com.spice.profitmandi.web.util.CookiesProcessor;
|
22 |
import com.spice.profitmandi.web.util.CookiesProcessor;
|
| 25 |
import com.spice.profitmandi.web.util.MVCResponseSender;
|
23 |
import com.spice.profitmandi.web.util.MVCResponseSender;
|
| 26 |
import org.apache.logging.log4j.LogManager;
|
24 |
import org.apache.logging.log4j.LogManager;
|
| Line 31... |
Line 29... |
| 31 |
import org.springframework.transaction.annotation.Transactional;
|
29 |
import org.springframework.transaction.annotation.Transactional;
|
| 32 |
import org.springframework.ui.Model;
|
30 |
import org.springframework.ui.Model;
|
| 33 |
import org.springframework.web.bind.annotation.*;
|
31 |
import org.springframework.web.bind.annotation.*;
|
| 34 |
|
32 |
|
| 35 |
import javax.servlet.http.HttpServletRequest;
|
33 |
import javax.servlet.http.HttpServletRequest;
|
| 36 |
import javax.swing.SortOrder;
|
34 |
import javax.swing.*;
|
| 37 |
import java.time.LocalDateTime;
|
35 |
import java.time.LocalDateTime;
|
| 38 |
import java.util.*;
|
36 |
import java.util.*;
|
| 39 |
import java.util.stream.Collectors;
|
37 |
import java.util.stream.Collectors;
|
| 40 |
|
38 |
|
| 41 |
@Controller
|
39 |
@Controller
|
| Line 631... |
Line 629... |
| 631 |
authUserIdAndAuthUserMap = csService.getTicketIdAndAuthUserMapUsingTickets(tickets);
|
629 |
authUserIdAndAuthUserMap = csService.getTicketIdAndAuthUserMapUsingTickets(tickets);
|
| 632 |
if (authUserIdAndAuthUserMap == null) {
|
630 |
if (authUserIdAndAuthUserMap == null) {
|
| 633 |
authUserIdAndAuthUserMap = new HashMap<>();
|
631 |
authUserIdAndAuthUserMap = new HashMap<>();
|
| 634 |
}
|
632 |
}
|
| 635 |
|
633 |
|
| - |
|
634 |
Map<Integer, List<AuthUser>> authUserListMap = csService.getAssignedAuthList(tickets);
|
| - |
|
635 |
if (authUserListMap == null) {
|
| - |
|
636 |
authUserListMap = new HashMap<>();
|
| - |
|
637 |
}
|
| - |
|
638 |
|
| 636 |
int totalPages = (int) Math.ceil((double) totalRecords / pageSize);
|
639 |
int totalPages = (int) Math.ceil((double) totalRecords / pageSize);
|
| 637 |
if (totalPages == 0) totalPages = 1;
|
640 |
if (totalPages == 0) totalPages = 1;
|
| 638 |
int startRecord = totalRecords > 0 ? offset + 1 : 0;
|
641 |
int startRecord = totalRecords > 0 ? offset + 1 : 0;
|
| 639 |
int endRecord = (int) Math.min(offset + pageSize, totalRecords);
|
642 |
int endRecord = (int) Math.min(offset + pageSize, totalRecords);
|
| 640 |
|
643 |
|
| Line 710... |
Line 713... |
| 710 |
model.addAttribute("tickets", tickets);
|
713 |
model.addAttribute("tickets", tickets);
|
| 711 |
model.addAttribute("resolved", ActivityType.RESOLVED);
|
714 |
model.addAttribute("resolved", ActivityType.RESOLVED);
|
| 712 |
model.addAttribute("resolved-accepted", ActivityType.RESOLVED_ACCEPTED);
|
715 |
model.addAttribute("resolved-accepted", ActivityType.RESOLVED_ACCEPTED);
|
| 713 |
model.addAttribute("resolved-rejected", ActivityType.RESOLVED_REJECTED);
|
716 |
model.addAttribute("resolved-rejected", ActivityType.RESOLVED_REJECTED);
|
| 714 |
model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
|
717 |
model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
|
| - |
|
718 |
model.addAttribute("authUserListMap", authUserListMap);
|
| 715 |
model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
|
719 |
model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
|
| 716 |
|
720 |
|
| 717 |
model.addAttribute("subCategoryIdAndCategoryMap", subCategoryIdAndCategoryMap);
|
721 |
model.addAttribute("subCategoryIdAndCategoryMap", subCategoryIdAndCategoryMap);
|
| 718 |
model.addAttribute("activityMap", activityMap);
|
722 |
model.addAttribute("activityMap", activityMap);
|
| 719 |
model.addAttribute("authUserMap", authUserMap);
|
723 |
model.addAttribute("authUserMap", authUserMap);
|
| Line 791... |
Line 795... |
| 791 |
}
|
795 |
}
|
| 792 |
}
|
796 |
}
|
| 793 |
List<Activity> activities = null;
|
797 |
List<Activity> activities = null;
|
| 794 |
if (isAdmin) {
|
798 |
if (isAdmin) {
|
| 795 |
Set<Integer> authUserIds = allactivities.stream().map(x -> x.getCreatedBy()).collect(Collectors.toSet());
|
799 |
Set<Integer> authUserIds = allactivities.stream().map(x -> x.getCreatedBy()).collect(Collectors.toSet());
|
| - |
|
800 |
|
| - |
|
801 |
// Fetch current assignees for this ticket to show in ASSIGNED/ESCALATED activities
|
| - |
|
802 |
List<TicketAssigned> ticketAssignments = ticketAssignedRepository.selectByTicketIds(Arrays.asList(ticketId));
|
| - |
|
803 |
Set<Integer> assigneeIds = ticketAssignments.stream()
|
| - |
|
804 |
.map(TicketAssigned::getAssineeId)
|
| - |
|
805 |
.collect(Collectors.toSet());
|
| - |
|
806 |
authUserIds.addAll(assigneeIds);
|
| - |
|
807 |
|
| 796 |
List<AuthUser> users = authRepository.selectByIds(new ArrayList<>(authUserIds));
|
808 |
List<AuthUser> users = authRepository.selectByIds(new ArrayList<>(authUserIds));
|
| 797 |
Map<Integer, String> authUserNameMap = users.stream().collect(Collectors.toMap(AuthUser::getId, x -> x.getFirstName() + " " + x.getLastName()));
|
809 |
Map<Integer, String> authUserNameMap = users.stream().collect(Collectors.toMap(AuthUser::getId, x -> x.getFirstName() + " " + x.getLastName()));
|
| - |
|
810 |
|
| - |
|
811 |
// Get current assignee name (most recent assignment)
|
| - |
|
812 |
String currentAssigneeName = null;
|
| - |
|
813 |
if (!ticketAssignments.isEmpty()) {
|
| - |
|
814 |
int latestAssigneeId = ticketAssignments.get(ticketAssignments.size() - 1).getAssineeId();
|
| - |
|
815 |
currentAssigneeName = authUserNameMap.get(latestAssigneeId);
|
| - |
|
816 |
}
|
| - |
|
817 |
final String assigneeName = currentAssigneeName;
|
| - |
|
818 |
|
| - |
|
819 |
allactivities.stream().forEach(x -> {
|
| 798 |
allactivities.stream().forEach(x -> x.setName(authUserNameMap.get(x.getCreatedBy())));
|
820 |
x.setName(authUserNameMap.get(x.getCreatedBy()));
|
| - |
|
821 |
// For ASSIGNED/ESCALATED activities, use name field to show assignee
|
| - |
|
822 |
ActivityType actType = x.getType();
|
| - |
|
823 |
if (assigneeName != null && (actType == ActivityType.ASSIGNED || actType == ActivityType.ESCALATED || actType == ActivityType.ESCALATED_FINAL)) {
|
| - |
|
824 |
x.setName(assigneeName);
|
| - |
|
825 |
}
|
| - |
|
826 |
});
|
| 799 |
activities = allactivities;
|
827 |
activities = allactivities;
|
| 800 |
} else {
|
828 |
} else {
|
| 801 |
activities = allactivities.stream().filter(x -> ActivityType.PARTNER_ACTIVITIES.contains(x.getType())).collect(Collectors.toList());
|
829 |
activities = allactivities.stream().filter(x -> ActivityType.PARTNER_ACTIVITIES.contains(x.getType())).collect(Collectors.toList());
|
| 802 |
}
|
830 |
}
|
| 803 |
if (activities == null) {
|
831 |
if (activities == null) {
|