Subversion Repositories SmartDukaan

Rev

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