Subversion Repositories SmartDukaan

Rev

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