| Line 29... |
Line 29... |
| 29 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
29 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
| 30 |
import com.spice.profitmandi.common.model.CustomRetailer;
|
30 |
import com.spice.profitmandi.common.model.CustomRetailer;
|
| 31 |
import com.spice.profitmandi.common.util.Utils;
|
31 |
import com.spice.profitmandi.common.util.Utils;
|
| 32 |
import com.spice.profitmandi.dao.entity.auth.AuthUser;
|
32 |
import com.spice.profitmandi.dao.entity.auth.AuthUser;
|
| 33 |
import com.spice.profitmandi.dao.entity.cs.Activity;
|
33 |
import com.spice.profitmandi.dao.entity.cs.Activity;
|
| - |
|
34 |
import com.spice.profitmandi.dao.entity.cs.ActivityAttachment;
|
| 34 |
import com.spice.profitmandi.dao.entity.cs.PartnerPosition;
|
35 |
import com.spice.profitmandi.dao.entity.cs.PartnerPosition;
|
| 35 |
import com.spice.profitmandi.dao.entity.cs.Position;
|
36 |
import com.spice.profitmandi.dao.entity.cs.Position;
|
| 36 |
import com.spice.profitmandi.dao.entity.cs.Region;
|
37 |
import com.spice.profitmandi.dao.entity.cs.Region;
|
| 37 |
import com.spice.profitmandi.dao.entity.cs.Ticket;
|
38 |
import com.spice.profitmandi.dao.entity.cs.Ticket;
|
| 38 |
import com.spice.profitmandi.dao.entity.cs.TicketAssigned;
|
39 |
import com.spice.profitmandi.dao.entity.cs.TicketAssigned;
|
| 39 |
import com.spice.profitmandi.dao.entity.cs.TicketCategory;
|
40 |
import com.spice.profitmandi.dao.entity.cs.TicketCategory;
|
| 40 |
import com.spice.profitmandi.dao.entity.cs.TicketSearchType;
|
41 |
import com.spice.profitmandi.dao.entity.cs.TicketSearchType;
|
| 41 |
import com.spice.profitmandi.dao.entity.cs.TicketSubCategory;
|
42 |
import com.spice.profitmandi.dao.entity.cs.TicketSubCategory;
|
| - |
|
43 |
import com.spice.profitmandi.dao.entity.dtr.Document;
|
| 42 |
import com.spice.profitmandi.dao.entity.fofo.ActivityType;
|
44 |
import com.spice.profitmandi.dao.entity.fofo.ActivityType;
|
| 43 |
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
|
45 |
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
|
| 44 |
import com.spice.profitmandi.dao.enumuration.cs.TicketStatus;
|
46 |
import com.spice.profitmandi.dao.enumuration.cs.TicketStatus;
|
| 45 |
import com.spice.profitmandi.dao.model.CreatePositionModel;
|
47 |
import com.spice.profitmandi.dao.model.CreatePositionModel;
|
| 46 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
48 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
| - |
|
49 |
import com.spice.profitmandi.dao.repository.catalog.DeviceRepository;
|
| - |
|
50 |
import com.spice.profitmandi.dao.repository.cs.ActivityAttachmentRepository;
|
| 47 |
import com.spice.profitmandi.dao.repository.cs.ActivityRepository;
|
51 |
import com.spice.profitmandi.dao.repository.cs.ActivityRepository;
|
| 48 |
import com.spice.profitmandi.dao.repository.cs.CsService;
|
52 |
import com.spice.profitmandi.dao.repository.cs.CsService;
|
| 49 |
import com.spice.profitmandi.dao.repository.cs.PartnerRegionRepository;
|
53 |
import com.spice.profitmandi.dao.repository.cs.PartnerRegionRepository;
|
| 50 |
import com.spice.profitmandi.dao.repository.cs.PartnersPositionRepository;
|
54 |
import com.spice.profitmandi.dao.repository.cs.PartnersPositionRepository;
|
| 51 |
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
|
55 |
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
|
| 52 |
import com.spice.profitmandi.dao.repository.cs.RegionRepository;
|
56 |
import com.spice.profitmandi.dao.repository.cs.RegionRepository;
|
| 53 |
import com.spice.profitmandi.dao.repository.cs.TicketAssignedRepository;
|
57 |
import com.spice.profitmandi.dao.repository.cs.TicketAssignedRepository;
|
| 54 |
import com.spice.profitmandi.dao.repository.cs.TicketCategoryRepository;
|
58 |
import com.spice.profitmandi.dao.repository.cs.TicketCategoryRepository;
|
| 55 |
import com.spice.profitmandi.dao.repository.cs.TicketRepository;
|
59 |
import com.spice.profitmandi.dao.repository.cs.TicketRepository;
|
| 56 |
import com.spice.profitmandi.dao.repository.cs.TicketSubCategoryRepository;
|
60 |
import com.spice.profitmandi.dao.repository.cs.TicketSubCategoryRepository;
|
| - |
|
61 |
import com.spice.profitmandi.dao.repository.dtr.DocumentRepository;
|
| 57 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
62 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
| 58 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
63 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
| 59 |
import com.spice.profitmandi.service.slab.TargetSlabService;
|
64 |
import com.spice.profitmandi.service.slab.TargetSlabService;
|
| 60 |
import com.spice.profitmandi.service.user.RetailerService;
|
65 |
import com.spice.profitmandi.service.user.RetailerService;
|
| 61 |
import com.spice.profitmandi.web.model.LoginDetails;
|
66 |
import com.spice.profitmandi.web.model.LoginDetails;
|
| Line 115... |
Line 120... |
| 115 |
|
120 |
|
| 116 |
@Autowired
|
121 |
@Autowired
|
| 117 |
private ActivityRepository activityRepository;
|
122 |
private ActivityRepository activityRepository;
|
| 118 |
|
123 |
|
| 119 |
@Autowired
|
124 |
@Autowired
|
| - |
|
125 |
private ActivityAttachmentRepository activityAttachmentRepository;
|
| - |
|
126 |
|
| - |
|
127 |
@Autowired
|
| 120 |
private TicketAssignedRepository ticketAssignedRepository;
|
128 |
private TicketAssignedRepository ticketAssignedRepository;
|
| 121 |
|
129 |
|
| 122 |
@Autowired
|
130 |
@Autowired
|
| 123 |
private PartnerRegionRepository partnerRegionRepository;
|
131 |
private PartnerRegionRepository partnerRegionRepository;
|
| 124 |
|
132 |
|
| Line 126... |
Line 134... |
| 126 |
PartnersPositionRepository partnersPositionRepository;
|
134 |
PartnersPositionRepository partnersPositionRepository;
|
| 127 |
|
135 |
|
| 128 |
@Autowired
|
136 |
@Autowired
|
| 129 |
FofoStoreRepository fofoStoreRepository;
|
137 |
FofoStoreRepository fofoStoreRepository;
|
| 130 |
|
138 |
|
| - |
|
139 |
@Autowired
|
| - |
|
140 |
DocumentRepository documentRepository;
|
| - |
|
141 |
|
| 131 |
@GetMapping(value = "/cs/createCategory")
|
142 |
@GetMapping(value = "/cs/createCategory")
|
| 132 |
public String getCreateCategory(HttpServletRequest request, Model model) {
|
143 |
public String getCreateCategory(HttpServletRequest request, Model model) {
|
| 133 |
List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
|
144 |
List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
|
| 134 |
model.addAttribute("ticketCategories", ticketCategories);
|
145 |
model.addAttribute("ticketCategories", ticketCategories);
|
| 135 |
return "create-ticket-category";
|
146 |
return "create-ticket-category";
|
| Line 565... |
Line 576... |
| 565 |
|
576 |
|
| 566 |
@GetMapping(value = "/cs/getActivities")
|
577 |
@GetMapping(value = "/cs/getActivities")
|
| 567 |
public String getActivity(HttpServletRequest request,
|
578 |
public String getActivity(HttpServletRequest request,
|
| 568 |
@RequestParam(name = "ticketId", defaultValue = "0") int ticketId, Model model) throws Exception {
|
579 |
@RequestParam(name = "ticketId", defaultValue = "0") int ticketId, Model model) throws Exception {
|
| 569 |
List<Activity> allactivities = activityRepository.selectAll(ticketId);
|
580 |
List<Activity> allactivities = activityRepository.selectAll(ticketId);
|
| - |
|
581 |
List<List<ActivityAttachment>> activityAttachments = allactivities.stream().map(x -> x.getActivityAttachment())
|
| - |
|
582 |
.collect(Collectors.toList());
|
| - |
|
583 |
for (List<ActivityAttachment> aA : activityAttachments) {
|
| - |
|
584 |
// List<ActivityAttachment> documentId = aA.stream().map(x ->
|
| - |
|
585 |
// x).collect(Collectors.toList());
|
| - |
|
586 |
for (ActivityAttachment attachment : aA) {
|
| - |
|
587 |
Document document = documentRepository.selectById(attachment.getDocumentId());
|
| - |
|
588 |
attachment.setDocumentName(document.getDisplayName());
|
| - |
|
589 |
activityAttachmentRepository.persist(attachment);
|
| - |
|
590 |
}
|
| - |
|
591 |
}
|
| 570 |
List<Activity> activities = null;
|
592 |
List<Activity> activities = null;
|
| 571 |
LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
|
593 |
LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
|
| 572 |
if (roleManager.isAdmin(loginDetails.getRoleIds())) {
|
594 |
if (roleManager.isAdmin(loginDetails.getRoleIds())) {
|
| 573 |
Set<Integer> authUserIds = allactivities.stream().map(x -> x.getCreatedBy()).collect(Collectors.toSet());
|
595 |
Set<Integer> authUserIds = allactivities.stream().map(x -> x.getCreatedBy()).collect(Collectors.toSet());
|
| 574 |
List<AuthUser> users = authRepository.selectAllAuthUserByIds(new ArrayList<>(authUserIds));
|
596 |
List<AuthUser> users = authRepository.selectAllAuthUserByIds(new ArrayList<>(authUserIds));
|
| Line 591... |
Line 613... |
| 591 |
@PostMapping(value = "/cs/createActivity")
|
613 |
@PostMapping(value = "/cs/createActivity")
|
| 592 |
public String createActivity(HttpServletRequest request,
|
614 |
public String createActivity(HttpServletRequest request,
|
| 593 |
@RequestParam(name = "ticketId", defaultValue = "0") int ticketId,
|
615 |
@RequestParam(name = "ticketId", defaultValue = "0") int ticketId,
|
| 594 |
@RequestParam(name = "assigneeId", defaultValue = "0") int assigneeId,
|
616 |
@RequestParam(name = "assigneeId", defaultValue = "0") int assigneeId,
|
| 595 |
@RequestParam(name = "internal", defaultValue = "true") boolean internal,
|
617 |
@RequestParam(name = "internal", defaultValue = "true") boolean internal,
|
| 596 |
@RequestParam(name = "message", defaultValue = "") String message, Model model) throws Exception {
|
618 |
@RequestParam(name = "message", defaultValue = "") String message, @RequestBody List<Integer> documentIds,
|
| - |
|
619 |
|
| - |
|
620 |
Model model) throws Exception {
|
| - |
|
621 |
|
| - |
|
622 |
LOGGER.info("documentIds" + documentIds);
|
| 597 |
LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
|
623 |
LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
|
| 598 |
Ticket ticket = ticketRepository.selectById(ticketId);
|
624 |
Ticket ticket = ticketRepository.selectById(ticketId);
|
| 599 |
List<TicketAssigned> ticketAssignedList = ticketAssignedRepository.selectByTicketIds(Arrays.asList(ticketId));
|
625 |
List<TicketAssigned> ticketAssignedList = ticketAssignedRepository.selectByTicketIds(Arrays.asList(ticketId));
|
| 600 |
List<Integer>authUserIds = ticketAssignedList.stream().map(x->x.getAssineeId()).collect(Collectors.toList());
|
626 |
List<Integer> authUserIds = ticketAssignedList.stream().map(x -> x.getAssineeId()).collect(Collectors.toList());
|
| 601 |
authUserIds.add(ticketAssignedList.get(ticketAssignedList.size()-1).getManagerId());
|
627 |
authUserIds.add(ticketAssignedList.get(ticketAssignedList.size() - 1).getManagerId());
|
| 602 |
Map<Integer, AuthUser> authUsersMap = authRepository.selectAllAuthUserByIds(authUserIds).stream().collect(Collectors.toMap(x->x.getId(), x->x));
|
628 |
Map<Integer, AuthUser> authUsersMap = authRepository.selectAllAuthUserByIds(authUserIds).stream()
|
| - |
|
629 |
.collect(Collectors.toMap(x -> x.getId(), x -> x));
|
| 603 |
if (ticket.getCloseTimestamp() == null) {
|
630 |
if (ticket.getCloseTimestamp() == null) {
|
| 604 |
Activity activity = new Activity();
|
631 |
Activity activity = new Activity();
|
| 605 |
activity.setCreatedBy(0);
|
632 |
activity.setCreatedBy(0);
|
| 606 |
activity.setCreateTimestamp(LocalDateTime.now());
|
633 |
activity.setCreateTimestamp(LocalDateTime.now());
|
| 607 |
String subject = null;
|
634 |
String subject = null;
|
| 608 |
String mailMessage=null;
|
635 |
String mailMessage = null;
|
| 609 |
activity.setMessage(message);
|
636 |
activity.setMessage(message);
|
| 610 |
if (!roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
|
637 |
if (!roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
|
| 611 |
CustomRetailer customRetailer = retailerService.getFofoRetailers(true).get(loginDetails.getFofoId());
|
638 |
CustomRetailer customRetailer = retailerService.getFofoRetailers(true).get(loginDetails.getFofoId());
|
| 612 |
activity.setType(ActivityType.COMMUNICATION_IN);
|
639 |
activity.setType(ActivityType.COMMUNICATION_IN);
|
| 613 |
subject = String.format("Ticket Update #%s by franchisee %s", ticket.getId(), customRetailer.getBusinessName() + "("+customRetailer.getCode()+")");
|
640 |
subject = String.format("Ticket Update #%s by franchisee %s", ticket.getId(),
|
| - |
|
641 |
customRetailer.getBusinessName() + "(" + customRetailer.getCode() + ")");
|
| 614 |
mailMessage = String.format("Franchisee message - %s", message);
|
642 |
mailMessage = String.format("Franchisee message - %s", message);
|
| 615 |
} else {
|
643 |
} else {
|
| 616 |
AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
|
644 |
AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
|
| 617 |
activity.setCreatedBy(authUser.getId());
|
645 |
activity.setCreatedBy(authUser.getId());
|
| 618 |
authUsersMap.remove(authUser.getId());
|
646 |
authUsersMap.remove(authUser.getId());
|
| Line 629... |
Line 657... |
| 629 |
this.activityRelatedMail(customRetailer.getEmail(), null, "subject", partnerMessage);
|
657 |
this.activityRelatedMail(customRetailer.getEmail(), null, "subject", partnerMessage);
|
| 630 |
activity.setType(ActivityType.COMMUNICATION_OUT);
|
658 |
activity.setType(ActivityType.COMMUNICATION_OUT);
|
| 631 |
}
|
659 |
}
|
| 632 |
}
|
660 |
}
|
| 633 |
activityRepository.persist(activity);
|
661 |
activityRepository.persist(activity);
|
| - |
|
662 |
|
| - |
|
663 |
for (Integer documentId : documentIds) {
|
| - |
|
664 |
ActivityAttachment activityAttachment = new ActivityAttachment();
|
| - |
|
665 |
activityAttachment.setActivityId(activity.getId());
|
| - |
|
666 |
activityAttachment.setDocumentId(documentId);
|
| - |
|
667 |
activityAttachmentRepository.persist(activityAttachment);
|
| - |
|
668 |
}
|
| - |
|
669 |
|
| 634 |
csService.addActivity(ticket, activity);
|
670 |
csService.addActivity(ticket, activity);
|
| 635 |
AuthUser authUser = authUsersMap.remove(authUserIds.get(0));
|
671 |
AuthUser authUser = authUsersMap.remove(authUserIds.get(0));
|
| 636 |
if(authUser==null) {
|
672 |
if (authUser == null) {
|
| 637 |
authUser = authUsersMap.remove(authUserIds.get(1));
|
673 |
authUser = authUsersMap.remove(authUserIds.get(1));
|
| 638 |
}
|
674 |
}
|
| 639 |
model.addAttribute("response", mvcResponseSender.createResponseString(authUser));
|
675 |
model.addAttribute("response", mvcResponseSender.createResponseString(authUser));
|
| 640 |
String [] cc = authUsersMap.entrySet().stream().map(x->x.getValue().getEmailId()).toArray(String[]::new);
|
676 |
String[] cc = authUsersMap.entrySet().stream().map(x -> x.getValue().getEmailId()).toArray(String[]::new);
|
| 641 |
this.activityRelatedMail(authUser.getEmailId(), cc, subject, mailMessage);
|
677 |
this.activityRelatedMail(authUser.getEmailId(), cc, subject, mailMessage);
|
| 642 |
} else {
|
678 |
} else {
|
| 643 |
throw new ProfitMandiBusinessException("Ticket", ticket.getId(), "Already closed ticket");
|
679 |
throw new ProfitMandiBusinessException("Ticket", ticket.getId(), "Already closed ticket");
|
| 644 |
}
|
680 |
}
|
| 645 |
return "response";
|
681 |
return "response";
|
| Line 866... |
Line 902... |
| 866 |
activity.setCreateTimestamp(LocalDateTime.now());
|
902 |
activity.setCreateTimestamp(LocalDateTime.now());
|
| 867 |
} else {
|
903 |
} else {
|
| 868 |
String message = String.format(INTERNAL_REOPEN_MAIL, ticketId,
|
904 |
String message = String.format(INTERNAL_REOPEN_MAIL, ticketId,
|
| 869 |
retailerService.getFofoRetailer(loginDetails.getFofoId()).getBusinessName());
|
905 |
retailerService.getFofoRetailer(loginDetails.getFofoId()).getBusinessName());
|
| 870 |
String to = authRepository.selectById(ticket.getL1AuthUser()).getEmailId();
|
906 |
String to = authRepository.selectById(ticket.getL1AuthUser()).getEmailId();
|
| 871 |
String[] ccTo = authRepository.selectAllAuthUserByIds(
|
907 |
String[] ccTo = authRepository
|
| 872 |
Arrays.asList(ticket.getL2AuthUser(), ticket.getL3AuthUser(), ticket.getL4AuthUser(), ticket.getL5AuthUser()))
|
908 |
.selectAllAuthUserByIds(Arrays.asList(ticket.getL2AuthUser(), ticket.getL3AuthUser(),
|
| - |
|
909 |
ticket.getL4AuthUser(), ticket.getL5AuthUser()))
|
| 873 |
.stream().map(x->x.getEmailId()).toArray(String[]::new);
|
910 |
.stream().map(x -> x.getEmailId()).toArray(String[]::new);
|
| 874 |
ticket.setLastActivity(lastActivity);
|
911 |
ticket.setLastActivity(lastActivity);
|
| 875 |
ticket.setUpdateTimestamp(LocalDateTime.now());
|
912 |
ticket.setUpdateTimestamp(LocalDateTime.now());
|
| 876 |
ticketAssignedRepository.deleteByTicketId(ticketId);
|
913 |
ticketAssignedRepository.deleteByTicketId(ticketId);
|
| 877 |
TicketAssigned ticketAssigned = new TicketAssigned();
|
914 |
TicketAssigned ticketAssigned = new TicketAssigned();
|
| 878 |
ticketAssigned.setAssineeId(ticket.getL1AuthUser());
|
915 |
ticketAssigned.setAssineeId(ticket.getL1AuthUser());
|