Subversion Repositories SmartDukaan

Rev

Rev 24543 | Rev 24559 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
24417 govind 1
package com.spice.profitmandi.web.controller;
2
 
3
import java.time.LocalDateTime;
4
import java.util.HashSet;
5
import java.util.List;
6
import java.util.Map;
7
import java.util.Optional;
24500 govind 8
import java.util.stream.Collectors;
24417 govind 9
 
10
import javax.servlet.http.HttpServletRequest;
11
 
12
import org.apache.logging.log4j.LogManager;
13
import org.apache.logging.log4j.Logger;
14
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.stereotype.Controller;
16
import org.springframework.transaction.annotation.Transactional;
17
import org.springframework.ui.Model;
24471 govind 18
import org.springframework.web.bind.annotation.DeleteMapping;
24417 govind 19
import org.springframework.web.bind.annotation.GetMapping;
20
import org.springframework.web.bind.annotation.PostMapping;
21
import org.springframework.web.bind.annotation.RequestBody;
22
import org.springframework.web.bind.annotation.RequestParam;
23
 
24
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
25
import com.spice.profitmandi.common.model.CustomRetailer;
26
import com.spice.profitmandi.dao.entity.auth.AuthUser;
27
import com.spice.profitmandi.dao.entity.cs.Activity;
28
import com.spice.profitmandi.dao.entity.cs.Position;
29
import com.spice.profitmandi.dao.entity.cs.Region;
30
import com.spice.profitmandi.dao.entity.cs.Ticket;
24500 govind 31
import com.spice.profitmandi.dao.entity.cs.TicketAssigned;
24417 govind 32
import com.spice.profitmandi.dao.entity.cs.TicketCategory;
33
import com.spice.profitmandi.dao.entity.cs.TicketSubCategory;
34
import com.spice.profitmandi.dao.entity.fofo.ActivityType;
35
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
24557 govind 36
import com.spice.profitmandi.dao.enumuration.cs.TicketStatus;
24417 govind 37
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
38
import com.spice.profitmandi.dao.repository.cs.ActivityRepository;
39
import com.spice.profitmandi.dao.repository.cs.CsService;
24557 govind 40
import com.spice.profitmandi.dao.repository.cs.PartnerRegionRepository;
24417 govind 41
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
42
import com.spice.profitmandi.dao.repository.cs.RegionRepository;
24500 govind 43
import com.spice.profitmandi.dao.repository.cs.TicketAssignedRepository;
24417 govind 44
import com.spice.profitmandi.dao.repository.cs.TicketCategoryRepository;
45
import com.spice.profitmandi.dao.repository.cs.TicketRepository;
46
import com.spice.profitmandi.dao.repository.cs.TicketSubCategoryRepository;
47
import com.spice.profitmandi.service.authentication.RoleManager;
48
import com.spice.profitmandi.service.slab.TargetSlabService;
49
import com.spice.profitmandi.service.user.RetailerService;
50
import com.spice.profitmandi.web.model.LoginDetails;
51
import com.spice.profitmandi.web.util.CookiesProcessor;
52
import com.spice.profitmandi.web.util.MVCResponseSender;
53
 
54
@Controller
55
@Transactional(rollbackFor = Throwable.class)
56
public class CsController {
57
 
58
	private static final Logger LOGGER = LogManager.getLogger(CsController.class);
59
 
60
	@Autowired
61
	private CsService csService;
62
 
63
	@Autowired
64
	private CookiesProcessor cookiesProcessor;
65
 
66
	@Autowired
67
	private TicketCategoryRepository ticketCategoryRepository;
68
 
69
	@Autowired
70
	private TicketSubCategoryRepository ticketSubCategoryRepository;
71
 
72
	@Autowired
73
	private RegionRepository regionRepository;
74
 
75
	@Autowired
76
	private TargetSlabService targetSlabService;
77
 
78
	@Autowired
79
	private RetailerService retailerService;
80
 
81
	@Autowired
82
	private MVCResponseSender mvcResponseSender;
83
 
84
	@Autowired
85
	private AuthRepository authRepository;
86
 
87
	@Autowired
88
	private PositionRepository positionRepository;
89
 
90
	@Autowired
91
	private TicketRepository ticketRepository;
92
 
93
	@Autowired
94
	private RoleManager roleManager;
95
 
96
	@Autowired
97
	private ActivityRepository activityRepository;
98
 
24500 govind 99
	@Autowired
100
	private TicketAssignedRepository ticketAssignedRepository;
24557 govind 101
 
102
	@Autowired 
103
	private PartnerRegionRepository partnerRegionRepository;
24500 govind 104
 
24417 govind 105
	@GetMapping(value = "/cs/createCategory")
106
	public String getCreateCategory(HttpServletRequest request, Model model) {
107
		List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
108
		model.addAttribute("ticketCategories", ticketCategories);
109
		return "create-ticket-category";
110
	}
111
 
112
	@PostMapping(value = "/cs/createCategory")
113
	public String createCategory(HttpServletRequest request, @RequestParam(name = "name") String name,
114
			@RequestParam(name = "description") String description, Model model) throws ProfitMandiBusinessException {
115
 
116
		TicketCategory ticketCategory = ticketCategoryRepository.selectByName(name);
117
		if (ticketCategory != null) {
118
			throw new ProfitMandiBusinessException("name", name, "already exists!");
119
		}
120
		ticketCategory = new TicketCategory();
121
		ticketCategory.setName(name);
122
		ticketCategory.setDescription(description);
123
		ticketCategoryRepository.persist(ticketCategory);
124
		return "create-ticket-category";
125
	}
126
 
127
	@GetMapping(value = "/cs/createSubCategory")
128
	public String getCreateSubCategory(HttpServletRequest request, Model model) {
129
		List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
130
		model.addAttribute("ticketCategories", ticketCategories);
131
		return "create-ticket-sub-category";
132
	}
133
 
134
	@GetMapping(value = "/cs/getSubCategoryByCategoryId")
135
	public String getSubCategoryByCategoryId(HttpServletRequest request,
136
			@RequestParam(name = "ticketCategoryId", defaultValue = "") int ticketCategoryId, Model model) {
137
		List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository.selectAll(ticketCategoryId);
138
		TicketCategory ticketCategory = ticketCategoryRepository.selectById(ticketCategoryId);
139
		model.addAttribute("ticketSubCategories", ticketSubCategories);
140
		model.addAttribute("ticketCategory", ticketCategory);
141
		return "ticket-sub-category";
142
	}
143
 
144
	@PostMapping(value = "/cs/createSubCategory")
145
	public String createSubCategory(HttpServletRequest request,
146
			@RequestParam(name = "categoryId", defaultValue = "0") int categoryId,
147
			@RequestParam(name = "name") String name, @RequestParam(name = "description") String description,
148
			Model model) throws ProfitMandiBusinessException {
149
 
150
		TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.selectTicketSubCategory(categoryId, name);
151
		if (ticketSubCategory != null) {
152
			throw new ProfitMandiBusinessException("name & categoryId", name + "  " + categoryId, "already exists!");
153
		}
154
 
155
		ticketSubCategory = new TicketSubCategory();
156
		ticketSubCategory.setcategoryId(categoryId);
157
		ticketSubCategory.setName(name);
158
		ticketSubCategory.setDescription(description);
159
		ticketSubCategoryRepository.persist(ticketSubCategory);
160
		return "create-ticket-sub-category";
161
	}
162
 
163
	@GetMapping(value = "/cs/createRegion")
164
	public String createRegion(HttpServletRequest request, Model model) {
165
		List<Region> regions = regionRepository.selectAll();
166
		model.addAttribute("regions", regions);
167
		return "create-region";
168
	}
169
 
170
	@PostMapping(value = "/cs/createRegion")
171
	public String createRegion(HttpServletRequest request, @RequestParam(name = "name") String name,
172
			@RequestParam(name = "description") String description, Model model) throws Exception {
173
		Region region = regionRepository.selectByName(name);
174
		if (region != null) {
175
			throw new ProfitMandiBusinessException("name", name, "already exists!");
176
		}
177
		region = new Region();
178
		region.setName(name);
179
		region.setDescription(description);
180
		regionRepository.persist(region);
181
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
182
		return "response";
183
	}
184
 
24557 govind 185
	@GetMapping(value = "/cs/getPartners")
186
	public String getPartners(HttpServletRequest request,@RequestParam(name="regionId",defaultValue="0")int regionId,Model model) {
187
		List<Integer> fofoIds = targetSlabService.getfofoIdsFromfofoStore();
188
		List<Integer> addedfofoIds=partnerRegionRepository.selectByRegionId(regionId).stream().map(x->x.getFofoId()).collect(Collectors.toList());
189
		Map<Integer, CustomRetailer> fofoRetailers = retailerService.getFofoRetailers(fofoIds);
190
		model.addAttribute("fofoRetailers", fofoRetailers);
191
		model.addAttribute("addedfofoIds", addedfofoIds);
192
		return "added-region-partners";
193
	}
24417 govind 194
	@GetMapping(value = "/cs/createPartnerRegion")
195
	public String createPartnerRegion(HttpServletRequest request, Model model) {
196
		List<Region> regions = regionRepository.selectAll();
197
		model.addAttribute("regions", regions);
198
		return "create-partner-region";
199
	}
200
 
201
	@PostMapping(value = "/cs/createPartnerRegion")
202
	public String createPartnerRegion(HttpServletRequest request, @RequestParam(name = "regionId") int regionId,
203
			@RequestBody List<Integer> selectedFofoIds, Model model) throws Exception {
24557 govind 204
		partnerRegionRepository.delete(regionId);
205
		LOGGER.info("successfully removed");
206
		LOGGER.info(selectedFofoIds.size());
24417 govind 207
		csService.addPartnerToRegion(regionId, selectedFofoIds);
208
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
209
		return "response";
210
	}
211
 
212
	@GetMapping(value = "/cs/createPosition")
24500 govind 213
	public String createPosition(HttpServletRequest request,
214
			@RequestParam(name = "offset", defaultValue = "0") int offset,
24471 govind 215
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) {
24417 govind 216
		List<AuthUser> authUsers = authRepository.selectAll();
217
		List<TicketCategory> ticketCategories = ticketCategoryRepository.selectAll();
218
		List<Region> regions = regionRepository.selectAll();
219
		model.addAttribute("escalationTypes", EscalationType.values());
220
		model.addAttribute("authUsers", authUsers);
221
		model.addAttribute("ticketCategories", ticketCategories);
222
		model.addAttribute("regions", regions);
24500 govind 223
 
224
		List<Position> positions = positionRepository.selectAll(offset, limit);
225
		LOGGER.info(positions);
226
		Map<Integer, AuthUser> authUserIdAndAuthUserMap = csService
227
				.getAuthUserIdAndAuthUserMapUsingPositions(positions);
228
		Map<Integer, TicketCategory> categoryIdAndCategoryMap = csService
229
				.getCategoryIdAndCategoryUsingPositions(positions);
230
		Map<Integer, Region> regionIdAndRegionMap = csService.getRegionIdAndRegionMap(positions);
231
		long size = positionRepository.selectAllCount();
232
 
24471 govind 233
		if (size < limit) {
234
			model.addAttribute("end", offset + size);
235
		} else {
236
			model.addAttribute("end", offset + limit);
237
		}
238
		model.addAttribute("start", offset + 1);
239
		model.addAttribute("size", size);
240
		model.addAttribute("positions", positions);
241
		model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
242
		model.addAttribute("categoryIdAndCategoryMap", categoryIdAndCategoryMap);
243
		model.addAttribute("regionIdAndRegionMap", regionIdAndRegionMap);
24417 govind 244
		return "create-position";
245
	}
24500 govind 246
 
24471 govind 247
	@GetMapping(value = "/cs/position-paginated")
24500 govind 248
	public String positionPaginated(HttpServletRequest request,
249
			@RequestParam(name = "offset", defaultValue = "0") int offset,
24471 govind 250
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) {
24500 govind 251
 
252
		List<Position> positions = positionRepository.selectAll(offset, limit);
253
		Map<Integer, AuthUser> authUserIdAndAuthUserMap = csService
254
				.getAuthUserIdAndAuthUserMapUsingPositions(positions);
255
		Map<Integer, TicketCategory> categoryIdAndCategoryMap = csService
256
				.getCategoryIdAndCategoryUsingPositions(positions);
257
		Map<Integer, Region> regionIdAndRegionMap = csService.getRegionIdAndRegionMap(positions);
24471 govind 258
		model.addAttribute("positions", positions);
259
		model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
260
		model.addAttribute("categoryIdAndCategoryMap", categoryIdAndCategoryMap);
261
		model.addAttribute("regionIdAndRegionMap", regionIdAndRegionMap);
262
		return "position-paginated";
263
	}
24417 govind 264
 
265
	@PostMapping(value = "/cs/createPosition")
266
	public String createPosition(HttpServletRequest request, @RequestParam(name = "authUserId") int authUserId,
267
			@RequestParam(name = "categoryId") int categoryId,
268
			@RequestParam(name = "escalationType") EscalationType escalationType,
269
			@RequestParam(name = "regionId") int regionId, Model model) throws Exception {
270
 
271
		Position position = positionRepository.selectPosition(authUserId, categoryId, regionId, escalationType);
272
		if (position == null) {
273
			position = new Position();
274
			position.setAuthUserId(authUserId);
275
			position.setCategoryId(categoryId);
276
			position.setEscalationType(escalationType);
277
			position.setRegionId(regionId);
278
			position.setCreateTimestamp(LocalDateTime.now());
279
			positionRepository.persist(position);
280
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
281
		} else {
282
			throw new ProfitMandiBusinessException("Position", authUserId, "already exists!");
283
		}
284
		return "response";
285
	}
286
 
287
	@GetMapping(value = "/cs/createTicket")
288
	public String createTicket(HttpServletRequest request, Model model) {
24500 govind 289
		List<TicketCategory> ticketCategories = csService.getAllTicketCategotyFromSubCategory();
24417 govind 290
		model.addAttribute("ticketCategories", ticketCategories);
291
		return "create-ticket";
292
	}
293
 
294
	@GetMapping(value = "/cs/getSubCategoriesByCategoryId")
295
	public String getSubCategoriesByCategoryId(HttpServletRequest request,
296
			@RequestParam(name = "categoryId", defaultValue = "0") int categoryId, Model model) {
297
		List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository.selectAll(categoryId);
298
		LOGGER.info(ticketSubCategories);
299
		model.addAttribute("ticketSubCategories", ticketSubCategories);
300
		return "ticket-sub-categories";
301
	}
302
 
303
	@PostMapping(value = "/cs/createTicket")
304
	public String createTicket(HttpServletRequest request, @RequestParam(name = "categoryId") int categoryId,
305
			@RequestParam(name = "subCategoryId") int subCategoryId, @RequestParam(name = "message") String message,
306
			Model model) throws Exception {
307
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
308
		csService.createTicket(loginDetails.getFofoId(), categoryId, subCategoryId, message);
309
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
310
		return "response";
311
	}
312
 
313
	@GetMapping(value = "/cs/myticket")
314
	public String getMyTicket(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset,
315
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
316
			throws ProfitMandiBusinessException {
317
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
318
		List<Ticket> tickets = null;
24500 govind 319
		List<TicketAssigned> ticketAssigneds = null;
320
		List<Integer> ticketIds = null;
24417 govind 321
		long size = 0;
24500 govind 322
		Map<Integer, AuthUser> authUserIdAndAuthUserMap = null;
323
		// LOGGER.info(roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))));
24417 govind 324
		if (roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
325
			AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
24500 govind 326
			ticketAssigneds = ticketAssignedRepository.selectByAssigneeId(authUser.getId(), offset, limit);
327
			ticketIds = ticketAssigneds.stream().map(x -> x.getTicketId()).collect(Collectors.toList());
24543 tejbeer 328
			tickets = ticketRepository.selectAllByTicketIds(ticketIds);
24500 govind 329
			size = ticketAssignedRepository.selectCountByAssigneeId(authUser.getId());
330
			authUserIdAndAuthUserMap = csService.getAuthUserIdAndAuthUserMap(ticketAssigneds);
331
			Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
24417 govind 332
			model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
333
		} else {
334
			tickets = ticketRepository.selectAllByCreator(loginDetails.getFofoId(), Optional.empty(), offset, limit);
24500 govind 335
			authUserIdAndAuthUserMap = csService.getTicketIdAndAuthUserMapUsingTickets(tickets);
336
			size = ticketRepository.selectAllCountByCreator(loginDetails.getFofoId(), Optional.empty());
337
 
24417 govind 338
		}
339
		if (size < limit) {
340
			model.addAttribute("end", offset + size);
341
		} else {
342
			model.addAttribute("end", offset + limit);
343
		}
344
		model.addAttribute("start", offset + 1);
345
		model.addAttribute("size", size);
24500 govind 346
		model.addAttribute("roleType", roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds())));
24417 govind 347
		Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService
348
				.getSubCategoryIdAndSubCategoryMap(tickets);
349
		model.addAttribute("tickets", tickets);
350
		model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
351
		model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
352
		return "ticket";
353
	}
24500 govind 354
 
24417 govind 355
	@GetMapping(value = "/cs/myticketPaginated")
24500 govind 356
	public String getMyTicketPaginated(HttpServletRequest request,
357
			@RequestParam(name = "offset", defaultValue = "0") int offset,
24417 govind 358
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
359
			throws ProfitMandiBusinessException {
360
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
361
		List<Ticket> tickets = null;
24500 govind 362
		List<TicketAssigned> ticketAssigneds = null;
363
		List<Integer> ticketIds = null;
364
		Map<Integer, AuthUser> authUserIdAndAuthUserMap = null;
365
		// LOGGER.info(roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))));
24417 govind 366
		if (roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
367
			AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
24500 govind 368
			ticketAssigneds = ticketAssignedRepository.selectByAssigneeId(authUser.getId(), offset, limit);
369
			ticketIds = ticketAssigneds.stream().map(x -> x.getTicketId()).collect(Collectors.toList());
24543 tejbeer 370
			tickets = ticketRepository.selectAllByTicketIds(ticketIds);
24500 govind 371
			authUserIdAndAuthUserMap = csService.getAuthUserIdAndAuthUserMap(ticketAssigneds);
372
			Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
24417 govind 373
			model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
374
		} else {
375
			tickets = ticketRepository.selectAllByCreator(loginDetails.getFofoId(), Optional.empty(), offset, limit);
24500 govind 376
			authUserIdAndAuthUserMap = csService.getTicketIdAndAuthUserMapUsingTickets(tickets);
24417 govind 377
		}
24500 govind 378
		model.addAttribute("roleType", roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds())));
24417 govind 379
		Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService
380
				.getSubCategoryIdAndSubCategoryMap(tickets);
381
		model.addAttribute("tickets", tickets);
382
		model.addAttribute("authUserIdAndAuthUserMap", authUserIdAndAuthUserMap);
383
		model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
384
		return "ticket-paginated";
385
	}
386
 
387
	@GetMapping(value = "/cs/getActivities")
388
	public String getActivity(HttpServletRequest request,
389
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId, Model model) throws Exception {
390
		List<Activity> activities = activityRepository.selectAll(ticketId);
391
		if (activities == null) {
392
			throw new ProfitMandiBusinessException("Activity", ticketId, "No Activity Found");
393
		}
394
		model.addAttribute("response", mvcResponseSender.createResponseString(activities));
395
		return "response";
396
 
397
	}
398
 
399
	@PostMapping(value = "/cs/createActivity")
400
	public String createActivity(HttpServletRequest request,
401
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId,
24500 govind 402
			@RequestParam(name = "assigneeId", defaultValue = "0") int assigneeId,
24417 govind 403
			@RequestParam(name = "message", defaultValue = "") String message, Model model) throws Exception {
404
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24500 govind 405
		Ticket ticket = ticketRepository.selectById(ticketId);
406
		if (ticket.getCloseTimestamp() == null) {
407
			if (!roleManager.isAdmin(new HashSet<>(loginDetails.getRoleIds()))) {
408
				Activity activity = new Activity();
409
				activity.setMessage(message);
410
				activity.setCreatedBy(0);
411
				activity.setCreateTimestamp(LocalDateTime.now());
412
				activity.setType(ActivityType.COMMUNICATION_IN);
413
				csService.addActivity(ticketId, activity);
414
				AuthUser authUser = authRepository.selectById(assigneeId);
415
				model.addAttribute("response", mvcResponseSender.createResponseString(authUser));
416
			} else {
417
				AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
418
				Activity activity = new Activity();
419
				activity.setMessage(message);
420
				activity.setCreatedBy(authUser.getId());
421
				activity.setCreateTimestamp(LocalDateTime.now());
422
				activity.setType(ActivityType.COMMUNICATION_OUT);
423
				csService.addActivity(ticketId, activity);
424
				model.addAttribute("response", mvcResponseSender.createResponseString(authUser));
425
			}
24417 govind 426
		} else {
427
			throw new ProfitMandiBusinessException("Ticket", ticket.getId(), "Already closed ticket");
428
		}
429
		return "response";
430
	}
24500 govind 431
 
432
	@PostMapping(value = "/cs/closeTicket")
24417 govind 433
	public String closeTicket(HttpServletRequest request,
24439 govind 434
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId,
24500 govind 435
			@RequestParam(name = "happyCode") String happyCode, Model model) throws Exception {
436
		Ticket ticket = ticketRepository.selectById(ticketId);
437
		if (ticket.getHappyCode().equals(happyCode)) {
438
			ticket.setCloseTimestamp(LocalDateTime.now());
439
			ticketRepository.persist(ticket);
440
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
441
		} else {
442
			throw new ProfitMandiBusinessException("Ticket", ticketId, "Happy Code can't match");
24439 govind 443
		}
24417 govind 444
		return "response";
445
	}
24500 govind 446
 
447
	@GetMapping(value = "/cs/managerTicket")
448
	public String getL2L3AndL4Tickets(HttpServletRequest request,
449
			@RequestParam(name = "offset", defaultValue = "0") int offset,
450
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
451
			throws ProfitMandiBusinessException {
24439 govind 452
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
453
		long size = 0;
24500 govind 454
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
455
		List<Ticket> tickets = null;
456
		Map<Integer, List<AuthUser>> authUserListMap=null;
457
		if (loginDetails.getEmailId().equals("amandeep.singh@smartdukaan.com")) {
458
			tickets = ticketRepository.selectAll(offset, limit, Optional.empty());
459
			authUserListMap=csService.getAuthUserList(tickets, EscalationType.L4);
460
			size = ticketRepository.selectAllCount();
461
		} else {
462
			tickets = ticketRepository.selectAllByEscalatedUserType(authUser.getId(), EscalationType.L2, offset, limit);
463
			if (tickets.size() == 0) {
464
				tickets = ticketRepository.selectAllByEscalatedUserType(authUser.getId(), EscalationType.L3, offset,
465
						limit);
466
				size = ticketRepository.selectAllCountByEscalatedUserType(authUser.getId(), EscalationType.L3);
467
				authUserListMap=csService.getAuthUserList(tickets, EscalationType.L3);
468
				Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
24439 govind 469
				model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
24500 govind 470
			} else {
471
				size = ticketRepository.selectAllCountByEscalatedUserType(authUser.getId(), EscalationType.L2);
472
				authUserListMap=csService.getAuthUserList(tickets, EscalationType.L2);
473
				Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
24439 govind 474
				model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
475
			}
476
		}
477
		if (size < limit) {
478
			model.addAttribute("end", offset + size);
479
		} else {
480
			model.addAttribute("end", offset + limit);
481
		}
482
		model.addAttribute("start", offset + 1);
483
		model.addAttribute("size", size);
484
		model.addAttribute("tickets", tickets);
24500 govind 485
 
24439 govind 486
		Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService
487
				.getSubCategoryIdAndSubCategoryMap(tickets);
488
		model.addAttribute("tickets", tickets);
24500 govind 489
		model.addAttribute("authUserListMap", authUserListMap);
24439 govind 490
		model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
491
		return "managerTicket";
492
	}
24500 govind 493
 
494
	@GetMapping(value = "/cs/managerTicket-paginated")
495
	public String getL2L3AndL4TicketsPaginated(HttpServletRequest request,
496
			@RequestParam(name = "offset", defaultValue = "0") int offset,
497
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
498
			throws ProfitMandiBusinessException {
24467 govind 499
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24500 govind 500
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
24557 govind 501
		Map<Integer, List<AuthUser>> authUserListMap = null;
24500 govind 502
		List<Ticket> tickets = null;
503
		if (loginDetails.getEmailId().equals("amandeep.singh@smartdukaan.com")) {
504
			tickets = ticketRepository.selectAll(offset, limit, Optional.empty());
24557 govind 505
			authUserListMap = csService.getAuthUserList(tickets, EscalationType.L4);
24500 govind 506
		} else {
507
			tickets = ticketRepository.selectAllByEscalatedUserType(authUser.getId(), EscalationType.L2, offset, limit);
508
			if (tickets.size() == 0) {
509
				tickets = ticketRepository.selectAllByEscalatedUserType(authUser.getId(), EscalationType.L3, offset,
510
						limit);
24557 govind 511
				authUserListMap = csService.getAuthUserList(tickets, EscalationType.L3);
24500 govind 512
				Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
24467 govind 513
				model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
24500 govind 514
			} else {
515
				Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = csService.getPartnerByFofoIds(tickets);
516
				authUserListMap=csService.getAuthUserList(tickets, EscalationType.L2);
24467 govind 517
				model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
518
			}
519
		}
520
		model.addAttribute("tickets", tickets);
521
		Map<Integer, TicketSubCategory> subCategoryIdAndSubCategoryMap = csService
522
				.getSubCategoryIdAndSubCategoryMap(tickets);
523
		model.addAttribute("tickets", tickets);
24500 govind 524
		model.addAttribute("authUserListMap", authUserListMap);
24467 govind 525
		model.addAttribute("subCategoryIdAndSubCategoryMap", subCategoryIdAndSubCategoryMap);
526
		return "managerTicket-paginated";
527
	}
24500 govind 528
 
529
	@GetMapping(value = "/cs/edit-ticket")
530
	public String getEditTicket(HttpServletRequest request,
531
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId, Model model) {
532
		Ticket ticket = ticketRepository.selectById(ticketId);
533
		List<TicketCategory> ticketCategories = csService.getAllTicketCategotyFromSubCategory();
534
		TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.selectById(ticket.getSubCategoryId());
535
		List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository
536
				.selectAll(ticketSubCategory.getcategoryId());
24557 govind 537
		List<AuthUser> authUsers=authRepository.selectAll();
24467 govind 538
		model.addAttribute("ticket", ticket);
539
		model.addAttribute("ticketCategories", ticketCategories);
540
		model.addAttribute("ticketSubCategories", ticketSubCategories);
24500 govind 541
		model.addAttribute("authUsers", authUsers);
24467 govind 542
		return "edit-ticket-modal";
543
	}
24500 govind 544
 
545
	@PostMapping(value = "/cs/edit-ticket")
546
	public String editTicket(HttpServletRequest request,
547
			@RequestParam(name = "ticketId", defaultValue = "0") int ticketId,
548
			@RequestParam(name = "subCategoryId", defaultValue = "0") int subCategoryId,
549
			@RequestParam(name = "categoryId", defaultValue = "0") int categoryId,
550
			@RequestParam(name = "authUserId", defaultValue = "0") int authUserId, Model model) throws Exception {
24467 govind 551
		LOGGER.info(ticketId);
24500 govind 552
		Ticket ticket = ticketRepository.selectById(ticketId);
553
 
554
		if(ticket.getSubCategoryId()==subCategoryId)
555
		{
24467 govind 556
		LOGGER.info(ticket);
24500 govind 557
 
558
		TicketAssigned ticketAssigned=ticketAssignedRepository.selectByAssigneeIdAndTicketId(authUserId, ticket.getId());
559
		if(ticketAssigned==null)
560
		{
561
			ticketAssignedRepository.deleteByTicketId(ticketId);
562
			ticketAssigned=new TicketAssigned();
563
			ticketAssigned.setTicketId(ticketId);
564
			ticketAssigned.setAssineeId(authUserId);
565
			ticketAssignedRepository.persist(ticketAssigned);
566
		}
24467 govind 567
		ticket.setL1AuthUser(authUserId);
568
		ticket.setSubCategoryId(subCategoryId);
569
		ticket.setUpdateTimestamp(LocalDateTime.now());
570
		ticket.setL2EscalationTimestamp(ticket.getUpdateTimestamp().plusDays(2));
571
		ticket.setL3EscalationTimestamp(ticket.getL2EscalationTimestamp().plusDays(2));
572
		ticket.setLastEscalationTimestamp(ticket.getL3EscalationTimestamp().plusDays(2));
573
		ticketRepository.persist(ticket);
574
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
24500 govind 575
		}
576
		else
577
		{
578
			ticketAssignedRepository.deleteByTicketId(ticketId);
579
			csService.updateTicket(categoryId,subCategoryId,ticket);	
580
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
581
		}
24467 govind 582
		return "response";
583
	}
24500 govind 584
 
585
	@DeleteMapping(value = "/cs/removePosition")
586
	public String removePosition(HttpServletRequest request,
587
			@RequestParam(name = "positionId", defaultValue = "0") int positionId, Model model) throws Exception {
24471 govind 588
		positionRepository.delete(positionId);
589
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
590
		return "response";
591
	}
24417 govind 592
}