Subversion Repositories SmartDukaan

Rev

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

Rev 27205 Rev 27270
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());