Subversion Repositories SmartDukaan

Rev

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