Subversion Repositories SmartDukaan

Rev

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

Rev 27410 Rev 27545
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
}