Subversion Repositories SmartDukaan

Rev

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

Rev 31238 Rev 31762
Line 2... Line 2...
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.util.Utils;
5
import com.spice.profitmandi.common.util.Utils;
6
import com.spice.profitmandi.dao.entity.auth.AuthUser;
6
import com.spice.profitmandi.dao.entity.auth.AuthUser;
-
 
7
import com.spice.profitmandi.dao.entity.catalog.Category;
7
import com.spice.profitmandi.dao.entity.cs.*;
8
import com.spice.profitmandi.dao.entity.cs.*;
8
import com.spice.profitmandi.dao.entity.dtr.Document;
9
import com.spice.profitmandi.dao.entity.dtr.Document;
9
import com.spice.profitmandi.dao.entity.fofo.ActivityType;
10
import com.spice.profitmandi.dao.entity.fofo.ActivityType;
10
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
11
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
11
import com.spice.profitmandi.dao.enumuration.cs.TicketStatus;
12
import com.spice.profitmandi.dao.enumuration.cs.TicketStatus;
Line 17... Line 18...
17
import com.spice.profitmandi.service.authentication.RoleManager;
18
import com.spice.profitmandi.service.authentication.RoleManager;
18
import com.spice.profitmandi.service.user.RetailerService;
19
import com.spice.profitmandi.service.user.RetailerService;
19
import com.spice.profitmandi.web.model.LoginDetails;
20
import com.spice.profitmandi.web.model.LoginDetails;
20
import com.spice.profitmandi.web.util.CookiesProcessor;
21
import com.spice.profitmandi.web.util.CookiesProcessor;
21
import com.spice.profitmandi.web.util.MVCResponseSender;
22
import com.spice.profitmandi.web.util.MVCResponseSender;
-
 
23
 
-
 
24
import org.apache.commons.collections.map.HashedMap;
22
import org.apache.logging.log4j.LogManager;
25
import org.apache.logging.log4j.LogManager;
23
import org.apache.logging.log4j.Logger;
26
import org.apache.logging.log4j.Logger;
24
import org.springframework.beans.factory.annotation.Autowired;
27
import org.springframework.beans.factory.annotation.Autowired;
25
import org.springframework.mail.javamail.JavaMailSender;
28
import org.springframework.mail.javamail.JavaMailSender;
26
import org.springframework.stereotype.Controller;
29
import org.springframework.stereotype.Controller;
Line 36... Line 39...
36
 
39
 
37
@Controller
40
@Controller
38
@Transactional(rollbackFor = Throwable.class)
41
@Transactional(rollbackFor = Throwable.class)
39
public class CsController {
42
public class CsController {
40
 
43
 
41
	private static final Logger LOGGER = LogManager.getLogger(CsController.class);
44
    private static final Logger LOGGER = LogManager.getLogger(CsController.class);
42
	private static final String ACTIVITY_SUBJECT = "Message related ticketId#%s";
45
    private static final String ACTIVITY_SUBJECT = "Message related ticketId#%s";
43
	private static final String PARTNER_RESOLVED_TICKET_MAIL = "Dear Partner , we have resolved your ticket # %s , request to kindly accept the same. In case you still have any concerns regarding the same pls click on %s so that we can help you.Regards\nSmartdukaan";
46
    private static final String PARTNER_RESOLVED_TICKET_MAIL = "Dear Partner , we have resolved your ticket # %s , request to kindly accept the same. In case you still have any concerns regarding the same pls click on %s so that we can help you.Regards\nSmartdukaan";
44
	private static final String PARTNER_REOPEN = "Dear Partner , Your ticket # %s has been re-opened as per your confirmation & we are committed to resolve it on priority.Regards\nSmartdukaan";
47
    private static final String PARTNER_REOPEN = "Dear Partner , Your ticket # %s has been re-opened as per your confirmation & we are committed to resolve it on priority.Regards\nSmartdukaan";
45
	private static final String INTERNAL_REOPEN_MAIL = "Team, Pls note that the Ticket Id %s has been re-opened by %s , pls respond on priority";
48
    private static final String INTERNAL_REOPEN_MAIL = "Team, Pls note that the Ticket Id %s has been re-opened by %s , pls respond on priority";
46
	private static final String INTERNAL_REOPEN_ACTIVITY_MESSAGE = "Hi,My ticket is not resolved yet,so I have reopened it";
49
    private static final String INTERNAL_REOPEN_ACTIVITY_MESSAGE = "Hi,My ticket is not resolved yet,so I have reopened it";
47
 
50
 
48
	@Autowired
51
    @Autowired
49
	JavaMailSender mailSender;
52
    JavaMailSender mailSender;
50
 
53
 
51
	@Autowired
54
    @Autowired
52
	private CsService csService;
55
    private CsService csService;
53
 
56
 
54
	@Autowired
57
    @Autowired
55
	private CookiesProcessor cookiesProcessor;
58
    private CookiesProcessor cookiesProcessor;
56
 
59
 
57
	@Autowired
60
    @Autowired
58
	private TicketCategoryRepository ticketCategoryRepository;
61
    private TicketCategoryRepository ticketCategoryRepository;
59
 
62
 
60
	@Autowired
63
    @Autowired
61
	private TicketSubCategoryRepository ticketSubCategoryRepository;
64
    private TicketSubCategoryRepository ticketSubCategoryRepository;
62
 
65
 
63
	@Autowired
66
    @Autowired
64
	private RegionRepository regionRepository;
67
    private RegionRepository regionRepository;
65
 
68
 
66
	@Autowired
69
    @Autowired
67
	private RetailerService retailerService;
70
    private RetailerService retailerService;
68
 
71
 
69
	@Autowired
72
    @Autowired
70
	private MVCResponseSender mvcResponseSender;
73
    private MVCResponseSender mvcResponseSender;
71
 
74
 
72
	@Autowired
75
    @Autowired
73
	private AuthRepository authRepository;
76
    private AuthRepository authRepository;
74
 
77
 
75
	@Autowired
78
    @Autowired
76
	private PositionRepository positionRepository;
79
    private PositionRepository positionRepository;
77
 
80
 
78
	@Autowired
81
    @Autowired
79
	private TicketRepository ticketRepository;
82
    private TicketRepository ticketRepository;
80
 
83
 
81
	@Autowired
84
    @Autowired
82
	private RoleManager roleManager;
85
    private RoleManager roleManager;
83
 
86
 
84
	@Autowired
87
    @Autowired
85
	private ActivityRepository activityRepository;
88
    private ActivityRepository activityRepository;
86
 
89
 
87
	@Autowired
90
    @Autowired
88
	private ActivityAttachmentRepository activityAttachmentRepository;
91
    private ActivityAttachmentRepository activityAttachmentRepository;
89
 
92
 
90
	@Autowired
93
    @Autowired
91
	private TicketAssignedRepository ticketAssignedRepository;
94
    private TicketAssignedRepository ticketAssignedRepository;
92
 
95
 
93
	@Autowired
96
    @Autowired
94
	private PartnerRegionRepository partnerRegionRepository;
97
    private PartnerRegionRepository partnerRegionRepository;
95
 
98
 
96
	@Autowired
99
    @Autowired
97
	PartnersPositionRepository partnersPositionRepository;
100
    PartnersPositionRepository partnersPositionRepository;
98
 
101
 
99
	@Autowired
102
    @Autowired
100
	FofoStoreRepository fofoStoreRepository;
103
    FofoStoreRepository fofoStoreRepository;
101
 
104
 
102
	@Autowired
105
    @Autowired
103
	DocumentRepository documentRepository;
106
    DocumentRepository documentRepository;
104
 
107
 
105
	@GetMapping(value = "/cs/createCategory")
108
    @GetMapping(value = "/cs/createCategory")
106
	public String getCreateCategory(HttpServletRequest request, Model model) {
109
    public String getCreateCategory(HttpServletRequest request, Model model) {
107
		List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
110
        List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
108
		model.addAttribute("ticketCategories", ticketCategories);
111
        model.addAttribute("ticketCategories", ticketCategories);
109
		return "create-ticket-category";
112
        return "create-ticket-category";
110
	}
113
    }
111
 
114
 
112
	@PostMapping(value = "/cs/createCategory")
115
    @PostMapping(value = "/cs/createCategory")
113
	public String createCategory(HttpServletRequest request, @RequestParam(name = "name") String name,
116
    public String createCategory(HttpServletRequest request, @RequestParam(name = "name") String name, @RequestParam(name = "description") String description, Model model) throws ProfitMandiBusinessException {
114
			@RequestParam(name = "description") String description, Model model) throws ProfitMandiBusinessException {
117
 
115
 
118
        TicketCategory ticketCategory = ticketCategoryRepository.selectByName(name);
116
		TicketCategory ticketCategory = ticketCategoryRepository.selectByName(name);
119
        if (ticketCategory != null) {
117
		if (ticketCategory != null) {
120
            throw new ProfitMandiBusinessException("name", name, "already exists!");
118
			throw new ProfitMandiBusinessException("name", name, "already exists!");
121
        }
119
		}
122
        ticketCategory = new TicketCategory();
120
		ticketCategory = new TicketCategory();
123
        ticketCategory.setName(name);
121
		ticketCategory.setName(name);
124
        ticketCategory.setDescription(description);
122
		ticketCategory.setDescription(description);
125
        ticketCategoryRepository.persist(ticketCategory);
123
		ticketCategoryRepository.persist(ticketCategory);
126
        return "create-ticket-category";
124
		return "create-ticket-category";
127
    }
125
	}
128
 
126
 
129
    @GetMapping(value = "/cs/createSubCategory")
127
	@GetMapping(value = "/cs/createSubCategory")
130
    public String getCreateSubCategory(HttpServletRequest request, Model model) {
128
	public String getCreateSubCategory(HttpServletRequest request, Model model) {
131
        List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
129
		List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
132
        model.addAttribute("ticketCategories", ticketCategories);
130
		model.addAttribute("ticketCategories", ticketCategories);
133
        return "create-ticket-sub-category";
131
		return "create-ticket-sub-category";
134
    }
132
	}
135
 
133
 
136
    @GetMapping(value = "/cs/getSubCategoryByCategoryId")
134
	@GetMapping(value = "/cs/getSubCategoryByCategoryId")
137
    public String getSubCategoryByCategoryId(HttpServletRequest request, @RequestParam(name = "ticketCategoryId", defaultValue = "") int ticketCategoryId, Model model) {
135
	public String getSubCategoryByCategoryId(HttpServletRequest request,
138
        List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository.selectAll(ticketCategoryId);
136
			@RequestParam(name = "ticketCategoryId", defaultValue = "") int ticketCategoryId, Model model) {
139
        TicketCategory ticketCategory = ticketCategoryRepository.selectById(ticketCategoryId);
137
		List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository.selectAll(ticketCategoryId);
140
        model.addAttribute("ticketSubCategories", ticketSubCategories);
138
		TicketCategory ticketCategory = ticketCategoryRepository.selectById(ticketCategoryId);
141
        model.addAttribute("ticketCategory", ticketCategory);
139
		model.addAttribute("ticketSubCategories", ticketSubCategories);
142
        return "ticket-sub-category";
140
		model.addAttribute("ticketCategory", ticketCategory);
143
    }
141
		return "ticket-sub-category";
144
 
142
	}
145
    @PostMapping(value = "/cs/createSubCategory")
143
 
146
    public String createSubCategory(HttpServletRequest request, @RequestParam(name = "categoryId", defaultValue = "0") int categoryId, @RequestParam(name = "name") String name, @RequestParam(name = "description") String description, Model model) throws ProfitMandiBusinessException {
144
	@PostMapping(value = "/cs/createSubCategory")
147
 
145
	public String createSubCategory(HttpServletRequest request,
148
        TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.selectTicketSubCategory(categoryId, name);
146
			@RequestParam(name = "categoryId", defaultValue = "0") int categoryId,
149
        if (ticketSubCategory != null) {
147
			@RequestParam(name = "name") String name, @RequestParam(name = "description") String description,
150
            throw new ProfitMandiBusinessException("name & categoryId", name + "  " + categoryId, "already exists!");
148
			Model model) throws ProfitMandiBusinessException {
151
        }
149
 
152
 
150
		TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.selectTicketSubCategory(categoryId, name);
153
        ticketSubCategory = new TicketSubCategory();
151
		if (ticketSubCategory != null) {
154
        ticketSubCategory.setCategoryId(categoryId);
152
			throw new ProfitMandiBusinessException("name & categoryId", name + "  " + categoryId, "already exists!");
155
        ticketSubCategory.setName(name);
153
		}
156
        ticketSubCategory.setDescription(description);
154
 
157
        ticketSubCategoryRepository.persist(ticketSubCategory);
155
		ticketSubCategory = new TicketSubCategory();
158
        return "create-ticket-sub-category";
156
		ticketSubCategory.setCategoryId(categoryId);
159
    }
157
		ticketSubCategory.setName(name);
160
 
158
		ticketSubCategory.setDescription(description);
161
    @GetMapping(value = "/cs/createRegion")
159
		ticketSubCategoryRepository.persist(ticketSubCategory);
162
    public String createRegion(HttpServletRequest request, Model model) {
160
		return "create-ticket-sub-category";
163
        List<Region> regions = regionRepository.selectAll();
161
	}
164
        model.addAttribute("regions", regions);
162
 
165
        return "create-region";
163
	@GetMapping(value = "/cs/createRegion")
166
    }
164
	public String createRegion(HttpServletRequest request, Model model) {
167
 
165
		List<Region> regions = regionRepository.selectAll();
168
    @PostMapping(value = "/cs/createRegion")
166
		model.addAttribute("regions", regions);
169
    public String createRegion(HttpServletRequest request, @RequestParam(name = "name") String name, @RequestParam(name = "description") String description, Model model) throws Exception {
167
		return "create-region";
170
        Region region = regionRepository.selectByName(name);
168
	}
171
        if (region != null) {
169
 
172
            throw new ProfitMandiBusinessException("name", name, "already exists!");
170
	@PostMapping(value = "/cs/createRegion")
173
        }
171
	public String createRegion(HttpServletRequest request, @RequestParam(name = "name") String name,
174
        region = new Region();
172
			@RequestParam(name = "description") String description, Model model) throws Exception {
175
        region.setName(name);
173
		Region region = regionRepository.selectByName(name);
176
        region.setDescription(description);
174
		if (region != null) {
177
        regionRepository.persist(region);
175
			throw new ProfitMandiBusinessException("name", name, "already exists!");
178
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
176
		}
179
        return "response";
177
		region = new Region();
180
    }
178
		region.setName(name);
181
 
179
		region.setDescription(description);
182
    @GetMapping(value = "/cs/getPartners")
180
		regionRepository.persist(region);
183
    public String getPartners(HttpServletRequest request, @RequestParam(name = "regionId", defaultValue = "0") int regionId, Model model) {
181
		model.addAttribute("response1", mvcResponseSender.createResponseString(true));
184
        List<Integer> fofoIds = fofoStoreRepository.selectAll().stream().map(x -> x.getId()).collect(Collectors.toList());
182
		return "response";
185
        List<Integer> addedfofoIds = partnerRegionRepository.selectByRegionId(regionId).stream().map(x -> x.getFofoId()).collect(Collectors.toList());
183
	}
186
 
184
 
187
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
185
	@GetMapping(value = "/cs/getPartners")
188
        Map<Integer, CustomRetailer> fofoRetailers = fofoIds.stream().map(x -> customRetailerMap.get(x)).filter(x -> x != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
186
	public String getPartners(HttpServletRequest request,
189
        model.addAttribute("fofoRetailers", fofoRetailers);
187
			@RequestParam(name = "regionId", defaultValue = "0") int regionId, Model model) {
190
        model.addAttribute("addedfofoIds", addedfofoIds);
188
		List<Integer> fofoIds = fofoStoreRepository.selectAll().stream().map(x -> x.getId())
191
        return "added-region-partners";
189
				.collect(Collectors.toList());
192
    }
190
		List<Integer> addedfofoIds = partnerRegionRepository.selectByRegionId(regionId).stream().map(x -> x.getFofoId())
193
 
191
				.collect(Collectors.toList());
194
    @GetMapping(value = "/cs/getPartnersByRegion")
192
 
195
    public String getPartnersByRegion(HttpServletRequest request, @RequestParam(name = "regionId", defaultValue = "0") int regionId, Model model) {
193
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
196
        List<Integer> fofoIds = null;
194
		Map<Integer, CustomRetailer> fofoRetailers = fofoIds.stream().map(x -> customRetailerMap.get(x))
197
        fofoIds = partnerRegionRepository.selectByRegionId(regionId).stream().map(x -> x.getFofoId()).collect(Collectors.toList());
195
				.filter(x -> x != null).collect(Collectors.toList()).stream()
198
 
196
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
199
        if (fofoIds.contains(0)) {
197
		model.addAttribute("fofoRetailers", fofoRetailers);
200
            fofoIds = fofoStoreRepository.selectAll().stream().filter(x -> x.isActive()).collect(Collectors.toList()).stream().map(x -> x.getId()).collect(Collectors.toList());
198
		model.addAttribute("addedfofoIds", addedfofoIds);
201
 
199
		return "added-region-partners";
202
        }
200
	}
203
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
201
 
204
 
202
	@GetMapping(value = "/cs/getPartnersByRegion")
205
        Map<Integer, CustomRetailer> fofoRetailers = fofoIds.stream().map(x -> customRetailerMap.get(x)).filter(x -> x != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
203
	public String getPartnersByRegion(HttpServletRequest request,
206
        model.addAttribute("fofoRetailers", fofoRetailers);
204
			@RequestParam(name = "regionId", defaultValue = "0") int regionId, Model model) {
207
        return "added-subregion-partners";
205
		List<Integer> fofoIds = null;
208
    }
206
		fofoIds = partnerRegionRepository.selectByRegionId(regionId).stream().map(x -> x.getFofoId())
209
 
207
				.collect(Collectors.toList());
210
    @GetMapping(value = "/cs/createPartnerRegion")
208
 
211
    public String createPartnerRegion(HttpServletRequest request, Model model) {
209
		if (fofoIds.contains(0)) {
212
        List<Region> regions = regionRepository.selectAll();
210
			fofoIds = fofoStoreRepository.selectAll().stream().filter(x -> x.isActive()).collect(Collectors.toList())
213
        model.addAttribute("regions", regions);
211
					.stream().map(x -> x.getId()).collect(Collectors.toList());
214
        return "create-partner-region";
212
 
215
    }
213
		}
216
 
214
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
217
    @PostMapping(value = "/cs/createPartnerRegion")
215
 
218
    public String createPartnerRegion(HttpServletRequest request, @RequestParam(name = "regionId") int regionId, @RequestBody List<Integer> selectedFofoIds, Model model) throws Exception {
216
		Map<Integer, CustomRetailer> fofoRetailers = fofoIds.stream().map(x -> customRetailerMap.get(x))
219
        partnerRegionRepository.delete(regionId);
217
				.filter(x -> x != null).collect(Collectors.toList()).stream()
220
        LOGGER.info("successfully removed");
218
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
221
        LOGGER.info(selectedFofoIds.size());
219
		model.addAttribute("fofoRetailers", fofoRetailers);
222
        csService.addPartnerToRegion(regionId, selectedFofoIds);
220
		return "added-subregion-partners";
223
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
221
	}
224
        return "response";
222
 
225
    }
223
	@GetMapping(value = "/cs/createPartnerRegion")
226
 
224
	public String createPartnerRegion(HttpServletRequest request, Model model) {
227
    @GetMapping(value = "/cs/getPosition")
225
		List<Region> regions = regionRepository.selectAll();
228
    public String getPosition(HttpServletRequest request, @RequestParam int positionId, Model model) {
226
		model.addAttribute("regions", regions);
229
 
227
		return "create-partner-region";
230
        Position position = positionRepository.selectById(positionId);
228
	}
231
 
229
 
232
        List<CustomRetailer> positionIdCustomRetailer = csService.getPositionCustomRetailerMap(Arrays.asList(position)).get(position.getId());
230
	@PostMapping(value = "/cs/createPartnerRegion")
233
 
231
	public String createPartnerRegion(HttpServletRequest request, @RequestParam(name = "regionId") int regionId,
234
        Map<Integer, CustomRetailer> regionRetailerMap = csService.getRegionPartners(Arrays.asList(position)).get(position.getRegionId()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
232
			@RequestBody List<Integer> selectedFofoIds, Model model) throws Exception {
235
 
233
		partnerRegionRepository.delete(regionId);
236
        model.addAttribute("position", position);
234
		LOGGER.info("successfully removed");
237
        model.addAttribute("regionRetailerMap", regionRetailerMap);
235
		LOGGER.info(selectedFofoIds.size());
238
        model.addAttribute("positionIdCustomRetailer", positionIdCustomRetailer);
236
		csService.addPartnerToRegion(regionId, selectedFofoIds);
239
 
237
		model.addAttribute("response1", mvcResponseSender.createResponseString(true));
240
        return "position-partner";
238
		return "response";
241
    }
239
	}
242
 
240
 
243
    @GetMapping(value = "/cs/createPosition")
241
	@GetMapping(value = "/cs/getPosition")
244
    public String createPosition(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) {
242
	public String getPosition(HttpServletRequest request, @RequestParam int positionId, Model model) {
245
        List<AuthUser> authUsers = authRepository.selectAllActiveUser();
243
 
246
        List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
244
		Position position = positionRepository.selectById(positionId);
247
        List<Region> regions = regionRepository.selectAll();
245
 
248
        model.addAttribute("escalationTypes", EscalationType.values());
246
		List<CustomRetailer> positionIdCustomRetailer = csService.getPositionCustomRetailerMap(Arrays.asList(position))
249
        model.addAttribute("authUsers", authUsers);
247
				.get(position.getId());
250
        model.addAttribute("ticketCategories", ticketCategories);
248
 
251
        model.addAttribute("regions", regions);
249
		Map<Integer, CustomRetailer> regionRetailerMap = csService.getRegionPartners(Arrays.asList(position))
252
 
250
				.get(position.getRegionId()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
253
        List<Position> positions = positionRepository.selectAllPosition();
251
 
254
        LOGGER.info("positions" + positions);
252
		model.addAttribute("position", position);
255
 
253
		model.addAttribute("regionRetailerMap", regionRetailerMap);
256
        Map<Integer, AuthUser> authUserIdAndAuthUserMap = csService.getAuthUserIdAndAuthUserMapUsingPositions(positions);
254
		model.addAttribute("positionIdCustomRetailer", positionIdCustomRetailer);
257
        Map<Integer, TicketCategory> categoryIdAndCategoryMap = csService.getCategoryIdAndCategoryUsingPositions(positions);
255
 
258
        Map<Integer, Region> regionIdAndRegionMap = csService.getRegionIdAndRegionMap(positions);
256
		return "position-partner";
-
 
257
	}
-
 
258
 
-
 
259
	@GetMapping(value = "/cs/createPosition")
-
 
260
	public String createPosition(HttpServletRequest request,
-
 
261
			@RequestParam(name = "offset", defaultValue = "0") int offset,
-
 
262
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) {
-
 
263
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
-
 
264
		List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
-
 
265
		List<Region> regions = regionRepository.selectAll();
-
 
266
		model.addAttribute("escalationTypes", EscalationType.values());
-
 
267
		model.addAttribute("authUsers", authUsers);
-
 
268
		model.addAttribute("ticketCategories", ticketCategories);
-
 
269
		model.addAttribute("regions", regions);
-
 
270
 
-
 
271
		List<Position> positions = positionRepository.selectAllPosition();
-
 
272
		LOGGER.info("positions" + positions);
-
 
273
 
-
 
274
		Map<Integer, AuthUser> authUserIdAndAuthUserMap = csService
-
 
275
				.getAuthUserIdAndAuthUserMapUsingPositions(positions);
-
 
276
		Map<Integer, TicketCategory> categoryIdAndCategoryMap = csService
-
 
277
				.getCategoryIdAndCategoryUsingPositions(positions);
-
 
278
		Map<Integer, Region> regionIdAndRegionMap = csService.getRegionIdAndRegionMap(positions);
-
 
279
 
259
 
280
//	    Map<Integer, List<CustomRetailer>> positionIdAndpartnerRegionMap = csService
260
//	    Map<Integer, List<CustomRetailer>> positionIdAndpartnerRegionMap = csService
281
//			.getpositionIdAndpartnerRegionMap(positions);
261
//			.getpositionIdAndpartnerRegionMap(positions);
282
 
262
 
283
//	     Map<Integer, List<CustomRetailer>> addedpositionIdAndCustomRetailerMap = csService
263
//	     Map<Integer, List<CustomRetailer>> addedpositionIdAndCustomRetailerMap = csService
284
//				.getPositionCustomRetailerMap(positions);
264
//				.getPositionCustomRetailerMap(positions);
285
//		LOGGER.info("fofoIdAndCustomRetailerMap" + addedpositionIdAndCustomRetailerMap);
265
//		LOGGER.info("fofoIdAndCustomRetailerMap" + addedpositionIdAndCustomRetailerMap);
286
 
266
 
287
		model.addAttribute("start", offset + 1);
267
        model.addAttribute("start", offset + 1);
288
 
268
 
289
		model.addAttribute("positions", positions);
269
        model.addAttribute("positions", positions);
290
		model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
270
        model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
291
		model.addAttribute("categoryIdAndCategoryMap", categoryIdAndCategoryMap);
271
        model.addAttribute("categoryIdAndCategoryMap", categoryIdAndCategoryMap);
292
		model.addAttribute("regionIdAndRegionMap", regionIdAndRegionMap);
272
        model.addAttribute("regionIdAndRegionMap", regionIdAndRegionMap);
293
		// model.addAttribute("positionIdAndCustomRetailerMap",
273
        // model.addAttribute("positionIdAndCustomRetailerMap",
294
		// addedpositionIdAndCustomRetailerMap);
274
        // addedpositionIdAndCustomRetailerMap);
295
		// model.addAttribute("positionIdAndpartnerRegionMap",
275
        // model.addAttribute("positionIdAndpartnerRegionMap",
296
// positionIdAndpartnerRegionMap);
276
// positionIdAndpartnerRegionMap);
297
 
277
 
298
		return "create-position";
278
        return "create-position";
-
 
279
    }
299
	}
280
 
-
 
281
    @GetMapping(value = "/cs/position-paginated")
-
 
282
    public String positionPaginated(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) {
300
 
283
 
301
	@GetMapping(value = "/cs/position-paginated")
284
        List<Position> positions = positionRepository.selectAll(offset, limit);
302
	public String positionPaginated(HttpServletRequest request,
285
        Map<Integer, AuthUser> authUserIdAndAuthUserMap = csService.getAuthUserIdAndAuthUserMapUsingPositions(positions);
303
			@RequestParam(name = "offset", defaultValue = "0") int offset,
286
        Map<Integer, TicketCategory> categoryIdAndCategoryMap = csService.getCategoryIdAndCategoryUsingPositions(positions);
304
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) {
287
        Map<Integer, Region> regionIdAndRegionMap = csService.getRegionIdAndRegionMap(positions);
305
 
288
        /*
306
		List<Position> positions = positionRepository.selectAll(offset, limit);
289
         * Map<Integer, List<CustomRetailer>> positionIdAndpartnerRegionMap = csService
307
		Map<Integer, AuthUser> authUserIdAndAuthUserMap = csService
290
         * .getpositionIdAndpartnerRegionMap(positions);
308
				.getAuthUserIdAndAuthUserMapUsingPositions(positions);
291
         * 
309
		Map<Integer, TicketCategory> categoryIdAndCategoryMap = csService
292
         * Map<Integer, List<CustomRetailer>> addedpositionIdAndCustomRetailerMap =
310
				.getCategoryIdAndCategoryUsingPositions(positions);
293
         * csService .getPositionCustomRetailerMap(positions);
311
		Map<Integer, Region> regionIdAndRegionMap = csService.getRegionIdAndRegionMap(positions);
294
         */
312
		/*
295
 
313
		 * Map<Integer, List<CustomRetailer>> positionIdAndpartnerRegionMap = csService
296
        model.addAttribute("positions", positions);
314
		 * .getpositionIdAndpartnerRegionMap(positions);
297
        model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
315
		 * 
298
        model.addAttribute("categoryIdAndCategoryMap", categoryIdAndCategoryMap);
316
		 * Map<Integer, List<CustomRetailer>> addedpositionIdAndCustomRetailerMap =
299
        model.addAttribute("regionIdAndRegionMap", regionIdAndRegionMap);
317
		 * csService .getPositionCustomRetailerMap(positions);
300
        // model.addAttribute("positionIdAndCustomRetailerMap",
318
		 */
301
        // addedpositionIdAndCustomRetailerMap);
319
 
302
        // model.addAttribute("positionIdAndpartnerRegionMap",
320
		model.addAttribute("positions", positions);
303
        // positionIdAndpartnerRegionMap);
321
		model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
304
 
322
		model.addAttribute("categoryIdAndCategoryMap", categoryIdAndCategoryMap);
305
        return "position-paginated";
323
		model.addAttribute("regionIdAndRegionMap", regionIdAndRegionMap);
306
    }
324
		// model.addAttribute("positionIdAndCustomRetailerMap",
307
 
325
		// addedpositionIdAndCustomRetailerMap);
308
    @PostMapping(value = "/cs/createPosition")
326
		// model.addAttribute("positionIdAndpartnerRegionMap",
309
    public String createPosition(HttpServletRequest request, @RequestBody CreatePositionModel createPositionModel, Model model) throws Exception {
327
		// positionIdAndpartnerRegionMap);
310
 
328
 
311
 
329
		return "position-paginated";
312
        LOGGER.info("partnerPosition" + createPositionModel.isTicketAssigned());
330
	}
313
        Position position = positionRepository.selectPosition(createPositionModel.getAuthUserId(), createPositionModel.getCategoryId(), createPositionModel.getRegionId(), createPositionModel.getEscalationType());
331
 
314
        if (position == null) {
332
	@PostMapping(value = "/cs/createPosition")
315
            position = new Position();
333
	public String createPosition(HttpServletRequest request, @RequestBody CreatePositionModel createPositionModel,
316
            position.setAuthUserId(createPositionModel.getAuthUserId());
334
			Model model) throws Exception {
317
            position.setCategoryId(createPositionModel.getCategoryId());
335
 
318
            position.setEscalationType(createPositionModel.getEscalationType());
336
		Position position = positionRepository.selectPosition(createPositionModel.getAuthUserId(),
319
            position.setRegionId(createPositionModel.getRegionId());
337
				createPositionModel.getCategoryId(), createPositionModel.getRegionId(),
320
            position.setCreateTimestamp(LocalDateTime.now());
338
				createPositionModel.getEscalationType());
321
            position.setTicketAssignee(createPositionModel.isTicketAssigned());
339
		if (position == null) {
322
            positionRepository.persist(position);
340
			position = new Position();
323
 
341
			position.setAuthUserId(createPositionModel.getAuthUserId());
324
            for (int fofoId : createPositionModel.getFofoIds()) {
342
			position.setCategoryId(createPositionModel.getCategoryId());
325
 
343
			position.setEscalationType(createPositionModel.getEscalationType());
326
                PartnerPosition partnerPosition = new PartnerPosition();
344
			position.setRegionId(createPositionModel.getRegionId());
327
                partnerPosition.setFofoId(fofoId);
345
			position.setCreateTimestamp(LocalDateTime.now());
328
                partnerPosition.setRegionId(createPositionModel.getRegionId());
346
			positionRepository.persist(position);
329
                partnerPosition.setPositionId(position.getId());
347
 
330
                partnersPositionRepository.persist(partnerPosition);
348
			for (int fofoId : createPositionModel.getFofoIds()) {
331
                LOGGER.info("partnerPosition" + partnerPosition);
349
 
332
            }
350
				PartnerPosition partnerPosition = new PartnerPosition();
333
 
351
				partnerPosition.setFofoId(fofoId);
334
            model.addAttribute("response1", mvcResponseSender.createResponseString(true));
352
				partnerPosition.setRegionId(createPositionModel.getRegionId());
335
        } else {
353
				partnerPosition.setPositionId(position.getId());
336
            throw new ProfitMandiBusinessException("Position", createPositionModel.getAuthUserId(), "already exists!");
354
				partnersPositionRepository.persist(partnerPosition);
337
        }
355
				LOGGER.info("partnerPosition" + partnerPosition);
338
        return "response";
356
			}
339
    }
357
 
340
 
358
			model.addAttribute("response1", mvcResponseSender.createResponseString(true));
341
    @PostMapping(value = "/cs/updatePartnerPosition")
359
		} else {
342
    public String updatePartnerPosition(HttpServletRequest request, @RequestParam(name = "regionId") int regionId, @RequestBody List<Integer> selectedFofoIds, @RequestParam(name = "positionId") int positionId, Model model) throws Exception {
360
			throw new ProfitMandiBusinessException("Position", createPositionModel.getAuthUserId(), "already exists!");
343
 
361
		}
344
        partnersPositionRepository.delete(positionId);
362
		return "response";
345
        for (int fofoId : selectedFofoIds) {
363
	}
346
            PartnerPosition partnerPosition = new PartnerPosition();
364
 
347
            partnerPosition.setFofoId(fofoId);
365
	@PostMapping(value = "/cs/updatePartnerPosition")
348
            partnerPosition.setRegionId(regionId);
366
	public String updatePartnerPosition(HttpServletRequest request, @RequestParam(name = "regionId") int regionId,
349
            partnerPosition.setPositionId(positionId);
367
			@RequestBody List<Integer> selectedFofoIds, @RequestParam(name = "positionId") int positionId, Model model)
350
            partnersPositionRepository.persist(partnerPosition);
368
			throws Exception {
351
        }
369
 
352
 
370
		partnersPositionRepository.delete(positionId);
353
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
371
		for (int fofoId : selectedFofoIds) {
354
 
372
			PartnerPosition partnerPosition = new PartnerPosition();
355
        return "response";
373
			partnerPosition.setFofoId(fofoId);
356
    }
374
			partnerPosition.setRegionId(regionId);
357
 
375
			partnerPosition.setPositionId(positionId);
358
    @GetMapping(value = "/cs/createTicket")
376
			partnersPositionRepository.persist(partnerPosition);
359
    public String createTicket(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
377
		}
360
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
378
 
361
        List<TicketCategory> ticketCategories = csService.getAllTicketCategotyFromSubCategory();
379
		model.addAttribute("response1", mvcResponseSender.createResponseString(true));
362
        model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
380
 
363
        model.addAttribute("ticketCategories", ticketCategories);
381
		return "response";
364
        return "create-ticket";
382
	}
365
    }
383
 
366
 
384
	@GetMapping(value = "/cs/createTicket")
367
    @GetMapping(value = "/cs/getSubCategoriesByCategoryId")
385
	public String createTicket(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
368
    public String getSubCategoriesByCategoryId(HttpServletRequest request, @RequestParam(name = "categoryId", defaultValue = "0") int categoryId, Model model) {
386
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
369
        List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository.selectAll(categoryId);
387
		List<TicketCategory> ticketCategories = csService.getAllTicketCategotyFromSubCategory();
370
        LOGGER.info(ticketSubCategories);
388
		model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
371
        model.addAttribute("ticketSubCategories", ticketSubCategories);
389
		model.addAttribute("ticketCategories", ticketCategories);
372
        return "ticket-sub-categories";
390
		return "create-ticket";
373
    }
391
	}
374
 
392
 
375
 
393
	@GetMapping(value = "/cs/getSubCategoriesByCategoryId")
376
    @GetMapping(value = "/cs/getEscalationTypeByCategoryId")
394
	public String getSubCategoriesByCategoryId(HttpServletRequest request,
377
    public String getEscalationTypeByCategoryId(HttpServletRequest request, @RequestParam(name = "categoryId", defaultValue = "0") int categoryId, @RequestParam(name = "authId", defaultValue = "0") int authId, Model model) {
395
			@RequestParam(name = "categoryId", defaultValue = "0") int categoryId, Model model) {
378
        List<Position> positions = positionRepository.selectPositionbyCategoryIdAndAuthId(categoryId, authId);
396
		List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository.selectAll(categoryId);
379
        List<EscalationType> escalationTypes = new ArrayList<>();
397
		LOGGER.info(ticketSubCategories);
380
 
398
		model.addAttribute("ticketSubCategories", ticketSubCategories);
381
        if (!positions.isEmpty()) {
399
		return "ticket-sub-categories";
382
            escalationTypes = positions.stream().map(x -> x.getEscalationType()).distinct().collect(Collectors.toList());
400
	}
383
        }
401
 
384
 
402
	@PostMapping(value = "/cs/createTicket")
385
        LOGGER.info("escalationTypes {}", escalationTypes);
403
	public String createTicket(HttpServletRequest request, @RequestParam(name = "categoryId") int categoryId,
386
 
404
			@RequestParam(name = "subCategoryId") int subCategoryId, @RequestParam(name = "message") String message,
387
        model.addAttribute("escalationTypes", escalationTypes);
405
			Model model) throws Exception {
388
        return "ticket-escalationtype";
406
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
389
    }
407
		List<Ticket> tickets = ticketRepository.selectAllResolvedMarkedTicketByCreator(loginDetails.getFofoId());
390
 
408
		if (tickets.size() > 3 || tickets.size() == 3) {
391
 
409
			model.addAttribute("response1", mvcResponseSender.createResponseString(false));
392
    @GetMapping(value = "/cs/getCategoriesByAuthId")
410
		} else {
393
    public String getCategoriesByAuthId(HttpServletRequest request, @RequestParam(name = "authId", defaultValue = "0") int authId, Model model) {
411
			csService.createTicket(loginDetails.getFofoId(), categoryId, subCategoryId, message);
394
 
412
			model.addAttribute("response1", mvcResponseSender.createResponseString(true));
395
 
413
		}
396
        List<Position> positions = positionRepository.selectPositionByAuthId(authId);
414
		return "response";
397
 
415
	}
398
        LOGGER.info("positions {}", positions);
416
 
399
 
417
	@GetMapping(value = "/cs/myticket")
400
        List<TicketCategory> ticketCategories = new ArrayList<TicketCategory>();
418
	public String getTicket(HttpServletRequest request,
401
 
419
			@RequestParam(name = "orderby", defaultValue = "DESCENDING") SortOrder sortOrder,
402
        if (!positions.isEmpty()) {
420
			@RequestParam(name = "ticketStatus", defaultValue = "OPENED") TicketStatus ticketStatus,
403
 
421
			@RequestParam(name = "ticketSearchType", defaultValue = "") TicketSearchType ticketSearchType,
404
            List<Integer> categoryIds = positions.stream().map(x -> x.getCategoryId()).collect(Collectors.toList());
422
			@RequestParam(name = "searchTerm", defaultValue = "0") int searchTerm,
405
            ticketCategories = ticketCategoryRepository.selectAll(categoryIds);
423
			@RequestParam(name = "offset", defaultValue = "0") int offset,
406
        }
424
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
407
        LOGGER.info("ticketCategories {}", ticketCategories);
425
			throws ProfitMandiBusinessException {
408
        model.addAttribute("ticketCategories", ticketCategories);
426
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
409
        return "ticket-categories";
427
		List<Ticket> tickets = null;
410
    }
428
		List<TicketAssigned> ticketAssigneds = null;
411
 
429
		long size = 0;
412
    @PostMapping(value = "/cs/createTicket")
430
		Map<Integer, AuthUser> authUserIdAndAuthUserMap = null;
413
    public String createTicket(HttpServletRequest request, @RequestParam(name = "categoryId") int categoryId, @RequestParam(name = "subCategoryId") int subCategoryId, @RequestParam(name = "message") String message, Model model) throws Exception {
431
		if (roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
414
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
432
			AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
415
        List<Ticket> tickets = ticketRepository.selectAllResolvedMarkedTicketByCreator(loginDetails.getFofoId());
433
			if (ticketSearchType == null) {
416
        if (tickets.size() > 3 || tickets.size() == 3) {
434
				if (ticketStatus.equals(TicketStatus.RESOLVED)) {
417
            model.addAttribute("response1", mvcResponseSender.createResponseString(false));
435
					tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.empty(), sortOrder, null,
418
        } else {
436
							searchTerm, offset, limit);
419
            csService.createTicket(loginDetails.getFofoId(), categoryId, subCategoryId, message);
437
					size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.empty(), null,
420
            model.addAttribute("response1", mvcResponseSender.createResponseString(true));
438
							searchTerm);
421
        }
439
				} else {
422
        return "response";
440
					tickets = ticketRepository.selectAllByAssignee(authUser.getId(),
423
    }
441
							Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, null, searchTerm, offset,
424
 
442
							limit);
425
    @GetMapping(value = "/cs/myticket")
443
					size = ticketRepository.selectAllCountByAssignee(authUser.getId(),
426
    public String getTicket(HttpServletRequest request, @RequestParam(name = "orderby", defaultValue = "DESCENDING") SortOrder sortOrder, @RequestParam(name = "ticketStatus", defaultValue = "OPENED") TicketStatus ticketStatus, @RequestParam(name = "ticketSearchType", defaultValue = "") TicketSearchType ticketSearchType, @RequestParam(name = "searchTerm", defaultValue = "0") int searchTerm, Model model) throws ProfitMandiBusinessException {
444
							Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), null, searchTerm);
427
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
445
				}
428
        List<Ticket> tickets = null;
446
 
429
        List<TicketAssigned> ticketAssigneds = null;
447
			} else {
430
        long size = 0;
448
 
431
        Map<Integer, AuthUser> authUserIdAndAuthUserMap = null;
449
				if (ticketStatus.equals(TicketStatus.RESOLVED)) {
432
        if (roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
450
					tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.empty(), sortOrder,
433
            AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
451
							ticketSearchType, searchTerm, offset, limit);
434
            if (ticketSearchType == null) {
452
					size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.empty(),
435
                if (ticketStatus.equals(TicketStatus.RESOLVED)) {
453
							ticketSearchType, searchTerm);
436
                    tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.empty(), sortOrder, null, searchTerm);
454
				} else {
437
                    size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.empty(), null, searchTerm);
455
					tickets = ticketRepository.selectAllByAssignee(authUser.getId(),
438
                } else {
456
							Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, ticketSearchType,
439
                    tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, null, searchTerm);
457
							searchTerm, offset, limit);
440
                    size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), null, searchTerm);
458
					size = ticketRepository.selectAllCountByAssignee(authUser.getId(),
441
                }
459
							Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), ticketSearchType, searchTerm);
442
 
460
				}
443
            } else {
461
			}
444
 
462
			// LOGGER.info(size + "size");
445
                if (ticketStatus.equals(TicketStatus.RESOLVED)) {
463
			if (tickets.size() > 0) {
446
                    tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.empty(), sortOrder, ticketSearchType, searchTerm);
464
				ticketAssigneds = ticketAssignedRepository
447
                    size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.empty(), ticketSearchType, searchTerm);
465
						.selectByTicketIds(tickets.stream().map(x -> x.getId()).collect(Collectors.toList()));
448
                } else {
466
				authUserIdAndAuthUserMap = csService.getAuthUserIdAndAuthUserMap(ticketAssigneds);
449
                    tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, ticketSearchType, searchTerm);
467
				Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
450
                    size = ticketRepository.selectAllCountByAssignee(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), ticketSearchType, searchTerm);
468
				model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
451
                }
469
			}
452
            }
470
 
453
            // LOGGER.info(size + "size");
471
		} else {
454
            if (tickets.size() > 0) {
472
			tickets = ticketRepository.selectAllByCreator(loginDetails.getFofoId(),
455
                ticketAssigneds = ticketAssignedRepository.selectByTicketIds(tickets.stream().map(x -> x.getId()).collect(Collectors.toList()));
473
					Optional.of(TicketStatus.OPENED.equals(ticketStatus)), sortOrder, offset, limit);
456
                authUserIdAndAuthUserMap = csService.getAuthUserIdAndAuthUserMap(ticketAssigneds);
474
			size = ticketRepository.selectAllCountByCreator(loginDetails.getFofoId(),
457
                Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
475
					Optional.of(TicketStatus.OPENED.equals(ticketStatus)));
458
                model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
476
		}
459
            }
477
		authUserIdAndAuthUserMap = csService.getTicketIdAndAuthUserMapUsingTickets(tickets);
460
 
478
 
461
        } else {
479
		if (size < limit) {
462
            tickets = ticketRepository.selectAllByCreator(loginDetails.getFofoId(), Optional.of(TicketStatus.OPENED.equals(ticketStatus)), sortOrder);
480
			model.addAttribute("end", offset + size);
463
            size = ticketRepository.selectAllCountByCreator(loginDetails.getFofoId(), Optional.of(TicketStatus.OPENED.equals(ticketStatus)));
481
		} else {
464
        }
482
			model.addAttribute("end", offset + limit);
465
        authUserIdAndAuthUserMap = csService.getTicketIdAndAuthUserMapUsingTickets(tickets);
483
		}
466
 
484
		model.addAttribute("start", offset + 1);
467
        model.addAttribute("size", size);
485
		model.addAttribute("size", size);
468
        model.addAttribute("roleType", roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds())));
486
		model.addAttribute("roleType", roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds())));
469
 
487
		Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService
470
        List<Integer> subCategoryIds = tickets.stream().map(x -> x.getSubCategoryId()).collect(Collectors.toList());
488
				.getSubCategoryIdAndSubCategoryMap(tickets);
471
        Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService.getSubCategoryIdAndSubCategoryMap(subCategoryIds);
489
		model.addAttribute("tickets", tickets);
472
 
490
		model.addAttribute("resolved", ActivityType.RESOLVED);
473
        Map<Integer, TicketCategory> subCategoryIdAndCategoryMap = csService.getSubCategoryIdAndCategoryMap(subCategoryIds);
491
		model.addAttribute("resolved-accepted", ActivityType.RESOLVED_ACCEPTED);
474
 
492
		model.addAttribute("resolved-rejected", ActivityType.RESOLVED_REJECTED);
475
        List<Integer> ticketIds = tickets.stream().map(x -> x.getId()).collect(Collectors.toList());
493
		model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
476
 
494
		model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
477
        Map<Integer, List<Activity>> activityMap = new HashMap<Integer, List<Activity>>();
495
		model.addAttribute("ticketStatusValues", TicketStatus.values());
478
 
496
		model.addAttribute("orderByValues", SortOrder.values());
479
        if (!ticketIds.isEmpty()) {
497
		model.addAttribute("selectedticketStatus", ticketStatus);
480
            activityMap = activityRepository.selectAll(ticketIds).stream().collect(Collectors.groupingBy(x -> x.getTicketId()));
498
		model.addAttribute("selectedorderby", sortOrder);
481
 
499
		model.addAttribute("ticketSearchTypes", TicketSearchType.values());
482
        }
500
		model.addAttribute("ticketSearchType", ticketSearchType);
483
 
501
		model.addAttribute("searchTerm", searchTerm);
484
 
502
		return "ticket";
485
        model.addAttribute("tickets", tickets);
503
	}
486
        model.addAttribute("resolved", ActivityType.RESOLVED);
504
 
487
        model.addAttribute("resolved-accepted", ActivityType.RESOLVED_ACCEPTED);
505
	@GetMapping(value = "/cs/myticketPaginated")
488
        model.addAttribute("resolved-rejected", ActivityType.RESOLVED_REJECTED);
506
	public String getMyTicketPaginated(HttpServletRequest request,
489
        model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
507
			@RequestParam(name = "orderby", defaultValue = "DESCENDING") SortOrder sortOrder,
490
        model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
508
			@RequestParam(name = "ticketStatus", defaultValue = "OPENED") TicketStatus ticketStatus,
491
 
509
			@RequestParam(name = "ticketSearchType", defaultValue = "") TicketSearchType ticketSearchType,
492
        model.addAttribute("subCategoryIdAndCategoryMap", subCategoryIdAndCategoryMap);
510
			@RequestParam(name = "searchTerm", defaultValue = "0") int searchTerm,
493
        model.addAttribute("activityMap", activityMap);
511
			@RequestParam(name = "offset", defaultValue = "0") int offset,
494
 
512
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
495
        model.addAttribute("ticketStatusValues", TicketStatus.values());
513
			throws ProfitMandiBusinessException {
496
        model.addAttribute("orderByValues", SortOrder.values());
514
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
497
        model.addAttribute("selectedticketStatus", ticketStatus);
515
		List<Ticket> tickets = null;
498
        model.addAttribute("selectedorderby", sortOrder);
516
		List<TicketAssigned> ticketAssigneds = null;
499
        model.addAttribute("ticketSearchTypes", TicketSearchType.values());
517
 
500
        model.addAttribute("ticketSearchType", ticketSearchType);
518
		Map<Integer, AuthUser> authUserIdAndAuthUserMap = null;
501
        model.addAttribute("searchTerm", searchTerm);
519
 
502
        return "ticket";
520
		if (roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
503
    }
521
			AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
504
 
522
			if (ticketSearchType == null) {
505
 
523
				if (ticketStatus.equals(TicketStatus.RESOLVED)) {
506
    @GetMapping(value = "/cs/getActivities")
524
					tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.empty(), sortOrder, null,
507
    public String getActivity(HttpServletRequest request, @RequestParam(name = "ticketId", defaultValue = "0") int ticketId, Model model) throws Exception {
525
							searchTerm, offset, limit);
508
        List<Activity> allactivities = activityRepository.selectAll(ticketId);
526
				} else {
509
        List<List<ActivityAttachment>> activityAttachments = allactivities.stream().map(x -> x.getActivityAttachment()).collect(Collectors.toList());
527
					tickets = ticketRepository.selectAllByAssignee(authUser.getId(),
510
        for (List<ActivityAttachment> aA : activityAttachments) {
528
							Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, null, searchTerm, offset,
511
            // List<ActivityAttachment> documentId = aA.stream().map(x ->
529
							limit);
512
            // x).collect(Collectors.toList());
530
				}
513
            for (ActivityAttachment attachment : aA) {
531
 
514
                Document document = documentRepository.selectById(attachment.getDocumentId());
532
			} else {
515
                attachment.setDocumentName(document.getDisplayName());
533
 
516
                activityAttachmentRepository.persist(attachment);
534
				if (ticketStatus.equals(TicketStatus.RESOLVED)) {
517
            }
535
					tickets = ticketRepository.selectAllByAssignee(authUser.getId(), Optional.empty(), sortOrder,
518
        }
536
							ticketSearchType, searchTerm, offset, limit);
519
        List<Activity> activities = null;
537
				} else {
520
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
538
					tickets = ticketRepository.selectAllByAssignee(authUser.getId(),
521
        if (roleManager.isAdmin(loginDetails.getRoleIds())) {
539
							Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), sortOrder, ticketSearchType,
522
            Set<Integer> authUserIds = allactivities.stream().map(x -> x.getCreatedBy()).collect(Collectors.toSet());
540
							searchTerm, offset, limit);
523
            List<AuthUser> users = authRepository.selectAllAuthUserByIds(new ArrayList<>(authUserIds));
541
				}
524
            Map<Integer, String> authUserNameMap = users.stream().collect(Collectors.toMap(AuthUser::getId, x -> x.getFirstName() + " " + x.getLastName()));
542
			}
525
            allactivities.stream().forEach(x -> x.setName(authUserNameMap.get(x.getCreatedBy())));
543
			ticketAssigneds = ticketAssignedRepository
526
            activities = allactivities;
544
					.selectByTicketIds(tickets.stream().map(x -> x.getId()).collect(Collectors.toList()));
527
        } else {
545
			authUserIdAndAuthUserMap = csService.getAuthUserIdAndAuthUserMap(ticketAssigneds);
528
            activities = allactivities.stream().filter(x -> ActivityType.PARTNER_ACTIVITIES.contains(x.getType())).collect(Collectors.toList());
546
			Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
529
        }
547
			model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
530
        if (activities == null) {
548
		} else {
531
            throw new ProfitMandiBusinessException("Activity", ticketId, "No Activity Found");
549
			tickets = ticketRepository.selectAllByCreator(loginDetails.getFofoId(),
532
        }
550
					Optional.of(TicketStatus.OPENED.equals(ticketStatus)), sortOrder, offset, limit);
533
        model.addAttribute("response1", mvcResponseSender.createResponseString(activities));
551
			authUserIdAndAuthUserMap = csService.getTicketIdAndAuthUserMapUsingTickets(tickets);
534
        return "response";
552
		}
535
 
553
		model.addAttribute("roleType", roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds())));
536
    }
554
		Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService
537
 
555
				.getSubCategoryIdAndSubCategoryMap(tickets);
538
    @PostMapping(value = "/cs/createActivity")
556
		model.addAttribute("tickets", tickets);
539
    public String createActivity(HttpServletRequest request, @RequestParam(name = "ticketId", defaultValue = "0") int ticketId, @RequestParam(name = "assigneeId", defaultValue = "0") int assigneeId, @RequestParam(name = "internal", defaultValue = "true") boolean internal, @RequestParam(name = "message", defaultValue = "") String message, @RequestBody List<Integer> documentIds,
557
		model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
540
 
558
		model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
541
                                 Model model) throws Exception {
559
		model.addAttribute("resolved", ActivityType.RESOLVED);
542
 
560
		model.addAttribute("resolved-accepted", ActivityType.RESOLVED_ACCEPTED);
543
        LOGGER.info("documentIds" + documentIds);
561
		model.addAttribute("resolved-rejected", ActivityType.RESOLVED_REJECTED);
544
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
562
		return "ticket-paginated";
545
        Ticket ticket = ticketRepository.selectById(ticketId);
563
	}
546
        List<TicketAssigned> ticketAssignedList = ticketAssignedRepository.selectByTicketIds(Arrays.asList(ticketId));
564
 
547
        List<Integer> authUserIds = ticketAssignedList.stream().map(x -> x.getAssineeId()).collect(Collectors.toList());
565
	@GetMapping(value = "/cs/getActivities")
548
        authUserIds.add(ticketAssignedList.get(ticketAssignedList.size() - 1).getManagerId());
566
	public String getActivity(HttpServletRequest request,
549
        Map<Integer, AuthUser> authUsersMap = authRepository.selectAllAuthUserByIds(authUserIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
567
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId, Model model) throws Exception {
550
        if (ticket.getCloseTimestamp() == null) {
568
		List<Activity> allactivities = activityRepository.selectAll(ticketId);
551
            Activity activity = new Activity();
569
		List<List<ActivityAttachment>> activityAttachments = allactivities.stream().map(x -> x.getActivityAttachment())
552
            activity.setCreatedBy(0);
570
				.collect(Collectors.toList());
553
            activity.setCreateTimestamp(LocalDateTime.now());
571
		for (List<ActivityAttachment> aA : activityAttachments) {
554
            String subject = null;
572
			// List<ActivityAttachment> documentId = aA.stream().map(x ->
555
            String mailMessage = null;
573
			// x).collect(Collectors.toList());
556
            activity.setMessage(message);
574
			for (ActivityAttachment attachment : aA) {
557
            if (!roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
575
				Document document = documentRepository.selectById(attachment.getDocumentId());
558
                CustomRetailer customRetailer = retailerService.getFofoRetailers(true).get(loginDetails.getFofoId());
576
				attachment.setDocumentName(document.getDisplayName());
559
                activity.setType(ActivityType.COMMUNICATION_IN);
577
				activityAttachmentRepository.persist(attachment);
560
                subject = String.format("Ticket Update #%s by franchisee %s", ticket.getId(), customRetailer.getBusinessName() + "(" + customRetailer.getCode() + ")");
578
			}
561
                mailMessage = String.format("Franchisee message - %s", message);
579
		}
562
            } else {
580
		List<Activity> activities = null;
563
                AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
581
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
564
                activity.setCreatedBy(authUser.getId());
582
		if (roleManager.isAdmin(loginDetails.getRoleIds())) {
565
                authUsersMap.remove(authUser.getId());
583
			Set<Integer> authUserIds = allactivities.stream().map(x -> x.getCreatedBy()).collect(Collectors.toSet());
566
                subject = String.format("Ticket Update #%s by %s", ticket.getId(), authUser.getName());
584
			List<AuthUser> users = authRepository.selectAllAuthUserByIds(new ArrayList<>(authUserIds));
567
                mailMessage = String.format("%s's message - %s", authUser.getFirstName(), message);
585
			Map<Integer, String> authUserNameMap = users.stream()
568
                if (internal) {
586
					.collect(Collectors.toMap(AuthUser::getId, x -> x.getFirstName() + " " + x.getLastName()));
569
                    activity.setType(ActivityType.COMMUNICATION_INTERNAL);
587
			allactivities.stream().forEach(x -> x.setName(authUserNameMap.get(x.getCreatedBy())));
570
                    // String subject = String.format(ACTIVITY_SUBJECT, ticket.getId());
588
			activities = allactivities;
571
                } else {
589
		} else {
572
                    String updatedBy = "SD Team";
590
			activities = allactivities.stream().filter(x -> ActivityType.PARTNER_ACTIVITIES.contains(x.getType()))
573
                    CustomRetailer customRetailer = retailerService.getFofoRetailers(true).get(ticket.getFofoId());
591
					.collect(Collectors.toList());
574
                    subject = String.format("Ticket Update #%s by %s", ticket.getId(), updatedBy);
592
		}
575
                    String partnerMessage = String.format("%s's message - %s", updatedBy, message);
593
		if (activities == null) {
576
                    this.activityRelatedMail(customRetailer.getEmail(), null, "subject", partnerMessage);
594
			throw new ProfitMandiBusinessException("Activity", ticketId, "No Activity Found");
577
                    activity.setType(ActivityType.COMMUNICATION_OUT);
595
		}
578
                }
596
		model.addAttribute("response1", mvcResponseSender.createResponseString(activities));
579
            }
597
		return "response";
580
            activityRepository.persist(activity);
598
 
581
 
599
	}
582
            for (Integer documentId : documentIds) {
600
 
583
                ActivityAttachment activityAttachment = new ActivityAttachment();
601
	@PostMapping(value = "/cs/createActivity")
584
                activityAttachment.setActivityId(activity.getId());
602
	public String createActivity(HttpServletRequest request,
585
                activityAttachment.setDocumentId(documentId);
603
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId,
586
                activityAttachmentRepository.persist(activityAttachment);
604
			@RequestParam(name = "assigneeId", defaultValue = "0") int assigneeId,
587
            }
605
			@RequestParam(name = "internal", defaultValue = "true") boolean internal,
588
 
606
			@RequestParam(name = "message", defaultValue = "") String message, @RequestBody List<Integer> documentIds,
589
            csService.addActivity(ticket, activity);
607
 
590
            AuthUser authUser = authUsersMap.remove(authUserIds.get(0));
608
			Model model) throws Exception {
591
            if (authUser == null) {
609
 
592
                authUser = authUsersMap.remove(authUserIds.get(1));
610
		LOGGER.info("documentIds" + documentIds);
593
            }
611
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
594
            model.addAttribute("response1", mvcResponseSender.createResponseString(authUser));
612
		Ticket ticket = ticketRepository.selectById(ticketId);
595
            String[] cc = authUsersMap.entrySet().stream().map(x -> x.getValue().getEmailId()).toArray(String[]::new);
613
		List<TicketAssigned> ticketAssignedList = ticketAssignedRepository.selectByTicketIds(Arrays.asList(ticketId));
596
            this.activityRelatedMail(authUser.getEmailId(), cc, subject, mailMessage);
614
		List<Integer> authUserIds = ticketAssignedList.stream().map(x -> x.getAssineeId()).collect(Collectors.toList());
597
        } else {
615
		authUserIds.add(ticketAssignedList.get(ticketAssignedList.size() - 1).getManagerId());
598
            throw new ProfitMandiBusinessException("Ticket", ticket.getId(), "Already closed ticket");
616
		Map<Integer, AuthUser> authUsersMap = authRepository.selectAllAuthUserByIds(authUserIds).stream()
599
        }
617
				.collect(Collectors.toMap(x -> x.getId(), x -> x));
600
        return "response";
618
		if (ticket.getCloseTimestamp() == null) {
601
    }
619
			Activity activity = new Activity();
602
 
620
			activity.setCreatedBy(0);
603
    private void activityRelatedMail(String to, String[] cc, String subject, String message) throws ProfitMandiBusinessException {
621
			activity.setCreateTimestamp(LocalDateTime.now());
604
        try {
622
			String subject = null;
605
            Utils.sendMailWithAttachments(mailSender, to, cc, subject, message, null);
623
			String mailMessage = null;
606
        } catch (Exception e) {
624
			activity.setMessage(message);
607
            throw new ProfitMandiBusinessException("Ticket Activity", to, "Could not send ticket activity mail");
625
			if (!roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
608
        }
626
				CustomRetailer customRetailer = retailerService.getFofoRetailers(true).get(loginDetails.getFofoId());
609
    }
627
				activity.setType(ActivityType.COMMUNICATION_IN);
610
 
628
				subject = String.format("Ticket Update #%s by franchisee %s", ticket.getId(),
611
    @PostMapping(value = "/cs/closeTicket")
629
						customRetailer.getBusinessName() + "(" + customRetailer.getCode() + ")");
612
    public String closeTicket(HttpServletRequest request, @RequestParam(name = "ticketId", defaultValue = "0") int ticketId, @RequestParam(name = "happyCode") String happyCode, Model model) throws Exception {
630
				mailMessage = String.format("Franchisee message - %s", message);
613
        Ticket ticket = ticketRepository.selectById(ticketId);
631
			} else {
614
        if (ticket.getHappyCode().equals(happyCode)) {
632
				AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
615
            ticket.setCloseTimestamp(LocalDateTime.now());
633
				activity.setCreatedBy(authUser.getId());
616
            ticketRepository.persist(ticket);
634
				authUsersMap.remove(authUser.getId());
617
            model.addAttribute("response1", mvcResponseSender.createResponseString(true));
635
				subject = String.format("Ticket Update #%s by %s", ticket.getId(), authUser.getName());
618
        } else {
636
				mailMessage = String.format("%s's message - %s", authUser.getFirstName(), message);
619
            throw new ProfitMandiBusinessException("Ticket", ticketId, "Happy Code can't match");
637
				if (internal) {
620
        }
638
					activity.setType(ActivityType.COMMUNICATION_INTERNAL);
621
        return "response";
639
					// String subject = String.format(ACTIVITY_SUBJECT, ticket.getId());
622
    }
640
				} else {
623
 
641
					String updatedBy = "SD Team";
624
    @GetMapping(value = "/cs/managerTicket")
642
					CustomRetailer customRetailer = retailerService.getFofoRetailers(true).get(ticket.getFofoId());
625
    public String getManagerTickets(HttpServletRequest request, @RequestParam(name = "orderby", defaultValue = "DESCENDING") SortOrder sortOrder, @RequestParam(name = "ticketStatus", defaultValue = "OPENED") TicketStatus ticketStatus, @RequestParam(name = "ticketSearchType", defaultValue = "") TicketSearchType ticketSearchType, @RequestParam(name = "searchTerm", defaultValue = "0") int searchTerm, Model model) throws ProfitMandiBusinessException {
643
					subject = String.format("Ticket Update #%s by %s", ticket.getId(), updatedBy);
626
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
644
					String partnerMessage = String.format("%s's message - %s", updatedBy, message);
627
        long size = 0;
645
					this.activityRelatedMail(customRetailer.getEmail(), null, "subject", partnerMessage);
628
        AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
646
					activity.setType(ActivityType.COMMUNICATION_OUT);
629
        List<Ticket> tickets = null;
647
				}
630
        Map<Integer, List<AuthUser>> authUserListMap = null;
648
			}
631
        if (ticketSearchType == null) {
649
			activityRepository.persist(activity);
632
            if (ticketStatus.equals(TicketStatus.RESOLVED)) {
650
 
633
                tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder, Optional.empty(), null, searchTerm);
651
			for (Integer documentId : documentIds) {
634
                size = ticketRepository.selectAllCountByManagerTicket(authUser.getId(), Optional.empty(), null, 0);
652
				ActivityAttachment activityAttachment = new ActivityAttachment();
635
            } else {
653
				activityAttachment.setActivityId(activity.getId());
636
                tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder, Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), null, searchTerm);
654
				activityAttachment.setDocumentId(documentId);
637
                size = ticketRepository.selectAllCountByManagerTicket(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), null, 0);
655
				activityAttachmentRepository.persist(activityAttachment);
638
            }
656
			}
639
        } else {
657
 
640
            if (ticketStatus.equals(TicketStatus.RESOLVED)) {
658
			csService.addActivity(ticket, activity);
641
                tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder, Optional.empty(), ticketSearchType, searchTerm);
659
			AuthUser authUser = authUsersMap.remove(authUserIds.get(0));
642
                size = ticketRepository.selectAllCountByManagerTicket(authUser.getId(), Optional.empty(), ticketSearchType, searchTerm);
660
			if (authUser == null) {
643
            } else {
661
				authUser = authUsersMap.remove(authUserIds.get(1));
644
                tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder, Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), ticketSearchType, searchTerm);
662
			}
645
                size = ticketRepository.selectAllCountByManagerTicket(authUser.getId(), Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), ticketSearchType, searchTerm);
663
			model.addAttribute("response1", mvcResponseSender.createResponseString(authUser));
646
            }
664
			String[] cc = authUsersMap.entrySet().stream().map(x -> x.getValue().getEmailId()).toArray(String[]::new);
647
 
665
			this.activityRelatedMail(authUser.getEmailId(), cc, subject, mailMessage);
648
        }
666
		} else {
649
        authUserListMap = csService.getAssignedAuthList(tickets);
667
			throw new ProfitMandiBusinessException("Ticket", ticket.getId(), "Already closed ticket");
650
 
668
		}
651
        if (tickets.size() > 0) {
669
		return "response";
652
            Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
670
	}
653
            model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
671
 
654
        }
672
	private void activityRelatedMail(String to, String[] cc, String subject, String message)
655
 
673
			throws ProfitMandiBusinessException {
656
        model.addAttribute("size", size);
674
		try {
657
        model.addAttribute("tickets", tickets);
675
			Utils.sendMailWithAttachments(mailSender, to, cc, subject, message, null);
658
 
676
		} catch (Exception e) {
659
        List<Integer> subCategoryIds = tickets.stream().map(x -> x.getSubCategoryId()).collect(Collectors.toList());
677
			throw new ProfitMandiBusinessException("Ticket Activity", to, "Could not send ticket activity mail");
660
        Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService.getSubCategoryIdAndSubCategoryMap(subCategoryIds);
678
		}
661
 
679
	}
662
        Map<Integer, TicketCategory> subCategoryIdAndCategoryMap = csService.getSubCategoryIdAndCategoryMap(subCategoryIds);
680
 
663
 
681
	@PostMapping(value = "/cs/closeTicket")
664
        List<Integer> ticketIds = tickets.stream().map(x -> x.getId()).collect(Collectors.toList());
682
	public String closeTicket(HttpServletRequest request,
665
        Map<Integer, List<Activity>> activityMap = new HashMap<>();
683
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId,
666
 
684
			@RequestParam(name = "happyCode") String happyCode, Model model) throws Exception {
667
        if (!ticketIds.isEmpty()) {
685
		Ticket ticket = ticketRepository.selectById(ticketId);
668
            activityMap = activityRepository.selectAll(ticketIds).stream().collect(Collectors.groupingBy(x -> x.getTicketId()));
686
		if (ticket.getHappyCode().equals(happyCode)) {
669
 
687
			ticket.setCloseTimestamp(LocalDateTime.now());
670
        }
688
			ticketRepository.persist(ticket);
671
        model.addAttribute("ticketStatusValues", TicketStatus.values());
689
			model.addAttribute("response1", mvcResponseSender.createResponseString(true));
672
        model.addAttribute("orderByValues", SortOrder.values());
690
		} else {
673
        model.addAttribute("selectedticketStatus", ticketStatus);
691
			throw new ProfitMandiBusinessException("Ticket", ticketId, "Happy Code can't match");
674
        model.addAttribute("selectedorderby", sortOrder);
692
		}
675
        model.addAttribute("tickets", tickets);
693
		return "response";
676
        model.addAttribute("ticketSearchTypes", TicketSearchType.values());
694
	}
677
        model.addAttribute("ticketSearchType", ticketSearchType);
695
 
678
        model.addAttribute("searchTerm", searchTerm);
696
	@GetMapping(value = "/cs/managerTicket")
679
        model.addAttribute("authUserListMap", authUserListMap);
697
	public String getManagerTickets(HttpServletRequest request,
680
        model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
698
			@RequestParam(name = "orderby", defaultValue = "DESCENDING") SortOrder sortOrder,
681
 
699
			@RequestParam(name = "ticketStatus", defaultValue = "OPENED") TicketStatus ticketStatus,
682
        model.addAttribute("subCategoryIdAndCategoryMap", subCategoryIdAndCategoryMap);
700
			@RequestParam(name = "ticketSearchType", defaultValue = "") TicketSearchType ticketSearchType,
683
 
701
			@RequestParam(name = "searchTerm", defaultValue = "0") int searchTerm,
684
        model.addAttribute("activityMap", activityMap);
702
			@RequestParam(name = "offset", defaultValue = "0") int offset,
685
 
703
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
686
        return "managerTicket";
704
			throws ProfitMandiBusinessException {
687
    }
705
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
688
 
706
		long size = 0;
689
 
707
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
690
    @GetMapping(value = "/cs/edit-ticket")
708
		List<Ticket> tickets = null;
691
    public String getEditTicket(HttpServletRequest request, @RequestParam(name = "ticketId", defaultValue = "0") int ticketId, Model model) {
709
		Map<Integer, List<AuthUser>> authUserListMap = null;
692
        Ticket ticket = ticketRepository.selectById(ticketId);
710
		if (ticketSearchType == null) {
693
        List<TicketCategory> ticketCategories = csService.getAllTicketCategotyFromSubCategory();
711
			if (ticketStatus.equals(TicketStatus.RESOLVED)) {
694
        TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.selectById(ticket.getSubCategoryId());
712
				tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder, Optional.empty(), null,
695
        List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository.selectAll(ticketSubCategory.getCategoryId());
713
						searchTerm, offset, limit);
696
        List<AuthUser> authUsers = authRepository.selectAllActiveUser();
714
				size = ticketRepository.selectAllCountByManagerTicket(authUser.getId(), Optional.empty(), null, 0);
697
        model.addAttribute("ticket", ticket);
715
			} else {
698
        model.addAttribute("ticketCategories", ticketCategories);
716
				tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder,
699
        model.addAttribute("ticketSubCategories", ticketSubCategories);
717
						Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), null, searchTerm, offset, limit);
700
        model.addAttribute("ticketSubCategory", ticketSubCategory);
718
				size = ticketRepository.selectAllCountByManagerTicket(authUser.getId(),
701
        model.addAttribute("authUsers", authUsers);
719
						Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), null, 0);
702
        return "edit-ticket-modal";
720
			}
703
    }
721
		} else {
704
 
722
			if (ticketStatus.equals(TicketStatus.RESOLVED)) {
705
    @PostMapping(value = "/cs/edit-ticket")
723
				tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder, Optional.empty(),
706
    public String editTicket(HttpServletRequest request, @RequestParam(name = "ticketId", defaultValue = "0") int ticketId, @RequestParam(name = "subCategoryId", defaultValue = "0") int subCategoryId, @RequestParam(name = "categoryId", defaultValue = "0") int categoryId, @RequestParam(name = "authUserId", defaultValue = "0") int authUserId, @RequestParam(name = "escalationType", defaultValue = "L1") EscalationType escalationType, Model model) throws Exception {
724
						ticketSearchType, searchTerm, offset, limit);
707
        LOGGER.info("Ticket Id {}, CategoryId {}, SubCategory Id {} authUserId {}", ticketId, categoryId, subCategoryId, authUserId);
725
				size = ticketRepository.selectAllCountByManagerTicket(authUser.getId(), Optional.empty(),
708
        Ticket ticket = ticketRepository.selectById(ticketId);
726
						ticketSearchType, searchTerm);
709
        csService.updateTicket(categoryId, subCategoryId, ticket, authUserId, escalationType);
727
			} else {
710
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
728
				tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder,
711
        return "response";
729
						Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), ticketSearchType, searchTerm, offset,
712
 
730
						limit);
713
    }
731
				size = ticketRepository.selectAllCountByManagerTicket(authUser.getId(),
714
 
732
						Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), ticketSearchType, searchTerm);
715
    @PostMapping(value = "/cs/changeTicketAssignee")
733
			}
716
    public String changeTicketAssignee(HttpServletRequest request, @RequestParam(name = "positionId", defaultValue = "0") int positionId, Model model) throws Exception {
734
 
717
        Position position = positionRepository.selectById(positionId);
735
		}
718
        if (position.isTicketAssignee()) {
736
		authUserListMap = csService.getAssignedAuthList(tickets);
719
            position.setTicketAssignee(false);
737
 
720
        } else {
738
		if (tickets.size() > 0) {
721
            position.setTicketAssignee(true);
739
			Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
722
        }
740
			model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
723
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
741
		}
724
        return "response";
742
		if (size < limit) {
725
    }
743
			model.addAttribute("end", offset + size);
726
 
744
		} else {
727
 
745
			model.addAttribute("end", offset + limit);
728
    @DeleteMapping(value = "/cs/removePosition")
746
		}
729
    public String removePosition(HttpServletRequest request, @RequestParam(name = "positionId", defaultValue = "0") int positionId, Model model) throws Exception {
747
		model.addAttribute("start", offset + 1);
730
        positionRepository.delete(positionId);
748
		model.addAttribute("size", size);
731
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
749
		model.addAttribute("tickets", tickets);
732
        return "response";
750
 
733
    }
751
		Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService
734
 
752
				.getSubCategoryIdAndSubCategoryMap(tickets);
735
    @PostMapping(value = "/cs/create-last-activity")
753
		model.addAttribute("ticketStatusValues", TicketStatus.values());
736
    public String createlastActivity(HttpServletRequest request, @RequestParam(name = "ticketId") int ticketId, @RequestParam(name = "lastactivity") ActivityType lastActivity, Model model) throws Exception {
754
		model.addAttribute("orderByValues", SortOrder.values());
737
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
755
		model.addAttribute("selectedticketStatus", ticketStatus);
738
        Ticket ticket = ticketRepository.selectById(ticketId);
756
		model.addAttribute("selectedorderby", sortOrder);
739
        Activity activity = new Activity();
757
		model.addAttribute("tickets", tickets);
740
        String subject = String.format(ACTIVITY_SUBJECT, ticket.getId());
758
		model.addAttribute("ticketSearchTypes", TicketSearchType.values());
741
        if (roleManager.isAdmin(loginDetails.getRoleIds())) {
759
		model.addAttribute("ticketSearchType", ticketSearchType);
742
            ticket.setLastActivity(lastActivity);
760
		model.addAttribute("searchTerm", searchTerm);
743
            String to = retailerService.getFofoRetailer(ticket.getFofoId()).getEmail();
761
		model.addAttribute("authUserListMap", authUserListMap);
744
            String message = String.format(PARTNER_RESOLVED_TICKET_MAIL, ticketId, "REOPEN");
762
		model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
745
            activity.setMessage(message);
763
		return "managerTicket";
746
            activity.setCreatedBy(authRepository.selectByEmailOrMobile(loginDetails.getEmailId()).getId());
764
	}
747
            activity.setTicketId(ticketId);
765
 
748
            activity.setCreateTimestamp(LocalDateTime.now());
766
	@GetMapping(value = "/cs/managerTicket-paginated")
749
            activity.setType(ActivityType.COMMUNICATION_OUT);
767
	public String getManagerTicketsPaginated(HttpServletRequest request,
750
            this.activityRelatedMail(to, null, subject, message);
768
			@RequestParam(name = "orderby", defaultValue = "DESCENDING") SortOrder sortOrder,
751
        } else {
769
			@RequestParam(name = "ticketStatus", defaultValue = "OPENED") TicketStatus ticketStatus,
752
            if (ActivityType.RESOLVED_ACCEPTED == lastActivity) {
770
			@RequestParam(name = "ticketSearchType", defaultValue = "") TicketSearchType ticketSearchType,
753
                ticket.setLastActivity(lastActivity);
771
			@RequestParam(name = "searchTerm", defaultValue = "0") int searchTerm,
754
                ticket.setCloseTimestamp(LocalDateTime.now());
772
			@RequestParam(name = "offset", defaultValue = "0") int offset,
755
                activity.setMessage(ActivityType.RESOLVED_ACCEPTED.toString());
773
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
756
                activity.setCreatedBy(0);
774
			throws ProfitMandiBusinessException {
757
                activity.setTicketId(ticketId);
775
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
758
                activity.setType(ActivityType.COMMUNICATION_IN);
776
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
759
                activity.setCreateTimestamp(LocalDateTime.now());
777
		Map<Integer, List<AuthUser>> authUserListMap = null;
760
            } else {
778
		List<Ticket> tickets = null;
761
                String message = String.format(INTERNAL_REOPEN_MAIL, ticketId, retailerService.getFofoRetailer(loginDetails.getFofoId()).getBusinessName());
779
		if (ticketSearchType == null) {
762
                String to = authRepository.selectById(ticket.getL1AuthUser()).getEmailId();
780
			if (ticketStatus.equals(TicketStatus.RESOLVED)) {
763
                String[] ccTo = authRepository.selectAllAuthUserByIds(Arrays.asList(ticket.getL2AuthUser(), ticket.getL3AuthUser(), ticket.getL4AuthUser(), ticket.getL5AuthUser())).stream().map(x -> x.getEmailId()).toArray(String[]::new);
781
				tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder, Optional.empty(), null,
764
                ticket.setLastActivity(lastActivity);
782
						searchTerm, offset, limit);
765
                ticket.setUpdateTimestamp(LocalDateTime.now());
783
 
766
                ticketAssignedRepository.deleteByTicketId(ticketId);
784
			} else {
767
                TicketAssigned ticketAssigned = new TicketAssigned();
785
				tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder,
768
                ticketAssigned.setAssineeId(ticket.getL1AuthUser());
786
						Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), null, searchTerm, offset, limit);
769
                ticketAssigned.setTicketId(ticketId);
787
 
770
                ticketAssignedRepository.persist(ticketAssigned);
788
			}
771
                activity.setMessage(INTERNAL_REOPEN_ACTIVITY_MESSAGE);
789
		} else {
772
                activity.setCreatedBy(0);
790
			if (ticketStatus.equals(TicketStatus.RESOLVED)) {
773
                activity.setTicketId(ticketId);
791
				tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder, Optional.empty(),
774
                activity.setType(ActivityType.COMMUNICATION_IN);
792
						ticketSearchType, searchTerm, offset, limit);
775
                activity.setCreateTimestamp(LocalDateTime.now());
793
 
776
                this.activityRelatedMail(to, ccTo, subject, message);
794
			} else {
777
                this.activityRelatedMail(retailerService.getFofoRetailer(loginDetails.getFofoId()).getEmail(), null, subject, String.format(PARTNER_REOPEN, ticketId));
795
				tickets = ticketRepository.selectAllManagerTicket(authUser.getId(), sortOrder,
778
            }
796
						Optional.of(TicketStatus.CLOSED.equals(ticketStatus)), ticketSearchType, searchTerm, offset,
779
 
797
						limit);
780
        }
798
			}
781
        activityRepository.persist(activity);
799
 
782
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
800
		}
783
        return "response";
801
		authUserListMap = csService.getAssignedAuthList(tickets);
784
    }
802
		if (tickets.size() > 0) {
-
 
803
			Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
-
 
804
			model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
-
 
805
		}
-
 
806
		model.addAttribute("tickets", tickets);
-
 
807
		Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService
-
 
808
				.getSubCategoryIdAndSubCategoryMap(tickets);
-
 
809
		model.addAttribute("tickets", tickets);
-
 
810
		model.addAttribute("authUserListMap", authUserListMap);
-
 
811
		model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
-
 
812
		return "managerTicket-paginated";
-
 
813
	}
-
 
814
 
-
 
815
	@GetMapping(value = "/cs/edit-ticket")
-
 
816
	public String getEditTicket(HttpServletRequest request,
-
 
817
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId, Model model) {
-
 
818
		Ticket ticket = ticketRepository.selectById(ticketId);
-
 
819
		List<TicketCategory> ticketCategories = csService.getAllTicketCategotyFromSubCategory();
-
 
820
		TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.selectById(ticket.getSubCategoryId());
-
 
821
		List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository
-
 
822
				.selectAll(ticketSubCategory.getCategoryId());
-
 
823
		List<AuthUser> authUsers = new ArrayList<>();
-
 
824
		model.addAttribute("ticket", ticket);
-
 
825
		model.addAttribute("ticketCategories", ticketCategories);
-
 
826
		model.addAttribute("ticketSubCategories", ticketSubCategories);
-
 
827
		model.addAttribute("ticketSubCategory", ticketSubCategory);
-
 
828
		model.addAttribute("authUsers", authUsers);
-
 
829
		return "edit-ticket-modal";
-
 
830
	}
-
 
831
 
-
 
832
	@PostMapping(value = "/cs/edit-ticket")
-
 
833
	public String editTicket(HttpServletRequest request,
-
 
834
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId,
-
 
835
			@RequestParam(name = "subCategoryId", defaultValue = "0") int subCategoryId,
-
 
836
			@RequestParam(name = "categoryId", defaultValue = "0") int categoryId,
-
 
837
			@RequestParam(name = "authUserId", defaultValue = "0") int authUserId, Model model) throws Exception {
-
 
838
		LOGGER.info("Ticket Id {}, CategoryId {}, SubCategory Id {}", ticketId, categoryId, subCategoryId);
-
 
839
		Ticket ticket = ticketRepository.selectById(ticketId);
-
 
840
		csService.updateTicket(categoryId, subCategoryId, ticket);
-
 
841
		model.addAttribute("response1", mvcResponseSender.createResponseString(true));
-
 
842
		return "response";
-
 
843
 
-
 
844
	}
-
 
845
 
-
 
846
	@DeleteMapping(value = "/cs/removePosition")
-
 
847
	public String removePosition(HttpServletRequest request,
-
 
848
			@RequestParam(name = "positionId", defaultValue = "0") int positionId, Model model) throws Exception {
-
 
849
		positionRepository.delete(positionId);
-
 
850
		model.addAttribute("response1", mvcResponseSender.createResponseString(true));
-
 
851
		return "response";
-
 
852
	}
-
 
853
 
-
 
854
	@PostMapping(value = "/cs/create-last-activity")
-
 
855
	public String createlastActivity(HttpServletRequest request, @RequestParam(name = "ticketId") int ticketId,
-
 
856
			@RequestParam(name = "lastactivity") ActivityType lastActivity, Model model) throws Exception {
-
 
857
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
858
		Ticket ticket = ticketRepository.selectById(ticketId);
-
 
859
		Activity activity = new Activity();
-
 
860
		String subject = String.format(ACTIVITY_SUBJECT, ticket.getId());
-
 
861
		if (roleManager.isAdmin(loginDetails.getRoleIds())) {
-
 
862
			ticket.setLastActivity(lastActivity);
-
 
863
			String to = retailerService.getFofoRetailer(ticket.getFofoId()).getEmail();
-
 
864
			String message = String.format(PARTNER_RESOLVED_TICKET_MAIL, ticketId, "REOPEN");
-
 
865
			activity.setMessage(message);
-
 
866
			activity.setCreatedBy(authRepository.selectByEmailOrMobile(loginDetails.getEmailId()).getId());
-
 
867
			activity.setTicketId(ticketId);
-
 
868
			activity.setCreateTimestamp(LocalDateTime.now());
-
 
869
			activity.setType(ActivityType.COMMUNICATION_OUT);
-
 
870
			this.activityRelatedMail(to, null, subject, message);
-
 
871
		} else {
-
 
872
			if (ActivityType.RESOLVED_ACCEPTED == lastActivity) {
-
 
873
				ticket.setLastActivity(lastActivity);
-
 
874
				ticket.setCloseTimestamp(LocalDateTime.now());
-
 
875
				activity.setMessage(ActivityType.RESOLVED_ACCEPTED.toString());
-
 
876
				activity.setCreatedBy(0);
-
 
877
				activity.setTicketId(ticketId);
-
 
878
				activity.setType(ActivityType.COMMUNICATION_IN);
-
 
879
				activity.setCreateTimestamp(LocalDateTime.now());
-
 
880
			} else {
-
 
881
				String message = String.format(INTERNAL_REOPEN_MAIL, ticketId,
-
 
882
						retailerService.getFofoRetailer(loginDetails.getFofoId()).getBusinessName());
-
 
883
				String to = authRepository.selectById(ticket.getL1AuthUser()).getEmailId();
-
 
884
				String[] ccTo = authRepository
-
 
885
						.selectAllAuthUserByIds(Arrays.asList(ticket.getL2AuthUser(), ticket.getL3AuthUser(),
-
 
886
								ticket.getL4AuthUser(), ticket.getL5AuthUser()))
-
 
887
						.stream().map(x -> x.getEmailId()).toArray(String[]::new);
-
 
888
				ticket.setLastActivity(lastActivity);
-
 
889
				ticket.setUpdateTimestamp(LocalDateTime.now());
-
 
890
				ticketAssignedRepository.deleteByTicketId(ticketId);
-
 
891
				TicketAssigned ticketAssigned = new TicketAssigned();
-
 
892
				ticketAssigned.setAssineeId(ticket.getL1AuthUser());
-
 
893
				ticketAssigned.setTicketId(ticketId);
-
 
894
				ticketAssignedRepository.persist(ticketAssigned);
-
 
895
				activity.setMessage(INTERNAL_REOPEN_ACTIVITY_MESSAGE);
-
 
896
				activity.setCreatedBy(0);
-
 
897
				activity.setTicketId(ticketId);
-
 
898
				activity.setType(ActivityType.COMMUNICATION_IN);
-
 
899
				activity.setCreateTimestamp(LocalDateTime.now());
-
 
900
				this.activityRelatedMail(to, ccTo, subject, message);
-
 
901
				this.activityRelatedMail(retailerService.getFofoRetailer(loginDetails.getFofoId()).getEmail(), null,
-
 
902
						subject, String.format(PARTNER_REOPEN, ticketId));
-
 
903
			}
-
 
904
 
-
 
905
		}
-
 
906
		activityRepository.persist(activity);
-
 
907
		model.addAttribute("response1", mvcResponseSender.createResponseString(true));
-
 
908
		return "response";
-
 
909
	}
-
 
910
 
785
 
911
}
786
}