| Line 115... |
Line 115... |
| 115 |
|
115 |
|
| 116 |
@Override
|
116 |
@Override
|
| 117 |
public void assignTicket(Ticket ticket) throws ProfitMandiBusinessException {
|
117 |
public void assignTicket(Ticket ticket) throws ProfitMandiBusinessException {
|
| 118 |
TicketAssigned ticketAssigned = null;
|
118 |
TicketAssigned ticketAssigned = null;
|
| 119 |
EscalationType newEscalationType = EscalationType.L1;
|
119 |
EscalationType newEscalationType = EscalationType.L1;
|
| 120 |
if(ticket.getAssignmentId()>0) {
|
120 |
if (ticket.getAssignmentId() > 0) {
|
| 121 |
ticketAssigned = ticketAssignedRepository.selectById(ticket.getAssignmentId());
|
121 |
ticketAssigned = ticketAssignedRepository.selectById(ticket.getAssignmentId());
|
| 122 |
newEscalationType = ticketAssigned.getEscalationType().next();
|
122 |
newEscalationType = ticketAssigned.getEscalationType().next();
|
| 123 |
if (newEscalationType == null || newEscalationType.equals(EscalationType.Final)) {
|
123 |
if (newEscalationType == null || newEscalationType.equals(EscalationType.Final)) {
|
| 124 |
LOGGER.info("Cant escalate further");
|
124 |
LOGGER.info("Cant escalate further");
|
| 125 |
return;
|
125 |
return;
|
| Line 169... |
Line 169... |
| 169 |
escalationTypeNext = escalationTypeNext.next();
|
169 |
escalationTypeNext = escalationTypeNext.next();
|
| 170 |
// LOGGER.info("Escalation type next {}", escalationTypeNext);
|
170 |
// LOGGER.info("Escalation type next {}", escalationTypeNext);
|
| 171 |
} while (!escalationTypeNext.equals(EscalationType.Final));
|
171 |
} while (!escalationTypeNext.equals(EscalationType.Final));
|
| 172 |
|
172 |
|
| 173 |
int assigneeAuthId = assigneeUserIds.stream().findFirst().orElse(0);
|
173 |
int assigneeAuthId = assigneeUserIds.stream().findFirst().orElse(0);
|
| 174 |
|
174 |
|
| 175 |
int managerAuthId = 0;
|
175 |
int managerAuthId = 0;
|
| 176 |
EscalationType assigneeEscalationType = null;
|
176 |
EscalationType assigneeEscalationType = null;
|
| 177 |
if (assigneeAuthId == 0) {
|
177 |
if (assigneeAuthId == 0) {
|
| 178 |
assigneeAuthId = ProfitMandiConstants.FINAL_AUTH_ID;
|
178 |
assigneeAuthId = ProfitMandiConstants.FINAL_AUTH_ID;
|
| 179 |
assigneeEscalationType = EscalationType.Final;
|
179 |
assigneeEscalationType = EscalationType.Final;
|
| Line 192... |
Line 192... |
| 192 |
ticketAssignedNew.setEscalationType(assigneeEscalationType);
|
192 |
ticketAssignedNew.setEscalationType(assigneeEscalationType);
|
| 193 |
ticketAssignedNew.setManagerId(managerAuthId);
|
193 |
ticketAssignedNew.setManagerId(managerAuthId);
|
| 194 |
ticketAssignedNew.setCreateTimestamp(LocalDateTime.now());
|
194 |
ticketAssignedNew.setCreateTimestamp(LocalDateTime.now());
|
| 195 |
ticketAssignedRepository.persist(ticketAssignedNew);
|
195 |
ticketAssignedRepository.persist(ticketAssignedNew);
|
| 196 |
LOGGER.info(ticketAssigned);
|
196 |
LOGGER.info(ticketAssigned);
|
| 197 |
|
197 |
|
| 198 |
AuthUser authUser = authRepository.selectById(ticketAssignedNew.getAssineeId());
|
198 |
AuthUser authUser = authRepository.selectById(ticketAssignedNew.getAssineeId());
|
| 199 |
AuthUser authUserManager = null;
|
199 |
AuthUser authUserManager = null;
|
| 200 |
|
200 |
|
| 201 |
//Dont send cc mail if both are same
|
201 |
// Dont send cc mail if both are same
|
| 202 |
if (managerAuthId!= assigneeAuthId) {
|
202 |
if (managerAuthId != assigneeAuthId) {
|
| 203 |
authUserManager = authRepository.selectById(managerAuthId);
|
203 |
authUserManager = authRepository.selectById(managerAuthId);
|
| 204 |
}
|
204 |
}
|
| 205 |
ticket.setAssignmentId(ticketAssignedNew.getId());
|
205 |
ticket.setAssignmentId(ticketAssignedNew.getId());
|
| 206 |
this.sendAssignedTicketMail(authUser, Arrays.asList(authUserManager), ticket, ticketAssigned!=null);
|
206 |
this.sendAssignedTicketMail(authUser, Arrays.asList(authUserManager), ticket, ticketAssigned != null);
|
| 207 |
if (!ticketAssignedNew.getEscalationType().equals(EscalationType.L1)) {
|
207 |
if (!ticketAssignedNew.getEscalationType().equals(EscalationType.L1)) {
|
| 208 |
this.addActivity(ticket, this.createActivity(ActivityType.ESCALATED,
|
208 |
this.addActivity(ticket, this.createActivity(ActivityType.ESCALATED,
|
| 209 |
"Ticket ecalated and assigned to " + authUser.getName(), 0));
|
209 |
"Ticket ecalated and assigned to " + authUser.getName(), 0));
|
| 210 |
} else {
|
210 |
} else {
|
| 211 |
this.addActivity(ticket,
|
211 |
this.addActivity(ticket,
|
| Line 215... |
Line 215... |
| 215 |
|
215 |
|
| 216 |
@Override
|
216 |
@Override
|
| 217 |
public void updateTicket(int categoryId, int subCategoryId, Ticket ticket) throws ProfitMandiBusinessException {
|
217 |
public void updateTicket(int categoryId, int subCategoryId, Ticket ticket) throws ProfitMandiBusinessException {
|
| 218 |
|
218 |
|
| 219 |
TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.getTicketSubCategoryMap().get(subCategoryId);
|
219 |
TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.getTicketSubCategoryMap().get(subCategoryId);
|
| 220 |
if(ticketSubCategory==null) {
|
220 |
if (ticketSubCategory == null) {
|
| 221 |
throw new ProfitMandiBusinessException("Could not find subCategoryId " + subCategoryId + "- " + categoryId, "Problem", "Problem");
|
221 |
throw new ProfitMandiBusinessException("Could not find subCategoryId " + subCategoryId + "- " + categoryId,
|
| - |
|
222 |
"Problem", "Problem");
|
| 222 |
}
|
223 |
}
|
| 223 |
String storeName = retailerService.getFofoRetailers(true).get(ticket.getFofoId()).getBusinessName();
|
224 |
String storeName = retailerService.getFofoRetailers(true).get(ticket.getFofoId()).getBusinessName();
|
| 224 |
List<TicketAssigned> oldTicketAssignedList = ticketAssignedRepository.selectByTicketIds(Arrays.asList(ticket.getId()));
|
225 |
List<TicketAssigned> oldTicketAssignedList = ticketAssignedRepository
|
| - |
|
226 |
.selectByTicketIds(Arrays.asList(ticket.getId()));
|
| 225 |
for(TicketAssigned oldTicketAssigned : oldTicketAssignedList) {
|
227 |
for (TicketAssigned oldTicketAssigned : oldTicketAssignedList) {
|
| 226 |
ticketAssignedRepository.delete(oldTicketAssigned);
|
228 |
ticketAssignedRepository.delete(oldTicketAssigned);
|
| 227 |
}
|
229 |
}
|
| 228 |
|
230 |
|
| 229 |
if (ticket.getSubCategoryId() != ticketSubCategory.getId()) {
|
231 |
if (ticket.getSubCategoryId() != ticketSubCategory.getId()) {
|
| 230 |
ticket.setSubCategoryId(ticketSubCategory.getId());
|
232 |
ticket.setSubCategoryId(ticketSubCategory.getId());
|
| 231 |
List<Integer> oldAssignedAuthUserIds = oldTicketAssignedList.stream().map(x->x.getAssineeId()).collect(Collectors.toList());
|
233 |
List<Integer> oldAssignedAuthUserIds = oldTicketAssignedList.stream().map(x -> x.getAssineeId())
|
| - |
|
234 |
.collect(Collectors.toList());
|
| 232 |
List<String> oldAssignedEmailIds = authRepository.selectAllAuthUserByIds(oldAssignedAuthUserIds).stream().map(x->x.getEmailId()).collect(Collectors.toList());
|
235 |
List<String> oldAssignedEmailIds = authRepository.selectAllAuthUserByIds(oldAssignedAuthUserIds).stream()
|
| - |
|
236 |
.map(x -> x.getEmailId()).collect(Collectors.toList());
|
| 233 |
String mailTo = oldAssignedEmailIds.remove(0);
|
237 |
String mailTo = oldAssignedEmailIds.remove(0);
|
| - |
|
238 |
String message = String.format(CATEGORY_CHANGED_TICKET, ticket.getId(), storeName,
|
| 234 |
String message = String.format(CATEGORY_CHANGED_TICKET, ticket.getId(),storeName, ticketSubCategory.getTicketCategory().getName() + " - " + ticketSubCategory.getName());
|
239 |
ticketSubCategory.getTicketCategory().getName() + " - " + ticketSubCategory.getName());
|
| 235 |
try {
|
240 |
try {
|
| 236 |
Utils.sendMailWithAttachments(mailSender, mailTo, oldAssignedEmailIds.toArray(new String[0]), "Ticket Category/Subcategory Changed",
|
241 |
Utils.sendMailWithAttachments(mailSender, mailTo, oldAssignedEmailIds.toArray(new String[0]),
|
| 237 |
message, null);
|
242 |
"Ticket Category/Subcategory Changed", message, null);
|
| 238 |
} catch (Exception e) {
|
243 |
} catch (Exception e) {
|
| 239 |
LOGGER.info("Could not send mail for ticket {}", ticket.toString());
|
244 |
LOGGER.info("Could not send mail for ticket {}", ticket.toString());
|
| 240 |
}
|
245 |
}
|
| 241 |
}
|
246 |
}
|
| 242 |
|
247 |
|
| 243 |
|
- |
|
| 244 |
Activity categoryChangedActivity = this.createActivity(ActivityType.CATEGORY_CHANGED, "Category changed to "
|
248 |
Activity categoryChangedActivity = this.createActivity(ActivityType.CATEGORY_CHANGED, "Category changed to "
|
| 245 |
+ ticketSubCategory.getTicketCategory().getName() + " - " + ticketSubCategory.getName(), 0);
|
249 |
+ ticketSubCategory.getTicketCategory().getName() + " - " + ticketSubCategory.getName(), 0);
|
| 246 |
this.addActivity(ticket, categoryChangedActivity);
|
250 |
this.addActivity(ticket, categoryChangedActivity);
|
| 247 |
ticket.setAssignmentId(0);
|
251 |
ticket.setAssignmentId(0);
|
| 248 |
this.assignTicket(ticket);
|
252 |
this.assignTicket(ticket);
|
| 249 |
|
253 |
|
| 250 |
}
|
254 |
}
|
| 251 |
|
255 |
|
| 252 |
@Override
|
256 |
@Override
|
| 253 |
public Activity createActivity(ActivityType activityType, String message, int createdBy) {
|
257 |
public Activity createActivity(ActivityType activityType, String message, int createdBy) {
|
| 254 |
Activity activity = new Activity();
|
258 |
Activity activity = new Activity();
|
| Line 280... |
Line 284... |
| 280 |
List<AuthUser> authUsers = authRepository.selectAllAuthUserByIds(
|
284 |
List<AuthUser> authUsers = authRepository.selectAllAuthUserByIds(
|
| 281 |
positions.stream().map(x -> x.getAuthUserId()).collect(Collectors.toList()));
|
285 |
positions.stream().map(x -> x.getAuthUserId()).collect(Collectors.toList()));
|
| 282 |
authUsers = authUsers.stream().filter(x -> x.isActive()).collect(Collectors.toList());
|
286 |
authUsers = authUsers.stream().filter(x -> x.isActive()).collect(Collectors.toList());
|
| 283 |
if (authUsers.size() > 0) {
|
287 |
if (authUsers.size() > 0) {
|
| 284 |
authUserId = authUsers.get(0).getId();
|
288 |
authUserId = authUsers.get(0).getId();
|
| - |
|
289 |
/*
|
| 285 |
/*Random rand = new Random();
|
290 |
* Random rand = new Random(); authUserId =
|
| 286 |
authUserId = authUsers.get(rand.nextInt(authUsers.size())).getId();*/
|
291 |
* authUsers.get(rand.nextInt(authUsers.size())).getId();
|
| - |
|
292 |
*/
|
| 287 |
}
|
293 |
}
|
| 288 |
}
|
294 |
}
|
| 289 |
return authUserId;
|
295 |
return authUserId;
|
| 290 |
|
296 |
|
| 291 |
}
|
297 |
}
|
| Line 404... |
Line 410... |
| 404 |
regionIdAndRegionMap.put(position.getRegionId(), region);
|
410 |
regionIdAndRegionMap.put(position.getRegionId(), region);
|
| 405 |
}
|
411 |
}
|
| 406 |
return regionIdAndRegionMap;
|
412 |
return regionIdAndRegionMap;
|
| 407 |
}
|
413 |
}
|
| 408 |
|
414 |
|
| 409 |
private void sendAssignedTicketMail(AuthUser authUserTo, List<AuthUser> authUsersCc, Ticket ticket, boolean isEscalated)
|
415 |
private void sendAssignedTicketMail(AuthUser authUserTo, List<AuthUser> authUsersCc, Ticket ticket,
|
| 410 |
throws ProfitMandiBusinessException {
|
416 |
boolean isEscalated) throws ProfitMandiBusinessException {
|
| 411 |
try {
|
417 |
try {
|
| 412 |
String[] ccTo = authUsersCc.stream().filter(x -> x != null).map(x -> x.getEmailId()).toArray(String[]::new);
|
418 |
String[] ccTo = authUsersCc.stream().filter(x -> x != null).map(x -> x.getEmailId()).toArray(String[]::new);
|
| 413 |
|
419 |
|
| 414 |
String messageFormat = null;
|
420 |
String messageFormat = null;
|
| 415 |
if(isEscalated) {
|
421 |
if (isEscalated) {
|
| 416 |
messageFormat = ESCALATED_TICKET;
|
422 |
messageFormat = ESCALATED_TICKET;
|
| 417 |
} else {
|
423 |
} else {
|
| 418 |
messageFormat = ASSIGNED_TICKET;
|
424 |
messageFormat = ASSIGNED_TICKET;
|
| 419 |
}
|
425 |
}
|
| 420 |
String message = String.format(messageFormat, authUserTo.getName(), ticket.getId(),
|
426 |
String message = String.format(messageFormat, authUserTo.getName(), ticket.getId(),
|
| 421 |
retailerService.getFofoRetailer(ticket.getFofoId()).getBusinessName());
|
427 |
retailerService.getFofoRetailer(ticket.getFofoId()).getBusinessName());
|
| 422 |
Utils.sendMailWithAttachments(mailSender, authUserTo.getEmailId(), ccTo, ASSINMENT_SUBJECT,
|
428 |
Utils.sendMailWithAttachments(mailSender, authUserTo.getEmailId(), ccTo, ASSINMENT_SUBJECT, message, null);
|
| 423 |
message, null);
|
- |
|
| 424 |
} catch (Exception e) {
|
429 |
} catch (Exception e) {
|
| 425 |
e.printStackTrace();
|
430 |
e.printStackTrace();
|
| 426 |
throw new ProfitMandiBusinessException("Ticket Assingment", authUserTo.getEmailId(),
|
431 |
throw new ProfitMandiBusinessException("Ticket Assingment", authUserTo.getEmailId(),
|
| 427 |
"Could not send ticket assignment mail");
|
432 |
"Could not send ticket assignment mail");
|
| 428 |
}
|
433 |
}
|
| Line 568... |
Line 573... |
| 568 |
|
573 |
|
| 569 |
return emails;
|
574 |
return emails;
|
| 570 |
}
|
575 |
}
|
| 571 |
|
576 |
|
| 572 |
@Override
|
577 |
@Override
|
| - |
|
578 |
public List<AuthUser> getAuthUserByPartners(int fofoId) {
|
| - |
|
579 |
|
| - |
|
580 |
List<AuthUser> authUsers = new ArrayList<>();
|
| - |
|
581 |
List<Integer> regionIds = partnerRegionRepository.selectByfofoId(fofoId).stream().map(x -> x.getRegionId())
|
| - |
|
582 |
.collect(Collectors.toList());
|
| - |
|
583 |
|
| - |
|
584 |
regionIds.add(5);// All partners Id;
|
| - |
|
585 |
List<Integer> fofoIds = new ArrayList<>();
|
| - |
|
586 |
fofoIds.add(fofoId);
|
| - |
|
587 |
fofoIds.add(0);
|
| - |
|
588 |
|
| - |
|
589 |
LOGGER.info("fofoIds" + fofoIds);
|
| - |
|
590 |
List<Integer> partnerPositionIds = partnersPositionRepository.selectByRegionIdAndPartnerId(regionIds, fofoIds)
|
| - |
|
591 |
.stream().map(x -> x.getPositionId()).collect(Collectors.toList());
|
| - |
|
592 |
|
| - |
|
593 |
LOGGER.info("partnerPositionIds" + partnerPositionIds);
|
| - |
|
594 |
|
| - |
|
595 |
for (Integer partnerPostionId : partnerPositionIds) {
|
| - |
|
596 |
Position position = positionRepository.selectByIdAndCategoryId(partnerPostionId,
|
| - |
|
597 |
ProfitMandiConstants.TICKET_CATEGORY_SALES);
|
| - |
|
598 |
LOGGER.info("position" + position);
|
| - |
|
599 |
if (position != null) {
|
| - |
|
600 |
|
| - |
|
601 |
AuthUser authUser = authRepository.selectById(position.getAuthUserId());
|
| - |
|
602 |
LOGGER.info("authUser" + authUser);
|
| - |
|
603 |
authUsers.add(authUser);
|
| - |
|
604 |
}
|
| - |
|
605 |
}
|
| - |
|
606 |
|
| - |
|
607 |
return authUsers;
|
| - |
|
608 |
}
|
| - |
|
609 |
|
| - |
|
610 |
@Override
|
| 573 |
public Map<EscalationType, String> getAuthUserAndEsclationTypeByPartnerId(int fofoId) {
|
611 |
public Map<EscalationType, String> getAuthUserAndEsclationTypeByPartnerId(int fofoId) {
|
| 574 |
|
612 |
|
| 575 |
List<String> emails = new ArrayList<>();
|
613 |
List<String> emails = new ArrayList<>();
|
| 576 |
Map<EscalationType, String> emailEsclationTypeMap = new HashMap<>();
|
614 |
Map<EscalationType, String> emailEsclationTypeMap = new HashMap<>();
|
| 577 |
List<Integer> regionIds = partnerRegionRepository.selectByfofoId(fofoId).stream().map(x -> x.getRegionId())
|
615 |
List<Integer> regionIds = partnerRegionRepository.selectByfofoId(fofoId).stream().map(x -> x.getRegionId())
|
| Line 672... |
Line 710... |
| 672 |
return l2l1ListMap;
|
710 |
return l2l1ListMap;
|
| 673 |
}
|
711 |
}
|
| 674 |
|
712 |
|
| 675 |
@Override
|
713 |
@Override
|
| 676 |
public Map<Integer, List<AuthUser>> getAssignedAuthList(List<Ticket> tickets) {
|
714 |
public Map<Integer, List<AuthUser>> getAssignedAuthList(List<Ticket> tickets) {
|
| 677 |
if(tickets.size()==0) {
|
715 |
if (tickets.size() == 0) {
|
| 678 |
return new HashMap<>();
|
716 |
return new HashMap<>();
|
| 679 |
}
|
717 |
}
|
| - |
|
718 |
List<TicketAssigned> ticketAssignedList = ticketAssignedRepository
|
| 680 |
List<TicketAssigned> ticketAssignedList = ticketAssignedRepository.selectByTicketIds(tickets.stream().map(x->x.getId()).collect(Collectors.toList()));
|
719 |
.selectByTicketIds(tickets.stream().map(x -> x.getId()).collect(Collectors.toList()));
|
| 681 |
List<Integer> authUserIds = ticketAssignedList.stream().map(x->x.getAssineeId()).distinct().collect(Collectors.toList());
|
720 |
List<Integer> authUserIds = ticketAssignedList.stream().map(x -> x.getAssineeId()).distinct()
|
| - |
|
721 |
.collect(Collectors.toList());
|
| 682 |
Map<Integer, AuthUser> authUserMap = authRepository.selectAllAuthUserByIds(authUserIds).stream().collect(Collectors.toMap(x->x.getId(), x->x));
|
722 |
Map<Integer, AuthUser> authUserMap = authRepository.selectAllAuthUserByIds(authUserIds).stream()
|
| - |
|
723 |
.collect(Collectors.toMap(x -> x.getId(), x -> x));
|
| 683 |
return ticketAssignedList.stream().collect(Collectors.groupingBy(x->x.getTicketId(), Collectors.mapping(x->authUserMap.get(x.getAssineeId()), Collectors.toList())));
|
724 |
return ticketAssignedList.stream().collect(Collectors.groupingBy(x -> x.getTicketId(),
|
| - |
|
725 |
Collectors.mapping(x -> authUserMap.get(x.getAssineeId()), Collectors.toList())));
|
| 684 |
}
|
726 |
}
|
| 685 |
|
727 |
|
| 686 |
}
|
728 |
}
|