Subversion Repositories SmartDukaan

Rev

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