Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
25979 tejbeer 1
package com.spice.profitmandi.web.controller;
2
 
29266 manish 3
import com.google.gson.Gson;
31370 tejbeer 4
import com.mongodb.DBObject;
25988 tejbeer 5
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
33843 ranu 6
import com.spice.profitmandi.common.model.*;
29426 manish 7
import com.spice.profitmandi.common.util.FileUtil;
34627 aman.kumar 8
import com.spice.profitmandi.common.util.FormattingUtils;
31370 tejbeer 9
import com.spice.profitmandi.common.web.util.ResponseSender;
25979 tejbeer 10
import com.spice.profitmandi.dao.entity.auth.AuthUser;
32464 tejbeer 11
import com.spice.profitmandi.dao.entity.catalog.BrandCatalog;
30416 tejbeer 12
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
33843 ranu 13
import com.spice.profitmandi.dao.entity.user.*;
30773 amit.gupta 14
import com.spice.profitmandi.dao.enumuration.cs.EscalationType;
31249 tejbeer 15
import com.spice.profitmandi.dao.enumuration.dtr.CommunicationType;
29598 tejbeer 16
import com.spice.profitmandi.dao.enumuration.dtr.LeadSource;
25979 tejbeer 17
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
33843 ranu 18
import com.spice.profitmandi.dao.model.*;
25979 tejbeer 19
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
30185 tejbeer 20
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionPlanRepository;
30434 tejbeer 21
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionRemarkRepository;
30416 tejbeer 22
import com.spice.profitmandi.dao.repository.cs.CsService;
29266 manish 23
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
33843 ranu 24
import com.spice.profitmandi.dao.repository.dtr.*;
30416 tejbeer 25
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
25979 tejbeer 26
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
30445 tejbeer 27
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
29266 manish 28
import com.spice.profitmandi.service.AuthService;
30416 tejbeer 29
import com.spice.profitmandi.service.PartnerCollectionService;
33917 ranu 30
import com.spice.profitmandi.service.RbmTargetService;
32464 tejbeer 31
import com.spice.profitmandi.service.catalog.BrandsService;
30416 tejbeer 32
import com.spice.profitmandi.service.user.RetailerService;
25979 tejbeer 33
import com.spice.profitmandi.web.model.LoginDetails;
34
import com.spice.profitmandi.web.util.CookiesProcessor;
35
import com.spice.profitmandi.web.util.MVCResponseSender;
33843 ranu 36
import org.apache.commons.csv.CSVRecord;
37
import org.apache.logging.log4j.LogManager;
38
import org.apache.logging.log4j.Logger;
39
import org.springframework.beans.factory.annotation.Autowired;
40
import org.springframework.core.io.InputStreamResource;
41
import org.springframework.http.HttpHeaders;
42
import org.springframework.http.HttpStatus;
43
import org.springframework.http.MediaType;
44
import org.springframework.http.ResponseEntity;
45
import org.springframework.stereotype.Controller;
46
import org.springframework.ui.Model;
47
import org.springframework.util.StringUtils;
48
import org.springframework.web.bind.annotation.*;
49
import org.springframework.web.multipart.MultipartFile;
25979 tejbeer 50
 
33843 ranu 51
import javax.servlet.http.HttpServletRequest;
52
import javax.servlet.http.HttpServletResponse;
53
import javax.transaction.Transactional;
54
import java.io.ByteArrayInputStream;
55
import java.io.InputStream;
56
import java.time.LocalDate;
57
import java.time.LocalDateTime;
58
import java.time.format.DateTimeFormatter;
59
import java.util.*;
60
import java.util.Map.Entry;
61
import java.util.stream.Collectors;
62
 
25979 tejbeer 63
@Controller
64
@Transactional(rollbackOn = Throwable.class)
65
public class LeadController {
32464 tejbeer 66
    private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
25979 tejbeer 67
 
32464 tejbeer 68
    @Autowired
69
    private LeadRepository leadRepository;
25979 tejbeer 70
 
32464 tejbeer 71
    @Autowired
72
    private LeadActivityRepository leadActivityRepository;
25979 tejbeer 73
 
32464 tejbeer 74
    @Autowired
75
    private StateRepository stateRepository;
25979 tejbeer 76
 
32464 tejbeer 77
    @Autowired
78
    private AuthService authService;
29266 manish 79
 
32464 tejbeer 80
    @Autowired
81
    private AuthRepository authRepository;
25979 tejbeer 82
 
32464 tejbeer 83
    @Autowired
84
    private Gson gson;
29266 manish 85
 
32464 tejbeer 86
    @Autowired
87
    private CookiesProcessor cookiesProcessor;
29426 manish 88
 
32464 tejbeer 89
    @Autowired
90
    PositionRepository positionRepository;
25979 tejbeer 91
 
32464 tejbeer 92
    @Autowired
93
    private MVCResponseSender mvcResponseSender;
25979 tejbeer 94
 
32464 tejbeer 95
    @Autowired
96
    private PartnerCollectionPlanRepository partnerCollectionPlanRepository;
30185 tejbeer 97
 
32464 tejbeer 98
    @Autowired
99
    private CsService csService;
30416 tejbeer 100
 
32464 tejbeer 101
    @Autowired
102
    private FofoStoreRepository fofoStoreRepository;
30416 tejbeer 103
 
32464 tejbeer 104
    @Autowired
105
    private PartnerCollectionService partnerCollectionService;
30416 tejbeer 106
 
32464 tejbeer 107
    @Autowired
108
    private RetailerService retailerService;
30416 tejbeer 109
 
32464 tejbeer 110
    @Autowired
111
    private PartnerCollectionRemarkRepository partnerCollectionRemarkRepository;
30434 tejbeer 112
 
32464 tejbeer 113
    @Autowired
114
    private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
30445 tejbeer 115
 
32464 tejbeer 116
    @Autowired
117
    private UserWalletRepository userWalletRepository;
30445 tejbeer 118
 
32464 tejbeer 119
    @Autowired
120
    private FranchiseeVisitRepository franchiseeVisitRepository;
30522 tejbeer 121
 
32464 tejbeer 122
    @Autowired
123
    private FranchiseeActivityRepository franchiseeActivityRepository;
30522 tejbeer 124
 
32464 tejbeer 125
    @Autowired
126
    private VisitRequestRepository visitRequestRepository;
31249 tejbeer 127
 
32464 tejbeer 128
    @Autowired
129
    private LeadBrandRepository leadBrandRepository;
31370 tejbeer 130
 
32464 tejbeer 131
    @Autowired
132
    private LeadDetailRepository leadDetailRepository;
31370 tejbeer 133
 
32464 tejbeer 134
    @Autowired
135
    private Mongo mongoClient;
31370 tejbeer 136
 
32464 tejbeer 137
    @Autowired
138
    private ResponseSender<?> responseSender;
31370 tejbeer 139
 
32464 tejbeer 140
    @Autowired
141
    private BrandsService brandsService;
25988 tejbeer 142
 
32464 tejbeer 143
    List<LeadStatus> status = Arrays.asList(LeadStatus.notInterested, LeadStatus.finalized);
27609 tejbeer 144
 
32464 tejbeer 145
    @RequestMapping(value = "/getOpenLead", method = RequestMethod.GET)
146
    public String getOpenLead(HttpServletRequest request, @RequestParam(name = "leadStatus", required = false, defaultValue = "All") List<LeadStatus> leadStatus, @RequestParam(name = "color", required = false, defaultValue = "All") List<String> color, @RequestParam(name = "leadDate", required = false, defaultValue = "") LocalDate leadDate, Model model) throws Exception {
29445 manish 147
 
32464 tejbeer 148
        LocalDateTime localDateTime = null;
149
        if (leadDate != null) {
150
            localDateTime = leadDate.atStartOfDay();
151
        }
152
        LOGGER.info("localDateTime" + localDateTime);
29426 manish 153
 
32464 tejbeer 154
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
155
        String emailId = loginDetails.getEmailId();
156
        AuthUser authUser = authRepository.selectByEmailOrMobile(emailId);
29426 manish 157
 
32464 tejbeer 158
        boolean authPositon = positionRepository.hasCategory(authUser.getId(), ProfitMandiConstants.TICKET_CATEGORY_SALES);
27610 tejbeer 159
 
32464 tejbeer 160
        if (leadStatus.contains(LeadStatus.All)) {
27615 tejbeer 161
 
32464 tejbeer 162
            leadStatus.add(LeadStatus.pending);
163
            leadStatus.add(LeadStatus.notInterested);
164
            leadStatus.add(LeadStatus.finalized);
165
        }
29744 tejbeer 166
 
32464 tejbeer 167
        if (color.contains("All")) {
168
            color.add("yellow");
169
            color.add("green");
170
        }
29445 manish 171
 
32464 tejbeer 172
        List<Lead> leads = new ArrayList<>();
29445 manish 173
 
32464 tejbeer 174
        model.addAttribute("colors", color);
29744 tejbeer 175
 
32464 tejbeer 176
        Map<Integer, List<LeadActivity>> leadActivityMap = new HashMap<>();
29445 manish 177
 
32464 tejbeer 178
        List<Integer> authUserIds = null;
29445 manish 179
 
32464 tejbeer 180
        LOGGER.info("color111" + color);
29426 manish 181
 
32464 tejbeer 182
        List<Lead> leadFollowUp = new ArrayList<>();
29426 manish 183
 
32464 tejbeer 184
        if (authPositon) {
185
            authUserIds = authService.getAllReportees(authUser.getId());
186
            authUserIds.add(authUser.getId());
187
            LOGGER.info("authIds" + authUserIds);
29753 tejbeer 188
 
32464 tejbeer 189
            LOGGER.info("leadStatus" + leadStatus);
29445 manish 190
 
32464 tejbeer 191
            if (localDateTime == null) {
29445 manish 192
 
32464 tejbeer 193
                if (!leadStatus.contains(LeadStatus.followUp)) {
29852 tejbeer 194
 
32464 tejbeer 195
                    leads = leadRepository.selectAllByColorStatusAndUpdatedTimestampAndAuthIds(leadStatus, authUserIds, color, LocalDateTime.now().minusMonths(1));
196
                }
29852 tejbeer 197
 
32464 tejbeer 198
                if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
199
                    leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
200
                    leads.addAll(leadFollowUp);
201
                }
29445 manish 202
 
32464 tejbeer 203
            } else {
29852 tejbeer 204
 
32464 tejbeer 205
                if (!leadStatus.contains(LeadStatus.followUp)) {
29852 tejbeer 206
 
32464 tejbeer 207
                    leads = leadRepository.selectAllByColorStatusAndUpdatedTimestampAndAuthIds(leadStatus, authUserIds, color, localDateTime);
208
                }
29852 tejbeer 209
 
32464 tejbeer 210
                if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
30290 tejbeer 211
 
32464 tejbeer 212
                    leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
29852 tejbeer 213
 
32464 tejbeer 214
                    leads.addAll(leadFollowUp);
29852 tejbeer 215
 
32464 tejbeer 216
                }
29445 manish 217
 
32464 tejbeer 218
            }
29445 manish 219
 
32464 tejbeer 220
        } else {
29445 manish 221
 
32464 tejbeer 222
            if (localDateTime == null) {
223
                if (!leadStatus.contains(LeadStatus.followUp)) {
29852 tejbeer 224
 
32464 tejbeer 225
                    leads = leadRepository.selectAllByColorStatusAndUpdatedTimestamp(leadStatus, color, LocalDateTime.now().minusMonths(1));
226
                }
227
                if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
30290 tejbeer 228
 
32464 tejbeer 229
                    leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
29445 manish 230
 
32464 tejbeer 231
                    leads.addAll(leadFollowUp);
232
                }
233
                LOGGER.info("leadlocalDateTime1" + leads);
29445 manish 234
 
32464 tejbeer 235
            } else {
236
                if (!leadStatus.contains(LeadStatus.followUp)) {
29852 tejbeer 237
 
32464 tejbeer 238
                    leads = leadRepository.selectAllByColorStatusAndUpdatedTimestamp(leadStatus, color, localDateTime);
239
                }
29852 tejbeer 240
 
32464 tejbeer 241
                if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
30290 tejbeer 242
 
32464 tejbeer 243
                    leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
29445 manish 244
 
32464 tejbeer 245
                    leads.addAll(leadFollowUp);
246
                }
247
                LOGGER.info("leadlocalDateTime2" + leads);
29426 manish 248
 
32464 tejbeer 249
            }
29445 manish 250
 
32464 tejbeer 251
        }
27642 tejbeer 252
 
32464 tejbeer 253
        if (authPositon && authUserIds.size() > 0) {
254
            List<String> leadCreators = new ArrayList<>();
255
            leadCreators.add("daily-sync");
34032 amit.gupta 256
            leadCreators.addAll(csService.getAuthUserIds(ProfitMandiConstants.TICKET_CATEGORY_SALES, Arrays.asList(EscalationType.L1, EscalationType.L2)).stream().map(x -> x.getFullName()).collect(Collectors.toList()));
257
            leadCreators.addAll(csService.getAuthUserIds(ProfitMandiConstants.TICKET_CATEGORY_BGC, Arrays.asList(EscalationType.L1, EscalationType.L2, EscalationType.L3)).stream().map(x -> x.getFullName()).collect(Collectors.toList()));
32464 tejbeer 258
            model.addAttribute("leadCreators", leadCreators);
259
        }
260
        List<Lead> weekLast = new ArrayList<>();
261
        List<Lead> weekThird = new ArrayList<>();
262
        List<Lead> weekSecond = new ArrayList<>();
263
        List<Lead> weekFirst = new ArrayList<>();
264
        LocalDateTime curDate = LocalDate.now().atStartOfDay();
265
        List<LeadWeakWiseModel> lwDays = new ArrayList<>();
29266 manish 266
 
32464 tejbeer 267
        for (int i = 7; i >= 1; i--) {
268
            LocalDateTime startOfDay = curDate.minusDays(i);
29266 manish 269
 
32464 tejbeer 270
            LeadWeakWiseModel lm = new LeadWeakWiseModel();
271
            lm.setMonth(startOfDay.toLocalDate());
272
            lwDays.add(lm);
273
        }
274
        if (!leads.isEmpty()) {
29266 manish 275
 
32464 tejbeer 276
            weekLast.addAll(
277
                    leads.stream().filter(x -> x.getCreatedTimestamp().isAfter(curDate.minusDays(28)) && x.getCreatedTimestamp().isBefore(curDate.minusDays(21))).collect(Collectors.toList()));
29266 manish 278
 
32464 tejbeer 279
            weekThird.addAll(leads.stream().filter(x -> x.getCreatedTimestamp().isAfter(curDate.minusDays(21)) && x.getCreatedTimestamp().isBefore(curDate.minusDays(14))).collect(Collectors.toList()));
29426 manish 280
 
32464 tejbeer 281
            weekSecond.addAll(leads.stream().filter(x -> x.getCreatedTimestamp().isAfter(curDate.minusDays(14)) && x.getCreatedTimestamp().isBefore(curDate.minusDays(7))).collect(Collectors.toList()));
29744 tejbeer 282
 
32464 tejbeer 283
            weekFirst.addAll(leads.stream().filter(x -> x.getCreatedTimestamp().isAfter(curDate.minusDays(7))).collect(Collectors.toList()));
29266 manish 284
 
32464 tejbeer 285
        }
286
        LOGGER.info("weekLast" + weekLast);
287
        LOGGER.info("weekThird" + weekThird);
288
        LOGGER.info("weekSecond" + weekSecond);
289
        Map<String, Long> leadLasts = weekLast.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(), Collectors.counting()));
290
        Map<String, Long> leadThirds = weekThird.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(), Collectors.counting()));
291
        Map<String, Long> leadSeconds = weekSecond.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(), Collectors.mapping(Lead::getCreatedBy, Collectors.counting())));
29266 manish 292
 
32464 tejbeer 293
        Map<String, Map<LocalDate, Long>> leadFirsts = weekFirst.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(), Collectors.groupingBy(x -> x.getCreatedTimestamp().toLocalDate(), Collectors.counting())));
29266 manish 294
 
32464 tejbeer 295
        LOGGER.info("leadFirsts" + leadFirsts);
25979 tejbeer 296
 
32464 tejbeer 297
        List<Integer> authIds = new ArrayList<>();
298
        if (!leads.isEmpty()) {
27610 tejbeer 299
 
32464 tejbeer 300
            authIds.addAll(leads.stream().map(x -> x.getAssignTo()).collect(Collectors.toList()));
29744 tejbeer 301
 
32464 tejbeer 302
            leadActivityMap = leadActivityRepository.selectAllByleadIds(leads.stream().map(x -> x.getId()).collect(Collectors.toList())).stream().collect(Collectors.groupingBy(LeadActivity::getLeadId, Collectors.toList()));
27723 tejbeer 303
 
32464 tejbeer 304
            Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
305
            model.addAttribute("leadActivityMap", leadActivityMap);
306
            model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
307
        }
29266 manish 308
 
32464 tejbeer 309
        ChartLeadModel cm = this.getLeadChart(leads);
310
        model.addAttribute("chartLead", gson.toJson(cm));
29266 manish 311
 
32464 tejbeer 312
        LOGGER.info("ChartLeadModel" + gson.toJson(cm));
313
        LOGGER.info("lwDays" + lwDays);
29426 manish 314
 
32464 tejbeer 315
        LOGGER.info("leads" + leads);
316
        List<String> stateNames = stateRepository.selectAll().stream().map(x -> x.getName()).collect(Collectors.toList());
34127 tejus.loha 317
//        List<AuthUser> authUsers = authRepository.selectAllActiveUser();
318
        List<AuthUser> authUsers = csService.getAuthUserIds(ProfitMandiConstants.TICKET_CATEGORY_SALES, Arrays.asList(EscalationType.L1, EscalationType.L2, EscalationType.L3));
32464 tejbeer 319
        LocalDate lastDate = curDate.minusDays(1).toLocalDate();
29426 manish 320
 
32464 tejbeer 321
        List<LocalDate> weekDates = new ArrayList<>();
29426 manish 322
 
32464 tejbeer 323
        weekDates.add(curDate.minusDays(28).toLocalDate());
324
        weekDates.add(curDate.minusDays(22).toLocalDate());
325
        weekDates.add(curDate.minusDays(21).toLocalDate());
326
        weekDates.add(curDate.minusDays(15).toLocalDate());
327
        weekDates.add(curDate.minusDays(14).toLocalDate());
328
        weekDates.add(curDate.minusDays(8).toLocalDate());
329
        weekDates.add(curDate.minusDays(7).toLocalDate());
330
        LOGGER.info("lastDate" + lastDate);
29426 manish 331
 
32464 tejbeer 332
        model.addAttribute("weekDates", weekDates);
31249 tejbeer 333
 
32464 tejbeer 334
        model.addAttribute("leadDate", leadDate);
335
        model.addAttribute("lastDate", lastDate);
336
        model.addAttribute("stateNames", stateNames);
31249 tejbeer 337
 
32464 tejbeer 338
        model.addAttribute("communicationTypes", CommunicationType.values());
25979 tejbeer 339
 
32464 tejbeer 340
        model.addAttribute("authUsers", authUsers);
33223 amit.gupta 341
        model.addAttribute("leads", leads);
32464 tejbeer 342
        model.addAttribute("leadStatus", LeadStatus.values());
343
        model.addAttribute("leadLasts", leadLasts);
344
        model.addAttribute("leadThirds", leadThirds);
345
        model.addAttribute("leadSeconds", leadSeconds);
346
        model.addAttribute("leadFirsts", leadFirsts);
347
        model.addAttribute("lwDays", lwDays);
31370 tejbeer 348
 
32464 tejbeer 349
        model.addAttribute("selectedLeadStatus", leadStatus.get(0));
31370 tejbeer 350
 
351
 
32464 tejbeer 352
        List<BrandCatalog> brandsDisplays = brandsService.getBrandsToDisplay(3);
353
        brandsDisplays.addAll(brandsService.getBrandsToDisplay(6));
354
        model.addAttribute("brandsDisplays", brandsDisplays.stream().distinct().collect(Collectors.toList()));
31370 tejbeer 355
 
32464 tejbeer 356
        LOGGER.info("brandsDisplays" + brandsDisplays);
27642 tejbeer 357
 
25979 tejbeer 358
 
32464 tejbeer 359
        return "lead";
29266 manish 360
 
32464 tejbeer 361
    }
29266 manish 362
 
32464 tejbeer 363
    public ChartLeadModel getLeadChart(List<Lead> leads) throws ProfitMandiBusinessException {
29426 manish 364
 
32464 tejbeer 365
        Map<LeadStatus, Long> leadStatusMap = leads.stream().collect(
366
                Collectors.groupingBy(x -> x.getStatus(), Collectors.mapping(Lead::getStatus, Collectors.counting())));
29266 manish 367
 
32464 tejbeer 368
        Map<String, Long> hotLeadsMap = leads.stream().collect(
369
                Collectors.groupingBy(x -> x.getColor(), Collectors.mapping(Lead::getColor, Collectors.counting())));
29445 manish 370
 
32464 tejbeer 371
        LOGGER.info("hotLeadsMap" + hotLeadsMap);
372
        ChartLeadModel cm = new ChartLeadModel();
29445 manish 373
 
32464 tejbeer 374
        HashSet<LeadStatus> labels = new HashSet<LeadStatus>();
375
        labels.addAll(leadStatusMap.keySet());
29445 manish 376
 
32464 tejbeer 377
        List<String> hotLeads = new ArrayList<>();
378
        hotLeads.addAll(leadStatusMap.keySet().stream().map(x -> x.toString()).collect(Collectors.toSet()));
379
        hotLeads.add("HotLead");
29598 tejbeer 380
 
32464 tejbeer 381
        List<String> hotLeadKeys = new ArrayList<>();
29445 manish 382
 
32464 tejbeer 383
        hotLeadKeys.add("HotLead");
384
        List<String> hotLeadGreen = new ArrayList<>(hotLeadKeys);
29266 manish 385
 
32464 tejbeer 386
        LOGGER.info("hotLeads" + hotLeads);
29266 manish 387
 
32464 tejbeer 388
        List<LeadStatus> labelList = new ArrayList<>(labels);
389
        List<String> backgroundColor = new ArrayList<>();
390
        LOGGER.info("hotLeadKeys" + hotLeadKeys);
391
        List<Long> values = new ArrayList<>();
29598 tejbeer 392
 
32464 tejbeer 393
        for (String hotLead : hotLeads) {
29445 manish 394
 
32464 tejbeer 395
            if (hotLead.equals("pending")) {
396
                backgroundColor.add("pink");
397
                values.add(leadStatusMap.get(LeadStatus.pending));
398
            }
399
            if (hotLead.equals("notInterested")) {
400
                backgroundColor.add("red");
401
                values.add(leadStatusMap.get(LeadStatus.notInterested));
402
            }
403
            if (hotLead.equals("followUp")) {
404
                backgroundColor.add("#9ACD32");
405
                values.add(leadStatusMap.get(LeadStatus.followUp));
406
            }
407
            if (hotLead.equals("finalized")) {
408
                backgroundColor.add("blue");
409
                values.add(leadStatusMap.get(LeadStatus.finalized));
410
            }
29445 manish 411
 
32464 tejbeer 412
            if (hotLead.equals("HotLead")) {
413
                backgroundColor.add("green");
414
                values.add(hotLeadsMap.get("Green"));
29266 manish 415
 
32464 tejbeer 416
            }
29266 manish 417
 
32464 tejbeer 418
        }
419
        LOGGER.info("labelList" + labelList);
29266 manish 420
 
32464 tejbeer 421
        LOGGER.info("backgroundColor" + backgroundColor);
422
        LOGGER.info("labelsChartLead" + labels);
423
        LeadStatusData data = new LeadStatusData();
424
        data.setData(values);
425
        data.setBackgroundColor(backgroundColor);
426
        data.setLabel("DataSet 1");
29266 manish 427
 
32464 tejbeer 428
        PieLables label = new PieLables();
429
        label.setFontColor("black");
430
        label.setFontSize(15);
29266 manish 431
 
32464 tejbeer 432
        Legend legend = new Legend();
433
        legend.setLabels(label);
434
        legend.setPosition("left");
29266 manish 435
 
32464 tejbeer 436
        List<LeadStatusData> dataList = new ArrayList<>();
437
        dataList.add(data);
29266 manish 438
 
32464 tejbeer 439
        DataLeadModel datasets = new DataLeadModel();
440
        datasets.setDatasets(dataList);
441
        datasets.setLabels(hotLeads);
29266 manish 442
 
32464 tejbeer 443
        OptionModel om = new OptionModel();
444
        om.setLegend(legend);
29266 manish 445
 
32464 tejbeer 446
        cm.setType("pie");
447
        cm.setData(datasets);
448
        cm.setOptions(om);
25988 tejbeer 449
 
32464 tejbeer 450
        return cm;
451
    }
25988 tejbeer 452
 
453
 
32464 tejbeer 454
    @RequestMapping(value = "/getClosedLead", method = RequestMethod.GET)
455
    public String getClosedLead(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, @RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model) throws Exception {
456
        List<AuthUser> authUsers = authRepository.selectAllActiveUser();
457
        List<Lead> leads = null;
458
        long size = 0;
459
        leads = leadRepository.selectAllByStatus(status, offset, limit);
460
        size = leadRepository.selectCountByStatus(status);
25988 tejbeer 461
 
32464 tejbeer 462
        if (!leads.isEmpty()) {
463
            List<Integer> authIds = new ArrayList<>();
464
            for (Lead lead : leads) {
465
                authIds.add(lead.getAssignTo());
466
            }
467
            Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
25988 tejbeer 468
 
32464 tejbeer 469
            model.addAttribute("leads", leads);
470
            model.addAttribute("start", offset + 1);
471
            model.addAttribute("size", size);
472
            model.addAttribute("searchTerm", searchTerm);
473
            model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
474
            model.addAttribute("url", "/getPaginatedClosedLeads");
25988 tejbeer 475
 
32464 tejbeer 476
            if (leads.size() < limit) {
477
                model.addAttribute("end", offset + leads.size());
478
            } else {
479
                model.addAttribute("end", offset + limit);
480
            }
25988 tejbeer 481
 
32464 tejbeer 482
        } else {
483
            model.addAttribute("lead", leads);
25988 tejbeer 484
 
32464 tejbeer 485
            model.addAttribute("size", size);
486
        }
25988 tejbeer 487
 
32464 tejbeer 488
        model.addAttribute("authUsers", authUsers);
489
        return "lead-close";
490
    }
25988 tejbeer 491
 
32464 tejbeer 492
    @RequestMapping(value = "/getPaginatedClosedLeads", method = RequestMethod.GET)
493
    public String getPaginatedClosedLeads(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException {
494
        List<Lead> leads = null;
495
        leads = leadRepository.selectAllByStatus(status, offset, limit);
25988 tejbeer 496
 
32464 tejbeer 497
        if (!leads.isEmpty()) {
498
            List<Integer> authIds = new ArrayList<>();
499
            for (Lead lead : leads) {
500
                authIds.add(lead.getAssignTo());
501
            }
502
            Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
503
            model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
504
            model.addAttribute("leads", leads);
505
            model.addAttribute("url", "/getPaginatedClosedLeads");
25988 tejbeer 506
 
32464 tejbeer 507
        } else {
508
            model.addAttribute("leads", leads);
25988 tejbeer 509
 
32464 tejbeer 510
        }
511
        return "lead-close-paginated";
512
    }
25988 tejbeer 513
 
32464 tejbeer 514
    @RequestMapping(value = "/searchLeads")
515
    public String getClosedLeads(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, @RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model) throws ProfitMandiBusinessException {
516
        List<AuthUser> authUsers = authRepository.selectAllActiveUser();
517
        List<Lead> leads = null;
518
        long size = 0;
519
        if (!(searchTerm.equals(""))) {
520
            leads = leadRepository.selectBySearchTerm(status, searchTerm, offset, limit);
34155 tejus.loha 521
            size = leadRepository.selectCountByStatus(status);
522
            Map<Integer, AuthUser> authIdAndAuthUserMap = new HashMap<>();
523
            List<Integer> authIds = new ArrayList<>();
32464 tejbeer 524
            if (!(leads.size() == 0)) {
525
                for (Lead lead : leads) {
526
                    authIds.add(lead.getAssignTo());
527
                }
34155 tejus.loha 528
                authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
32464 tejbeer 529
                if (leads.size() < limit) {
530
                    model.addAttribute("end", offset + leads.size());
531
                } else {
532
                    model.addAttribute("end", offset + limit);
533
                }
534
            } else {
34155 tejus.loha 535
                model.addAttribute("end", offset + limit);
32464 tejbeer 536
            }
34155 tejus.loha 537
            model.addAttribute("leads", leads);
538
            model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
539
            model.addAttribute("start", offset + 1);
540
            model.addAttribute("size", size);
541
            model.addAttribute("searchTerm", searchTerm);
32464 tejbeer 542
        } else {
543
            leads = leadRepository.selectAllByStatus(status, offset, limit);
544
            size = leadRepository.selectCountByStatus(status);
25988 tejbeer 545
 
32464 tejbeer 546
            if (!leads.isEmpty()) {
547
                List<Integer> authIds = new ArrayList<>();
548
                for (Lead lead : leads) {
549
                    authIds.add(lead.getAssignTo());
550
                }
551
                Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
25988 tejbeer 552
 
32464 tejbeer 553
                model.addAttribute("leads", leads);
554
                model.addAttribute("start", offset + 1);
555
                model.addAttribute("size", size);
556
                model.addAttribute("searchTerm", searchTerm);
557
                model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
25988 tejbeer 558
 
32464 tejbeer 559
                if (leads.size() < limit) {
560
                    model.addAttribute("end", offset + leads.size());
561
                } else {
562
                    model.addAttribute("end", offset + limit);
563
                }
25988 tejbeer 564
 
32464 tejbeer 565
            }
566
        }
25988 tejbeer 567
 
32464 tejbeer 568
        model.addAttribute("authUsers", authUsers);
569
        return "lead-close";
570
    }
25988 tejbeer 571
 
32464 tejbeer 572
    @RequestMapping(value = "/searchLeadPaginated")
573
    public String searchLeadPaginated(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, @RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model) throws ProfitMandiBusinessException {
574
        LOGGER.info("In search Item....");
575
        List<Lead> leads = null;
576
        if (!searchTerm.equals("")) {
577
            leads = leadRepository.selectBySearchTerm(status, searchTerm, offset, limit);
578
            if (!(leads.size() == 0)) {
25988 tejbeer 579
 
32464 tejbeer 580
                List<Integer> authIds = new ArrayList<>();
581
                for (Lead lead : leads) {
582
                    authIds.add(lead.getAssignTo());
583
                }
584
                Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
585
                model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
586
                model.addAttribute("leads", leads);
587
            }
588
        }
31249 tejbeer 589
 
32464 tejbeer 590
        return "lead-close-paginated";
31249 tejbeer 591
 
32464 tejbeer 592
    }
31249 tejbeer 593
 
32464 tejbeer 594
    @RequestMapping(value = "/getLeadActivity", method = RequestMethod.GET)
595
    public String getLeadActivity(HttpServletRequest request, @RequestParam int leadId, Model model) throws Exception {
596
        List<LeadActivity> leadActivity = leadActivityRepository.selectBYLeadId(leadId);
25979 tejbeer 597
 
32464 tejbeer 598
        LOGGER.info("leadActivity" + leadActivity);
31370 tejbeer 599
 
32464 tejbeer 600
        model.addAttribute("leadActivity", leadActivity);
601
        model.addAttribute("authUserMap", authRepository.selectAllActiveUser().stream().collect(Collectors.toMap(x -> x.getId(), x -> x)));
31370 tejbeer 602
 
32464 tejbeer 603
        return "lead_activity_modal";
604
    }
31370 tejbeer 605
 
32464 tejbeer 606
    @RequestMapping(value = "/getLead", method = RequestMethod.GET)
607
    public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam int leadId) throws Exception {
608
        Lead lead = leadRepository.selectById(leadId);
31370 tejbeer 609
 
32464 tejbeer 610
        LeadDetail leadDetail = leadDetailRepository.selectByLeadId(lead.getId());
611
        if (leadDetail != null) {
612
            lead.setOutLetName(leadDetail.getOutletName());
613
        }
31249 tejbeer 614
 
32464 tejbeer 615
        return responseSender.ok(lead);
25979 tejbeer 616
 
32464 tejbeer 617
    }
31249 tejbeer 618
 
32464 tejbeer 619
    @RequestMapping(value = "/createLead", method = RequestMethod.POST)
620
    public String CreateLead(HttpServletRequest request, @RequestBody CreateRefferalRequest createRefferalRequest, Model model) throws Exception {
621
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
34627 aman.kumar 622
        List<Lead> leadDetailList = leadRepository.selectByMobileNumber(createRefferalRequest.getMobile());
623
        LOGGER.info("Lead Details {}", leadDetailList);
31249 tejbeer 624
 
34627 aman.kumar 625
        if (!leadDetailList.isEmpty()) {
626
            AuthUser authUser1 = authRepository.selectById(leadDetailList.get(0).getAssignTo());
627
            throw new ProfitMandiBusinessException("Duplicate Entry",
628
                    "Lead already exists, created by " + leadDetailList.get(0).getCreatedBy() +
629
                            " on " + FormattingUtils.format(leadDetailList.get(0).getCreatedTimestamp()) +
630
                            ", assigned to " + authUser1.getFullName(), "400");
631
 
632
        }
633
 
32464 tejbeer 634
        LOGGER.info("createRefferalRequest" + createRefferalRequest.getSchelduleTimestamp());
635
        Lead lead = new Lead();
636
        lead.setFirstName(createRefferalRequest.getFirstName());
637
        lead.setLastName(createRefferalRequest.getLastName());
638
        lead.setLeadMobile(createRefferalRequest.getMobile());
639
        lead.setState(createRefferalRequest.getState());
640
        lead.setCity(createRefferalRequest.getCity());
641
        lead.setAddress(createRefferalRequest.getAddress());
642
        lead.setCreatedTimestamp(LocalDateTime.now());
643
        lead.setUpdatedTimestamp(LocalDateTime.now());
644
        lead.setStatus(createRefferalRequest.getStatus());
645
        lead.setAssignTo(createRefferalRequest.getAssignTo());
646
        lead.setSource(createRefferalRequest.getSource());
32471 tejbeer 647
        if (createRefferalRequest.getColorCheck() == true) {
648
            lead.setColor("Green");
649
        } else {
650
            lead.setColor("Yellow");
651
        }
32464 tejbeer 652
        // change
653
        AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
654
        String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
655
        lead.setCreatedBy(authUserName);
656
        lead.setAuthId(authUser.getId());
657
        LOGGER.info("lead --- {}", lead);
658
        leadRepository.persist(lead);
659
        LeadActivity leadActivity = new LeadActivity();
660
        leadActivity.setLeadId(lead.getId());
661
        leadActivity.setRemark(createRefferalRequest.getRemark());
662
        leadActivity.setAuthId(authUser.getId());
32471 tejbeer 663
 
32464 tejbeer 664
        LOGGER.info("createRefferalRequest" + createRefferalRequest.getCommunicationType());
25979 tejbeer 665
 
32464 tejbeer 666
        if (createRefferalRequest.getStatus() == LeadStatus.followUp) {
667
            leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
668
            leadActivity.setCommunicationType(createRefferalRequest.getCommunicationType());
25979 tejbeer 669
 
32464 tejbeer 670
            if (leadActivity.getCommunicationType().equals(CommunicationType.VISIT)) {
671
                visitRequestRepository.createVisitRequest(lead.getId(), "lead", lead.getAssignTo(), createRefferalRequest.getSchelduleTimestamp());
672
            }
673
        } else {
674
            leadActivity.setSchelduleTimestamp(null);
675
        }
676
        leadActivity.setCreatedTimestamp(LocalDateTime.now());
677
        leadActivityRepository.persist(leadActivity);
34127 tejus.loha 678
        if (!lead.getStatus().equals(LeadStatus.notInterested)) {
679
            LeadDetailModel leadDetail = new LeadDetailModel();
680
            leadDetail.setLeadId(lead.getId());
681
            leadDetail.setOutletName(createRefferalRequest.getOutletName());
682
            leadDetail.setCounterSize(createRefferalRequest.getCounterSize());
25979 tejbeer 683
 
31249 tejbeer 684
 
34127 tejus.loha 685
            leadDetail.setFrontp(createRefferalRequest.getFrontp());
686
            leadDetail.setFrontWithMarket(createRefferalRequest.getFrontWithMarket());
31370 tejbeer 687
 
688
 
34127 tejus.loha 689
            leadDetail.setInternalLongShot(createRefferalRequest.getInternalLongShot());
31370 tejbeer 690
 
34127 tejus.loha 691
            leadDetail.setInternalLeftWall(createRefferalRequest.getInternalLeftWall());
29598 tejbeer 692
 
34127 tejus.loha 693
            leadDetail.setInternalRightWall(createRefferalRequest.getInternalRightWall());
694
            List<LeadBrandModel> brandModels = new ArrayList<LeadBrandModel>();
27605 tejbeer 695
 
34127 tejus.loha 696
            for (LeadBrandModel leadBrandModel : createRefferalRequest.getLeadBrands()) {
25979 tejbeer 697
 
34127 tejus.loha 698
                LeadBrandModel leadBrand = new LeadBrandModel();
699
                leadBrand.setBrand(leadBrandModel.getBrand());
700
                leadBrand.setValue(leadBrandModel.getValue());
29598 tejbeer 701
 
34127 tejus.loha 702
                brandModels.add(leadBrand);
25979 tejbeer 703
 
34127 tejus.loha 704
            }
29598 tejbeer 705
 
34127 tejus.loha 706
            leadDetail.setLeadBrands(brandModels);
29598 tejbeer 707
 
32471 tejbeer 708
            leadRepository.persistLeadDetail(leadDetail, authUser);
709
        }
32464 tejbeer 710
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
29598 tejbeer 711
 
32464 tejbeer 712
        return "response";
29598 tejbeer 713
 
32464 tejbeer 714
    }
29476 manish 715
 
29473 manish 716
 
32464 tejbeer 717
    @RequestMapping(value = "/editLead", method = RequestMethod.POST)
718
    public String EditLead(HttpServletRequest request, @RequestBody CreateLeacdActivityRequest createLeadActivityRequest, Model model) throws Exception {
719
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
29426 manish 720
 
32464 tejbeer 721
        AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
29426 manish 722
 
34113 tejus.loha 723
        Lead lead = leadRepository.selectById(createLeadActivityRequest.getId());
724
        AuthUser leadAuthUser = authRepository.selectById(lead.getAuthId());
32464 tejbeer 725
        LeadDetail leadDetail = leadDetailRepository.selectByLeadId(createLeadActivityRequest.getId());
29426 manish 726
 
34113 tejus.loha 727
        if (leadDetail == null && !createLeadActivityRequest.getStatus().equals(LeadStatus.notInterested) && leadAuthUser.isActive()) {
29426 manish 728
 
32464 tejbeer 729
            throw new ProfitMandiBusinessException("LeadDetail", "", "Please fill lead detail");
730
        }
29445 manish 731
 
32464 tejbeer 732
        LeadActivity leadActivity = new LeadActivity();
733
        leadActivity.setLeadId(createLeadActivityRequest.getId());
734
        leadActivity.setRemark(createLeadActivityRequest.getRemark());
29598 tejbeer 735
 
32464 tejbeer 736
        LOGGER.info("createRefferalRequest" + createLeadActivityRequest);
29598 tejbeer 737
 
32464 tejbeer 738
        if (createLeadActivityRequest.getStatus() == LeadStatus.followUp) {
739
            leadActivity.setSchelduleTimestamp(createLeadActivityRequest.getScheldule());
740
            leadActivity.setCommunicationType(createLeadActivityRequest.getCommunicationType());
741
            if (leadActivity.getCommunicationType().equals(CommunicationType.VISIT)) {
742
                visitRequestRepository.createVisitRequest(createLeadActivityRequest.getId(), "lead", createLeadActivityRequest.getAssignTo(), createLeadActivityRequest.getScheldule());
743
            }
744
        } else {
745
            leadActivity.setSchelduleTimestamp(null);
746
        }
747
        leadActivity.setCreatedTimestamp(LocalDateTime.now());
748
        leadActivity.setAuthId(authUser.getId());
749
        leadActivityRepository.persist(leadActivity);
750
        lead.setAssignTo(createLeadActivityRequest.getAssignTo());
751
        lead.setStatus(createLeadActivityRequest.getStatus());
32471 tejbeer 752
        if (createLeadActivityRequest.getColorCheck() == true) {
753
            lead.setColor("Green");
754
        } else {
755
            lead.setColor("Yellow");
756
        }
32464 tejbeer 757
        lead.setNotinterestedReason(createLeadActivityRequest.getReason());
758
        lead.setUpdatedTimestamp(LocalDateTime.now());
29426 manish 759
 
32464 tejbeer 760
        int authId = 0;
34127 tejus.loha 761
        authId = lead.getAssignTo();
762
        Map<Integer, LeadActivity> leadActivityMap = new HashMap<>();
29426 manish 763
 
34127 tejus.loha 764
        List<LeadActivity> leadActivitys = leadActivityRepository.selectBYLeadId(lead.getId());
29426 manish 765
 
34127 tejus.loha 766
        if (!leadActivitys.isEmpty()) {
767
            leadActivityMap.put(lead.getId(), leadActivitys.get(0));
768
        }
29426 manish 769
 
34127 tejus.loha 770
        Map<Integer, AuthUser> authIdAndAuthUserMap = new HashMap<>();
771
        AuthUser AuthUser = authRepository.selectById(authId);
29426 manish 772
 
34127 tejus.loha 773
        authIdAndAuthUserMap.put(AuthUser.getId(), AuthUser);
29426 manish 774
 
34127 tejus.loha 775
        model.addAttribute("leadActivityMap", leadActivityMap);
776
        model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
29426 manish 777
 
30185 tejbeer 778
 
33223 amit.gupta 779
        model.addAttribute("lead", lead);
30185 tejbeer 780
 
32464 tejbeer 781
        return "edit-lead";
30185 tejbeer 782
 
32464 tejbeer 783
    }
31370 tejbeer 784
 
32464 tejbeer 785
    @RequestMapping(value = "/downloadIvoryLead", method = RequestMethod.GET)
786
    public ResponseEntity<?> downloadDelayDayTemplate(HttpServletRequest request) throws Exception {
787
        List<String> stateNames = stateRepository.selectAll().stream().map(x -> x.getName()).collect(Collectors.toList());
31370 tejbeer 788
 
32464 tejbeer 789
        List<List<?>> rows = new ArrayList<>();
31496 tejbeer 790
 
32464 tejbeer 791
        List<LeadSource> lss = LeadSource.enumValues;
31370 tejbeer 792
 
32464 tejbeer 793
        for (LeadSource ls : lss) {
794
            rows.add(Arrays.asList("-", "-", "-", "-", "-", "-", "-", ls));
31478 tejbeer 795
 
32464 tejbeer 796
        }
797
        for (String stateName : stateNames) {
798
            rows.add(Arrays.asList("-", "-", "-", "-", stateName, "-", "-", "-"));
31478 tejbeer 799
 
32464 tejbeer 800
        }
31478 tejbeer 801
 
32464 tejbeer 802
        org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(Arrays.asList("First Name", "Last Name", "Address", "City", "State", "Mobile", "Assign To(email)", "Source"), rows);
31478 tejbeer 803
 
32464 tejbeer 804
        final HttpHeaders headers = new HttpHeaders();
805
        headers.set("Content-Type", "text/csv");
806
        headers.set("Content-disposition", "inline; filename=leads.format.csv");
807
        headers.setContentLength(baos.toByteArray().length);
31478 tejbeer 808
 
32464 tejbeer 809
        final InputStream inputStream = new ByteArrayInputStream(baos.toByteArray());
810
        final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
811
        return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
31478 tejbeer 812
 
32464 tejbeer 813
    }
31478 tejbeer 814
 
32464 tejbeer 815
    @RequestMapping(value = "/csvFileAndSetLead", method = RequestMethod.POST)
816
    public String readCsvFileAndSetLead(HttpServletRequest request, Model model, HttpServletResponse response, @RequestPart MultipartFile file) throws Throwable {
31478 tejbeer 817
 
32464 tejbeer 818
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
819
        String email = loginDetails.getEmailId();
31478 tejbeer 820
 
32464 tejbeer 821
        AuthUser createdBy = authRepository.selectByEmailOrMobile(email);
31478 tejbeer 822
 
32464 tejbeer 823
        LOGGER.info("file" + file.toString());
31478 tejbeer 824
 
32464 tejbeer 825
        String fileName = file.getName();
31370 tejbeer 826
 
32464 tejbeer 827
        String fileNames = file.getOriginalFilename();
31370 tejbeer 828
 
32464 tejbeer 829
        LOGGER.info("fileName" + fileName);
830
        LOGGER.info("fileNames" + fileNames);
31370 tejbeer 831
 
32464 tejbeer 832
        List<CSVRecord> records = FileUtil.readFile(file);
31370 tejbeer 833
 
32464 tejbeer 834
        for (CSVRecord record : records) {
31370 tejbeer 835
 
32464 tejbeer 836
            Lead lead = new Lead();
837
            lead.setFirstName(record.get(0));
838
            lead.setLastName(record.get(1));
839
            lead.setAddress(record.get(2));
840
            lead.setCity(record.get(3));
841
            lead.setState(record.get(4));
842
            lead.setLeadMobile(record.get(5));
843
            LOGGER.info("record" + record.get(6));
31370 tejbeer 844
 
32464 tejbeer 845
            AuthUser assignTo = authRepository.selectByEmailOrMobile(record.get(6));
31370 tejbeer 846
 
32464 tejbeer 847
            if (assignTo == null) {
848
                throw new ProfitMandiBusinessException("Assign To ", record.get(6), "email id not exist");
849
            }
31370 tejbeer 850
 
32464 tejbeer 851
            lead.setAssignTo(assignTo.getId());
852
            lead.setSource(record.get(7));
31370 tejbeer 853
 
32464 tejbeer 854
            lead.setCreatedTimestamp(LocalDateTime.now());
31370 tejbeer 855
 
32464 tejbeer 856
            lead.setUpdatedTimestamp(LocalDateTime.now());
857
            lead.setStatus(LeadStatus.pending);
858
            lead.setColor("yellow");
859
            // change
860
            lead.setCreatedBy(createdBy.getFullName());
861
            lead.setAuthId(createdBy.getId());
31370 tejbeer 862
 
32464 tejbeer 863
            leadRepository.persist(lead);
31370 tejbeer 864
 
32464 tejbeer 865
            LeadActivity leadActivity = new LeadActivity();
866
            leadActivity.setLeadId(lead.getId());
867
            leadActivity.setRemark("New Lead");
868
            leadActivity.setSchelduleTimestamp(null);
31370 tejbeer 869
 
32464 tejbeer 870
            leadActivity.setCreatedTimestamp(LocalDateTime.now());
871
            leadActivityRepository.persist(leadActivity);
872
            model.addAttribute("response1", mvcResponseSender.createResponseString(true));
31370 tejbeer 873
 
32464 tejbeer 874
        }
31370 tejbeer 875
 
32464 tejbeer 876
        model.addAttribute("responseSTG", mvcResponseSender.createResponseString(true));
31370 tejbeer 877
 
32464 tejbeer 878
        return "response";
31370 tejbeer 879
 
32464 tejbeer 880
    }
31370 tejbeer 881
 
32464 tejbeer 882
    @RequestMapping(value = "/teamCommitment", method = RequestMethod.GET)
883
    public String teamCommitments(HttpServletRequest request, Model model) throws Exception {
31370 tejbeer 884
 
32464 tejbeer 885
        return "team-commitment";
31370 tejbeer 886
 
32464 tejbeer 887
    }
31370 tejbeer 888
 
32464 tejbeer 889
    @RequestMapping(value = "/leadDetail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
890
    public String leadDetail(HttpServletRequest request, @RequestBody LeadDetailModel leadDetailModel, Model model) throws Exception {
31370 tejbeer 891
 
32464 tejbeer 892
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
893
        AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
31370 tejbeer 894
 
32471 tejbeer 895
        leadRepository.persistLeadDetail(leadDetailModel, authUser);
32464 tejbeer 896
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
31370 tejbeer 897
 
32464 tejbeer 898
        return "response";
31370 tejbeer 899
 
32464 tejbeer 900
    }
31370 tejbeer 901
 
32464 tejbeer 902
    @RequestMapping(value = "/getLeadDetail", method = RequestMethod.GET)
903
    public String getLeadDetail(HttpServletRequest request, Model model) throws Exception {
904
        List<Integer> followUpleadIds = leadRepository.selectAllByStatus(LeadStatus.followUp).stream().map(x -> x.getId()).collect(Collectors.toList());
905
        List<LeadDetail> leadDetails = leadDetailRepository.selectByLeadIds(followUpleadIds);
31370 tejbeer 906
 
32464 tejbeer 907
        List<DBObject> mobileBrands = mongoClient.getAllBrandsToDisplay(3);
31370 tejbeer 908
 
32464 tejbeer 909
        List<String> brands = mobileBrands.stream().map(x -> (String) x.get("name")).collect(Collectors.toList());
31370 tejbeer 910
 
32464 tejbeer 911
        model.addAttribute("brands", brands);
912
        if (!leadDetails.isEmpty()) {
31370 tejbeer 913
 
32464 tejbeer 914
            List<Integer> detailsIds = leadDetails.stream().map(x -> x.getId()).collect(Collectors.toList());
31370 tejbeer 915
 
32464 tejbeer 916
            List<Integer> leadIds = leadDetails.stream().map(x -> x.getLeadId()).collect(Collectors.toList());
31370 tejbeer 917
 
32464 tejbeer 918
            Map<Integer, Lead> leadMap = leadRepository.selectAllByIds(leadIds).stream().filter(x -> x.getStatus().equals(LeadStatus.followUp)).collect(Collectors.toMap(x -> x.getId(), x -> x));
31370 tejbeer 919
 
32464 tejbeer 920
            Map<Integer, Optional<LeadActivity>> leadActivityMap = leadActivityRepository.selectAllByleadIds(leadIds).stream().collect(Collectors.groupingBy(x -> x.getLeadId(), Collectors.maxBy(Comparator.comparing(LeadActivity::getId))));
31370 tejbeer 921
 
32464 tejbeer 922
            model.addAttribute("leadActivityMap", leadActivityMap);
30185 tejbeer 923
 
32464 tejbeer 924
            List<LeadBrand> leadBrands = leadBrandRepository.selectByLeadDetailId(detailsIds);
30185 tejbeer 925
 
32464 tejbeer 926
            LOGGER.info("leadBrands {}" + leadBrands);
30185 tejbeer 927
 
32464 tejbeer 928
            Map<Integer, Map<String, Integer>> leadDetailBrandValue = new HashMap<>();
30416 tejbeer 929
 
32464 tejbeer 930
            Map<Integer, List<LeadBrand>> leadDetail = leadBrands.stream().collect(Collectors.groupingBy(x -> x.getLeadDetailId(), Collectors.toList()));
30416 tejbeer 931
 
32464 tejbeer 932
            for (Entry<Integer, List<LeadBrand>> leadDetailEntry : leadDetail.entrySet()) {
30416 tejbeer 933
 
32464 tejbeer 934
                Map<String, Integer> brandValue = new HashMap<>();
30416 tejbeer 935
 
32464 tejbeer 936
                for (LeadBrand leadBrand : leadDetailEntry.getValue()) {
937
                    brandValue.put(leadBrand.getBrand(), leadBrand.getValue());
30416 tejbeer 938
 
32464 tejbeer 939
                }
940
                leadDetailBrandValue.put(leadDetailEntry.getKey(), brandValue);
941
            }
30416 tejbeer 942
 
32464 tejbeer 943
            LOGGER.info("leadDetailBrandValue {}" + leadDetailBrandValue);
30416 tejbeer 944
 
32464 tejbeer 945
            model.addAttribute("leadDetailBrandValue", leadDetailBrandValue);
30416 tejbeer 946
 
32464 tejbeer 947
            model.addAttribute("leadMap", leadMap);
948
        }
30434 tejbeer 949
 
32464 tejbeer 950
        model.addAttribute("leadDetails", leadDetails);
30434 tejbeer 951
 
32464 tejbeer 952
        Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllActiveUser().stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
953
        model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
30434 tejbeer 954
 
32464 tejbeer 955
        return "lead-detail";
30458 tejbeer 956
 
32464 tejbeer 957
    }
30458 tejbeer 958
 
32464 tejbeer 959
    @RequestMapping(value = "/getLeadDetailByLeadId", method = RequestMethod.GET)
960
    public ResponseEntity<?> getLeadDetailByLeadId(HttpServletRequest request, @RequestParam int leadId, Model model) throws Exception {
30458 tejbeer 961
 
32464 tejbeer 962
        LeadDetail leadDetail = leadDetailRepository.selectByLeadId(leadId);
963
        return responseSender.ok(leadDetail);
30458 tejbeer 964
 
32464 tejbeer 965
    }
30434 tejbeer 966
 
32464 tejbeer 967
    @RequestMapping(value = "/getTeamCommitment", method = RequestMethod.GET)
968
    public String getTeamCommitments(HttpServletRequest request, @RequestParam LocalDateTime date, Model model) throws Exception {
30781 tejbeer 969
 
32464 tejbeer 970
        List<TeamCommitmentModel> commitments = partnerCollectionPlanRepository.selectTeamCommitmentByDate(date.toLocalDate());
30416 tejbeer 971
 
32464 tejbeer 972
        model.addAttribute("commitments", commitments);
973
        return "team-commitment-table";
30416 tejbeer 974
 
32464 tejbeer 975
    }
30416 tejbeer 976
 
33917 ranu 977
    @Autowired
978
    RbmTargetService rbmTargetService;
979
 
980
    @RequestMapping(value = "/rbmTodayArr", method = RequestMethod.GET)
981
    public String getRbmTodayArr(HttpServletRequest request, Model model, @RequestParam(value = "startDate", required = false) LocalDate startDate) throws Exception {
982
        List<RbmArrViewModel> rbmArrViewModels;
983
 
984
        if (startDate != null) {
985
            rbmArrViewModels = rbmTargetService.getRbmTodayArr(startDate);
986
        } else {
987
            rbmArrViewModels = rbmTargetService.getRbmTodayArr();
988
        }
989
 
33953 ranu 990
        double totalAchieved = rbmArrViewModels.stream()
991
                .mapToDouble(RbmArrViewModel::getTotalAchievedTarget) // Replace with the actual getter method
992
                .sum();
993
 
994
        double totalTarget = rbmArrViewModels.stream()
995
                .mapToDouble(RbmArrViewModel::getTodayTarget) // Replace with the actual getter method
996
                .sum();
997
 
34055 ranu 998
        List<Sold15daysOldAgingModel> sold15daysOldAgingModels = rbmTargetService.getAgingSale(LocalDate.now(), LocalDate.now().plusDays(1));
999
        List<Our15DaysOldAgingStock> our15DaysOldAgingStocks = rbmTargetService.our15DaysAgingStock();
1000
 
34103 ranu 1001
 
1002
//        first week count of rbm partner billing
1003
        LocalDate firstOfCurrentMonth = LocalDate.now().withDayOfMonth(1);
1004
        LocalDate seventhOfCurrentMonth = LocalDate.now().withDayOfMonth(7);
1005
 
1006
        List<RbmBilledFofoIdsModel> rbmBilledFofoIdsModelsFirstWeek = rbmTargetService.getDateWiseBilledFofoIdByRbm(firstOfCurrentMonth, seventhOfCurrentMonth);
1007
 
1008
        Map<String, Long> rbmBilledCountMapFirstWeek = rbmBilledFofoIdsModelsFirstWeek.stream()
1009
                .filter(x -> x.getStatus().equals("Billed"))
1010
                .collect(Collectors.groupingBy(RbmBilledFofoIdsModel::getRbmName, Collectors.counting()));
1011
 
34119 ranu 1012
        long totalFirstWeekCount = rbmBilledCountMapFirstWeek.values().stream()
1013
                .mapToLong(Long::longValue)
1014
                .sum();
1015
 
34114 ranu 1016
        Map<String, Long> rbmTargetedFofoIdCountMap = rbmBilledFofoIdsModelsFirstWeek.stream()
1017
                .collect(Collectors.groupingBy(
1018
                        RbmBilledFofoIdsModel::getRbmName, // Group by RBM Name
1019
                        Collectors.counting() // Count all fofoId entries for each RBM
1020
                ));
34103 ranu 1021
 
34119 ranu 1022
        long totalTargetedCount = rbmTargetedFofoIdCountMap.values().stream().mapToLong(x -> x.longValue()).sum();
34114 ranu 1023
 
1024
 
34103 ranu 1025
//        second week count of rbm partner billing
1026
 
1027
        LocalDate eightOfCurrentMonth = LocalDate.now().withDayOfMonth(8);
1028
        LocalDate fifteenOfCurrentMonth = LocalDate.now().withDayOfMonth(15);
1029
 
1030
        List<RbmBilledFofoIdsModel> rbmBilledFofoIdsModelsSecondWeek = rbmTargetService.getDateWiseBilledFofoIdByRbm(eightOfCurrentMonth, fifteenOfCurrentMonth);
1031
 
1032
        Map<String, Long> rbmBilledCountMapSecondWeek = rbmBilledFofoIdsModelsSecondWeek.stream()
1033
                .filter(x -> x.getStatus().equals("Billed"))
1034
                .collect(Collectors.groupingBy(RbmBilledFofoIdsModel::getRbmName, Collectors.counting()));
1035
 
34119 ranu 1036
        long totalSecondWeekCount = rbmBilledCountMapSecondWeek.values().stream().mapToLong(Long::longValue).sum();
34103 ranu 1037
 
1038
//      third week count of rbm partner billing
1039
 
1040
        LocalDate sixteenOfCurrentMonth = LocalDate.now().withDayOfMonth(16);
34144 ranu 1041
        LocalDate twentySecondOfCurrentMonth = LocalDate.now().withDayOfMonth(22);
34103 ranu 1042
 
34144 ranu 1043
        List<RbmBilledFofoIdsModel> rbmBilledFofoIdsModelsThirdWeek = rbmTargetService.getDateWiseBilledFofoIdByRbm(sixteenOfCurrentMonth, twentySecondOfCurrentMonth);
34103 ranu 1044
 
1045
        Map<String, Long> rbmBilledCountMapThirdWeek = rbmBilledFofoIdsModelsThirdWeek.stream()
1046
                .filter(x -> x.getStatus().equals("Billed"))
1047
                .collect(Collectors.groupingBy(RbmBilledFofoIdsModel::getRbmName, Collectors.counting()));
1048
 
34119 ranu 1049
        long totalThirdWeekCount = rbmBilledCountMapThirdWeek.values().stream().mapToLong(Long::longValue).sum();
34103 ranu 1050
 
34119 ranu 1051
 
34103 ranu 1052
        //      fourth week count of rbm partner billing
1053
 
34144 ranu 1054
        LocalDate twentyThirdOfCurrentMonth = LocalDate.now().withDayOfMonth(23);
34103 ranu 1055
        LocalDate lastDayOfCurrentMonth = LocalDate.now().withDayOfMonth(LocalDate.now().lengthOfMonth());
1056
 
34144 ranu 1057
        List<RbmBilledFofoIdsModel> rbmBilledFofoIdsModelsFourthWeek = rbmTargetService.getDateWiseBilledFofoIdByRbm(twentyThirdOfCurrentMonth, lastDayOfCurrentMonth);
34103 ranu 1058
 
1059
        Map<String, Long> rbmBilledCountMapFourthWeek = rbmBilledFofoIdsModelsFourthWeek.stream()
1060
                .filter(x -> x.getStatus().equals("Billed"))
1061
                .collect(Collectors.groupingBy(RbmBilledFofoIdsModel::getRbmName, Collectors.counting()));
1062
 
34119 ranu 1063
        long totalFourthWeekCount = rbmBilledCountMapFourthWeek.values().stream().mapToLong(x -> x.longValue()).sum();
34103 ranu 1064
 
34119 ranu 1065
 
34103 ranu 1066
//      mtd rbm partner billing
1067
 
1068
        List<RbmBilledFofoIdsModel> rbmBilledFofoIdsModelsMtd = rbmTargetService.getDateWiseBilledFofoIdByRbm(firstOfCurrentMonth, LocalDate.now());
1069
 
1070
        Map<String, Long> rbmBilledCountMapMtd = rbmBilledFofoIdsModelsMtd.stream()
1071
                .filter(x -> x.getStatus().equals("Billed"))
1072
                .collect(Collectors.groupingBy(RbmBilledFofoIdsModel::getRbmName, Collectors.counting()));
1073
 
34119 ranu 1074
        long totalMtdCount = rbmBilledCountMapMtd.values().stream().mapToLong(Long::longValue).sum();
1075
 
1076
        Map<String, Long> zeroBilledCountMap = rbmTargetedFofoIdCountMap.entrySet().stream()
1077
                .collect(Collectors.toMap(
1078
                        Map.Entry::getKey,
1079
                        entry -> entry.getValue() - rbmBilledCountMapMtd.getOrDefault(entry.getKey(), 0L)
1080
                ));
1081
 
1082
        long totalZeroBilledCount = zeroBilledCountMap.values().stream().mapToLong(Long::longValue).sum();
1083
 
33917 ranu 1084
        LOGGER.info("rbmArrViewModels {}", rbmArrViewModels);
1085
        model.addAttribute("rbmArrViewModels", rbmArrViewModels);
33953 ranu 1086
        model.addAttribute("totalTarget", totalTarget);
1087
        model.addAttribute("totalAchieved", totalAchieved);
34055 ranu 1088
        model.addAttribute("sold15daysOldAgingModels", sold15daysOldAgingModels);
1089
        model.addAttribute("our15DaysOldAgingStocks", our15DaysOldAgingStocks);
33917 ranu 1090
 
34114 ranu 1091
        model.addAttribute("rbmTargetedFofoIdCountMap", rbmTargetedFofoIdCountMap);
34103 ranu 1092
        model.addAttribute("rbmBilledCountMapFirstWeek", rbmBilledCountMapFirstWeek);
1093
        model.addAttribute("rbmBilledCountMapSecondWeek", rbmBilledCountMapSecondWeek);
1094
        model.addAttribute("rbmBilledCountMapThirdWeek", rbmBilledCountMapThirdWeek);
1095
        model.addAttribute("rbmBilledCountMapFourthWeek", rbmBilledCountMapFourthWeek);
1096
        model.addAttribute("rbmBilledCountMapMtd", rbmBilledCountMapMtd);
34119 ranu 1097
        model.addAttribute("zeroBilledCountMap", zeroBilledCountMap);
1098
        model.addAttribute("totalFirstWeekCount", totalFirstWeekCount);
1099
        model.addAttribute("totalTargetedCount", totalTargetedCount);
1100
        model.addAttribute("totalSecondWeekCount", totalSecondWeekCount);
1101
        model.addAttribute("totalThirdWeekCount", totalThirdWeekCount);
1102
        model.addAttribute("totalFourthWeekCount", totalFourthWeekCount);
1103
        model.addAttribute("totalMtdCount", totalMtdCount);
1104
        model.addAttribute("totalZeroBilledCount", totalZeroBilledCount);
34103 ranu 1105
 
33917 ranu 1106
        return "rbm-today-arr";
1107
    }
1108
 
1109
 
32464 tejbeer 1110
    @RequestMapping(value = "/partnerHealth", method = RequestMethod.GET)
1111
    public String partnerHealth(HttpServletRequest request, @RequestParam(name = "email", required = false) String email, Model model) throws Exception {
1112
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
30416 tejbeer 1113
 
32464 tejbeer 1114
        if (StringUtils.isEmpty(email)) {
1115
            email = loginDetails.getEmailId();
1116
        } else {
1117
            AuthUser selectedUser = authRepository.selectByEmailOrMobile(email);
30416 tejbeer 1118
 
32464 tejbeer 1119
            model.addAttribute("selectedUser", selectedUser);
30445 tejbeer 1120
 
32464 tejbeer 1121
        }
30445 tejbeer 1122
 
32464 tejbeer 1123
        AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
30445 tejbeer 1124
 
32464 tejbeer 1125
        Map<String, Set<Integer>> storeGuyMap = csService.getAuthUserPartnerIdMapping();
1126
        List<Integer> fofoIds = new ArrayList<>(storeGuyMap.get(email));
1127
        LocalDateTime startDate = LocalDate.now().atStartOfDay();
1128
        if (fofoIds != null && fofoIds.size() > 0) {
1129
            List<Integer> fofoIdList = fofoStoreRepository.selectByRetailerIds(fofoIds).stream().filter(x -> !x.isInternal()).map(x -> x.getId()).collect(Collectors.toList());
30420 tejbeer 1130
 
32464 tejbeer 1131
            Map<Integer, PartnerCollectionPlanModel> foundCollectionMap = partnerCollectionService.getCollectionMap(fofoIdList, startDate);
30416 tejbeer 1132
 
32464 tejbeer 1133
            List<Integer> remarkIds = partnerCollectionRemarkRepository.selectMaxRemarkId(fofoIdList);
30416 tejbeer 1134
 
32464 tejbeer 1135
            LOGGER.info("remarkIds {}", remarkIds);
30416 tejbeer 1136
 
32464 tejbeer 1137
            long todayOverallCall = 0;
1138
            if (!remarkIds.isEmpty()) {
30416 tejbeer 1139
 
32464 tejbeer 1140
                if (authUser.getEmailId().equals(email)) {
30441 tejbeer 1141
 
32464 tejbeer 1142
                    todayOverallCall = partnerCollectionRemarkRepository.selectByIds(remarkIds).stream().filter(x -> x.getCreateTimestamp().toLocalDate().equals(LocalDate.now())).collect(Collectors.counting());
1143
                } else {
30441 tejbeer 1144
 
32464 tejbeer 1145
                    todayOverallCall = partnerCollectionRemarkRepository.selectByAuthIdAndIds(authRepository.selectByEmailOrMobile(email).getId(), remarkIds).stream().filter(x -> x.getCreateTimestamp().toLocalDate().equals(LocalDate.now())).collect(Collectors.counting());
30416 tejbeer 1146
 
32464 tejbeer 1147
                }
30416 tejbeer 1148
 
32464 tejbeer 1149
            }
1150
            ChartLeadModel cm = new ChartLeadModel();
30416 tejbeer 1151
 
32464 tejbeer 1152
            if (!foundCollectionMap.isEmpty()) {
1153
                cm = this.getCollectionCount(foundCollectionMap.values().stream().collect(Collectors.toList()));
30416 tejbeer 1154
 
32464 tejbeer 1155
            }
1156
            model.addAttribute("chartPartnerHealth", gson.toJson(cm));
1157
            Map<Integer, PartnerDailyInvestment> partnerDailyInvestmentMap = new HashMap<>();
30416 tejbeer 1158
 
32464 tejbeer 1159
            List<PartnerDailyInvestment> partnerDailyInvestments = partnerDailyInvestmentRepository.selectAll(fofoIdList, startDate.toLocalDate().minusDays(1));
1160
            if (!partnerDailyInvestments.isEmpty()) {
1161
                partnerDailyInvestmentMap = partnerDailyInvestments.stream().collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
1162
            }
30416 tejbeer 1163
 
32464 tejbeer 1164
            Map<LocalDate, Map<Integer, PartnerCollectionPlanModel>> pcpmMap = new TreeMap<>();
1165
            for (int i = 0; i <= 6; i++) {
30416 tejbeer 1166
 
32464 tejbeer 1167
                Map<Integer, PartnerCollectionPlanModel> collectionMap = partnerCollectionService.getCollectionMap(fofoIdList, startDate.minusDays(i));
30416 tejbeer 1168
 
32464 tejbeer 1169
                pcpmMap.put(startDate.minusDays(i).toLocalDate(), collectionMap);
1170
            }
30416 tejbeer 1171
 
32464 tejbeer 1172
            Map<Integer, PartnerCollectionPlanModel> todayPcpmMap = pcpmMap.get(startDate.toLocalDate());
1173
            model.addAttribute("todayPcpmMap", todayPcpmMap);
30416 tejbeer 1174
 
32464 tejbeer 1175
            TotalTargetColectionModel totalTargetCollection = partnerCollectionService.getTotalTargetCollection(todayPcpmMap, startDate);
1176
            model.addAttribute("totalPartnerTargetCollection", totalTargetCollection.getTotalTarget());
30416 tejbeer 1177
 
32464 tejbeer 1178
            model.addAttribute("totalPartnerAchievement", totalTargetCollection.getTotalAchievement());
30416 tejbeer 1179
 
32464 tejbeer 1180
            Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
1181
            Map<Integer, CustomRetailer> customRetailers = fofoIdList.stream().distinct().map(x -> customRetailerMap.get(x)).filter(x -> x != null).collect(Collectors.toList()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
1182
            List<Integer> allReportees = authService.getAllReportees(authUser.getId());
30416 tejbeer 1183
 
32464 tejbeer 1184
            List<Integer> salesPositionsAuthIds = positionRepository.selectPositionByCategoryId(ProfitMandiConstants.TICKET_CATEGORY_SALES).stream().map(x -> x.getAuthUserId()).collect(Collectors.toList());
1185
            List<Integer> rbmPositionsAuthIds = positionRepository.selectPositionByCategoryId(ProfitMandiConstants.TICKET_CATEGORY_RBM).stream().map(x -> x.getAuthUserId()).collect(Collectors.toList());
30416 tejbeer 1186
 
32464 tejbeer 1187
            salesPositionsAuthIds.addAll(rbmPositionsAuthIds);
30416 tejbeer 1188
 
32464 tejbeer 1189
            Set<Integer> empHierarchy = allReportees.stream().filter(x -> salesPositionsAuthIds.contains(x)).collect(Collectors.toSet());
34027 ranu 1190
            List<AuthUser> authUsers = new ArrayList<>();
1191
            if (!empHierarchy.isEmpty()) {
1192
                authUsers = authRepository.selectAllAuthUserByIds(new ArrayList<>(empHierarchy));
1193
            }
30416 tejbeer 1194
 
1195
 
32464 tejbeer 1196
            Map<Integer, AuthUser> authUserMap = authRepository.selectAll().stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
30416 tejbeer 1197
 
32464 tejbeer 1198
            LOGGER.info("todayPcpmMap {}", todayPcpmMap);
30416 tejbeer 1199
 
32464 tejbeer 1200
            model.addAttribute("authUsers", authUsers);
1201
            model.addAttribute("authUserMap", authUserMap);
1202
            model.addAttribute("partnerCollectionPlanMap", pcpmMap);
1203
            model.addAttribute("partnerDailyInvestmentMap", partnerDailyInvestmentMap);
1204
            model.addAttribute("customRetailers", customRetailers);
1205
            model.addAttribute("rankColorMap", ProfitMandiConstants.Rank_Color_Map);
1206
            model.addAttribute("todayOverallCall", todayOverallCall);
30522 tejbeer 1207
 
32464 tejbeer 1208
        }
1209
        return "partner-health";
30522 tejbeer 1210
 
32464 tejbeer 1211
    }
30522 tejbeer 1212
 
32464 tejbeer 1213
    public ChartLeadModel getCollectionCount(List<PartnerCollectionPlanModel> pcpm) throws ProfitMandiBusinessException {
30522 tejbeer 1214
 
32464 tejbeer 1215
        Map<Integer, Long> rankCount = pcpm.stream().collect(Collectors.groupingBy(x -> x.getRank(), Collectors.mapping(PartnerCollectionPlanModel::getRank, Collectors.counting())));
30522 tejbeer 1216
 
32464 tejbeer 1217
        ChartLeadModel cm = new ChartLeadModel();
30522 tejbeer 1218
 
32464 tejbeer 1219
        List<String> labels = new ArrayList<>();
1220
        labels.add("Plan for Today");
1221
        labels.add("Carry Forward");
1222
        labels.add("Untouched");
1223
        labels.add("Plan for Future");
1224
        labels.add("Normal");
30522 tejbeer 1225
 
32464 tejbeer 1226
        List<String> backgroundColor = new ArrayList<>();
1227
        List<Long> values = new ArrayList<>();
30522 tejbeer 1228
 
32464 tejbeer 1229
        for (String label : labels) {
30522 tejbeer 1230
 
32464 tejbeer 1231
            if (label.equals("Plan for Today")) {
1232
                backgroundColor.add("#007bff");
1233
                values.add(rankCount.get(1));
1234
            }
1235
            if (label.equals("Carry Forward")) {
1236
                backgroundColor.add("#ffc107");
1237
                values.add(rankCount.get(2));
1238
            }
1239
            if (label.equals("Untouched")) {
1240
                backgroundColor.add("#dc3545");
1241
                values.add(rankCount.get(3));
1242
            }
1243
            if (label.equals("Plan for Future")) {
1244
                backgroundColor.add("#6c757d");
1245
                values.add(rankCount.get(4));
1246
            }
1247
            if (label.equals("Normal")) {
1248
                backgroundColor.add("White");
1249
                values.add(rankCount.get(5));
1250
            }
30522 tejbeer 1251
 
32464 tejbeer 1252
        }
30522 tejbeer 1253
 
32464 tejbeer 1254
        LOGGER.info("backgroundColor" + backgroundColor);
1255
        LOGGER.info("labelsChartLead" + labels);
1256
        LeadStatusData data = new LeadStatusData();
1257
        data.setData(values);
1258
        data.setBackgroundColor(backgroundColor);
1259
        data.setLabel("DataSet 1");
30522 tejbeer 1260
 
32464 tejbeer 1261
        PieLables label = new PieLables();
1262
        label.setFontColor("black");
1263
        label.setFontSize(15);
30522 tejbeer 1264
 
32464 tejbeer 1265
        Legend legend = new Legend();
1266
        legend.setLabels(label);
1267
        legend.setPosition("left");
30522 tejbeer 1268
 
32464 tejbeer 1269
        List<LeadStatusData> dataList = new ArrayList<>();
1270
        dataList.add(data);
30522 tejbeer 1271
 
32464 tejbeer 1272
        DataLeadModel datasets = new DataLeadModel();
1273
        datasets.setDatasets(dataList);
1274
        datasets.setLabels(labels);
30522 tejbeer 1275
 
32464 tejbeer 1276
        OptionModel om = new OptionModel();
1277
        om.setLegend(legend);
30522 tejbeer 1278
 
32464 tejbeer 1279
        cm.setType("pie");
1280
        cm.setData(datasets);
1281
        cm.setOptions(om);
30522 tejbeer 1282
 
32464 tejbeer 1283
        return cm;
1284
    }
30522 tejbeer 1285
 
32464 tejbeer 1286
    @RequestMapping(value = "/franchiseVisit", method = RequestMethod.GET)
1287
    public String franchiseVisit(HttpServletRequest request, @RequestParam(name = "email", required = false) String email, Model model) throws Exception {
1288
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
30522 tejbeer 1289
 
32464 tejbeer 1290
        AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
30522 tejbeer 1291
 
32464 tejbeer 1292
        List<Integer> salesPositionsAuthIds = positionRepository.selectPositionByCategoryId(ProfitMandiConstants.TICKET_CATEGORY_SALES).stream().map(x -> x.getAuthUserId()).collect(Collectors.toList());
1293
        List<Integer> rbmPositionsAuthIds = positionRepository.selectPositionByCategoryId(ProfitMandiConstants.TICKET_CATEGORY_RBM).stream().map(x -> x.getAuthUserId()).collect(Collectors.toList());
30522 tejbeer 1294
 
32464 tejbeer 1295
        salesPositionsAuthIds.addAll(rbmPositionsAuthIds);
30522 tejbeer 1296
 
32464 tejbeer 1297
        List<Integer> allReportees = authService.getAllReportees(authUser.getId());
30522 tejbeer 1298
 
32464 tejbeer 1299
        Set<Integer> empHierarchy = allReportees.stream().filter(x -> salesPositionsAuthIds.contains(x)).collect(Collectors.toSet());
30522 tejbeer 1300
 
32464 tejbeer 1301
        List<AuthUser> authUsers = authRepository.selectAllAuthUserByIds(new ArrayList<>(empHierarchy));
30522 tejbeer 1302
 
32464 tejbeer 1303
        Map<Integer, String> monthValueMap = new HashMap<>();
1304
        for (int i = 0; i <= 5; i++) {
1305
            LocalDateTime startOfMonth = LocalDateTime.now().withDayOfMonth(1).minusMonths(i);
1306
            monthValueMap.put(i, startOfMonth.format(DateTimeFormatter.ofPattern("MMM''uu")));
1307
        }
30522 tejbeer 1308
 
32464 tejbeer 1309
        model.addAttribute("authUsers", authUsers);
1310
        model.addAttribute("monthValueMap", monthValueMap);
30522 tejbeer 1311
 
32464 tejbeer 1312
        return "franchise-visit";
30522 tejbeer 1313
 
32464 tejbeer 1314
    }
30522 tejbeer 1315
 
32464 tejbeer 1316
    @RequestMapping(value = "/getFranchiseVisit", method = RequestMethod.GET)
1317
    public String getFranchiseVisit(HttpServletRequest request, @RequestParam(name = "authId", required = false) int authId, int yearMonth, Model model) throws Exception {
30522 tejbeer 1318
 
32464 tejbeer 1319
        LocalDateTime startDate = LocalDate.now().minusMonths(8).withDayOfMonth(1).atStartOfDay();
1320
        LocalDateTime endDate = startDate.plusMonths(1).withDayOfMonth(1).toLocalDate().atStartOfDay();
30522 tejbeer 1321
 
32464 tejbeer 1322
        DateRangeModel drm = DateRangeModel.of(startDate, endDate);
30522 tejbeer 1323
 
32464 tejbeer 1324
        List<FranchiseeVisit> visits = franchiseeVisitRepository.selectByAuthUserAndDateRange(drm, authId);
30522 tejbeer 1325
 
32464 tejbeer 1326
        if (!visits.isEmpty()) {
30522 tejbeer 1327
 
32464 tejbeer 1328
            Map<Integer, List<FranchiseeVisit>> franchiseeVisitMap = visits.stream().collect(Collectors.groupingBy(x -> x.getScheduleTimestamp().getDayOfMonth()));
30522 tejbeer 1329
 
32464 tejbeer 1330
            model.addAttribute("franchiseeVisitMap", franchiseeVisitMap);
30522 tejbeer 1331
 
32464 tejbeer 1332
        }
30771 amit.gupta 1333
 
32464 tejbeer 1334
        model.addAttribute("visits", visits);
1335
        model.addAttribute("monthLength", startDate.toLocalDate().lengthOfMonth());
30771 amit.gupta 1336
 
32464 tejbeer 1337
        // Calender
30771 amit.gupta 1338
 
32464 tejbeer 1339
        int Year = startDate.getYear(); // year
1340
        int startDayOfMonth = 5;
1341
        int spaces = startDayOfMonth;
30771 amit.gupta 1342
 
32464 tejbeer 1343
        int month = startDate.getMonthValue();
30771 amit.gupta 1344
 
32464 tejbeer 1345
        int[] days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
30771 amit.gupta 1346
 
32464 tejbeer 1347
        LOGGER.info("visits {} ", visits);
30771 amit.gupta 1348
 
32464 tejbeer 1349
        if ((((Year % 4 == 0) && (Year % 100 != 0)) || (Year % 400 == 0)) && month == 2) {
1350
            days[month] = 29;
1351
        }
30771 amit.gupta 1352
 
32464 tejbeer 1353
        spaces = (days[month - 1] + spaces) % 7;
30771 amit.gupta 1354
 
32464 tejbeer 1355
        model.addAttribute("month", month);
1356
        model.addAttribute("spaces", spaces);
1357
        model.addAttribute("days", days);
30771 amit.gupta 1358
 
32464 tejbeer 1359
        return "franchise-visit-container";
30771 amit.gupta 1360
 
32464 tejbeer 1361
    }
31249 tejbeer 1362
 
32464 tejbeer 1363
    @RequestMapping(value = "/getFranchiseeActivity", method = RequestMethod.GET)
1364
    public String getFranchiseeActivity(HttpServletRequest request, int visitId, Model model) throws Exception {
31249 tejbeer 1365
 
32464 tejbeer 1366
        List<FranchiseeActivity> franchiseeActivities = franchiseeActivityRepository.selectByFranchiseeVisitId(visitId);
31249 tejbeer 1367
 
32464 tejbeer 1368
        FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(visitId);
31249 tejbeer 1369
 
32464 tejbeer 1370
        Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAll().stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
1371
        model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
31249 tejbeer 1372
 
32464 tejbeer 1373
        model.addAttribute("franchiseeVisit", franchiseeVisit);
1374
        model.addAttribute("franchiseeActivity", franchiseeActivities.get(0));
31249 tejbeer 1375
 
32464 tejbeer 1376
        return "franchie-visit-detail";
31249 tejbeer 1377
 
32464 tejbeer 1378
    }
31249 tejbeer 1379
 
32464 tejbeer 1380
    @RequestMapping(value = "/indent/today_target", method = RequestMethod.GET)
1381
    public String todayTarget(HttpServletRequest request, Model model) throws Exception {
1382
        List<RBMPerformanceSummaryModel> summaryModels = new ArrayList<>();
1383
        List<Integer> rbmPositionsAuthIds = positionRepository.selectPositionByCategoryId(ProfitMandiConstants.TICKET_CATEGORY_RBM).stream().filter(x -> Arrays.asList(EscalationType.L1, EscalationType.L2).contains(x.getEscalationType())).map(x -> x.getAuthUserId()).distinct().collect(Collectors.toList());
1384
        Map<String, Set<Integer>> storeGuyMap = csService.getAuthUserPartnerIdMapping();
1385
        List<TeamCommitmentModel> teamCommitmentModels = partnerCollectionPlanRepository.selectTeamCommitmentByDate(LocalDate.now());
1386
        Map<Integer, Double> rbmSecondaryTargetMap = teamCommitmentModels.stream().filter(x -> rbmPositionsAuthIds.contains(x.getAuthId())).collect(Collectors.groupingBy(x -> x.getAuthId(), Collectors.summingDouble(x -> x.getTotalTarget() == null ? 0 : x.getTotalTarget())));
1387
        Map<Integer, Double> rbmSecondaryMap = teamCommitmentModels.stream().filter(x -> rbmPositionsAuthIds.contains(x.getAuthId())).collect(Collectors.groupingBy(x -> x.getAuthId(), Collectors.summingDouble(x -> x.getTotalAchievement() == null ? 0 : x.getTotalAchievement())));
1388
        LocalDateTime startDate = LocalDate.now().atStartOfDay();
1389
        for (int rbmAuthId : rbmPositionsAuthIds) {
1390
            RBMPerformanceSummaryModel rbmPerformanceSummaryModel = new RBMPerformanceSummaryModel();
1391
            rbmPerformanceSummaryModel.setAuthId(rbmAuthId);
1392
            AuthUser authUser = authRepository.selectById(rbmAuthId);
1393
            rbmPerformanceSummaryModel.setAuthName(authUser.getFullName());
33844 ranu 1394
            List<Integer> fofoIds = new ArrayList<>(storeGuyMap.get(authUser.getEmailId()));
31249 tejbeer 1395
 
32464 tejbeer 1396
            if (fofoIds.size() > 0) {
1397
                fofoIds = fofoStoreRepository.selectByRetailerIds(fofoIds).stream().filter(x -> !x.isInternal()).map(x -> x.getId()).collect(Collectors.toList());
31249 tejbeer 1398
 
32464 tejbeer 1399
                /*
1400
                 * Map<Integer, PartnerCollectionPlanModel> foundCollectionMap =
1401
                 * partnerCollectionService .getCollectionMap(fofoIds, startDate);
1402
                 */
31249 tejbeer 1403
 
33844 ranu 1404
                List<Integer> remarkIds = partnerCollectionRemarkRepository.selectMaxRemarkId(fofoIds);
1405
 
32464 tejbeer 1406
                LOGGER.info("remarkIds {}", remarkIds);
31249 tejbeer 1407
 
32464 tejbeer 1408
                long todayOverallCall = 0;
1409
                if (!remarkIds.isEmpty()) {
1410
                    todayOverallCall = partnerCollectionRemarkRepository.selectByIds(remarkIds).stream().filter(x -> x.getCreateTimestamp().toLocalDate().equals(LocalDate.now())).collect(Collectors.counting());
31249 tejbeer 1411
 
32464 tejbeer 1412
                }
31249 tejbeer 1413
 
32464 tejbeer 1414
                Map<Integer, PartnerCollectionPlanModel> collectionMap = partnerCollectionService.getCollectionMap(fofoIds, startDate);
31249 tejbeer 1415
 
32464 tejbeer 1416
                ChartLeadModel cm = this.getCollectionCount(collectionMap.values().stream().collect(Collectors.toList()));
31249 tejbeer 1417
 
32464 tejbeer 1418
                long collectionTarget = collectionMap.values().stream().filter(x -> x.getTargetPlan() != null).collect(Collectors.summingLong(x -> x.getTargetPlan()));
1419
                long collection = collectionMap.values().stream().filter(
1420
                        x -> x.getTargetPlan() != null && x.getTargetPlan() != 0 && x.getAchievementPlan() != null).collect(Collectors.summingLong(x -> x.getAchievementPlan()));
1421
                rbmPerformanceSummaryModel.setChartLeadModel(cm);
1422
                rbmPerformanceSummaryModel.setPartnersCommunicated(todayOverallCall);
1423
                rbmPerformanceSummaryModel.setCollectionTarget(collectionTarget);
1424
                rbmPerformanceSummaryModel.setCollection(collection);
1425
                rbmPerformanceSummaryModel.setSecondaryTarget(rbmSecondaryTargetMap.get(rbmAuthId) == null ? 0 : rbmSecondaryTargetMap.get(rbmAuthId).floatValue());
1426
                rbmPerformanceSummaryModel.setSecondary(
1427
                        rbmSecondaryMap.get(rbmAuthId) == null ? 0 : rbmSecondaryMap.get(rbmAuthId).floatValue());
1428
                summaryModels.add(rbmPerformanceSummaryModel);
1429
                // cm.getData().getDatasets().get(0).getData().;
1430
                // cm.getData().getDatasets().get(0).getBackgroundColor();
1431
                // cm.getData().getLabels()
31249 tejbeer 1432
 
32464 tejbeer 1433
            }
1434
        }
1435
        model.addAttribute("summaryModels", summaryModels);
1436
        return "today_target";
1437
    }
31249 tejbeer 1438
 
32464 tejbeer 1439
    @RequestMapping(value = "/visitPlan", method = RequestMethod.GET)
1440
    public String visitPlan(HttpServletRequest request, Model model) throws Exception {
31249 tejbeer 1441
 
32464 tejbeer 1442
        return "visit-request-plan";
1443
    }
31249 tejbeer 1444
 
32464 tejbeer 1445
    @RequestMapping(value = "/visit/getVisitPlan", method = RequestMethod.GET)
1446
    public String getVisitPlan(HttpServletRequest request, @RequestParam LocalDate date, Model model) throws Exception {
1447
        List<VisitRequest> visitRequests = visitRequestRepository.selectByAuthIdAndDate(date);
31249 tejbeer 1448
 
32464 tejbeer 1449
        List<Integer> leadIds = visitRequests.stream().filter(x -> x.getVisitType().equals("lead")).map(x -> x.getVisitId()).collect(Collectors.toList());
1450
        Map<Integer, Lead> leadMap = new HashMap<>();
1451
        if (!leadIds.isEmpty()) {
1452
            List<Lead> leads = leadRepository.selectAllByIds(leadIds);
31249 tejbeer 1453
 
32464 tejbeer 1454
            for (Lead lead : leads) {
1455
                List<LeadActivity> leadActivities = leadActivityRepository.selectBYLeadId(lead.getId());
1456
                lead.setScheduledTimestamp(leadActivities.get(0).getSchelduleTimestamp());
1457
                lead.setLeadActivity(leadActivities.get(0));
31249 tejbeer 1458
 
32464 tejbeer 1459
                leadMap.put(lead.getId(), lead);
1460
            }
31249 tejbeer 1461
 
32464 tejbeer 1462
        }
1463
        List<Integer> franchiseeIds = visitRequests.stream().filter(x -> x.getVisitType().equals("franchiseeVisit")).map(x -> x.getVisitId()).collect(Collectors.toList());
1464
        Map<Integer, FranchiseeVisit> franchiseeVisitsMap = new HashMap<>();
1465
        if (!franchiseeIds.isEmpty()) {
1466
            List<FranchiseeVisit> franchiseeVisits = franchiseeVisitRepository.selectAllByIds(franchiseeIds);
1467
            LOGGER.info("franchiseeVisits {}", franchiseeVisits);
31249 tejbeer 1468
 
32464 tejbeer 1469
            for (FranchiseeVisit franchiseeVisit : franchiseeVisits) {
1470
                List<FranchiseeActivity> franchiseeActivities = franchiseeActivityRepository.selectByFranchiseeVisitId(franchiseeVisit.getId());
1471
                LOGGER.info("franchiseeActivities {}", franchiseeActivities);
1472
 
1473
                franchiseeVisit.setScheduleTimestamp(franchiseeActivities.get(0).getSchelduleTimestamp());
1474
                franchiseeVisit.setFranchiseeActivity(franchiseeActivities.get(0));
1475
 
1476
                franchiseeVisitsMap.put(franchiseeVisit.getId(), franchiseeVisit);
1477
            }
1478
 
1479
        }
1480
 
1481
        Map<Integer, List<VisitRequest>> visitRequestMap = visitRequests.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy()));
1482
        List<AuthUser> authUsers = authRepository.selectAllActiveUser();
1483
        List<UserVisitModel> userVisits = new ArrayList<>();
1484
 
1485
        for (AuthUser authUser : authUsers) {
1486
 
1487
            List<VisitRequest> authVisitRequests = visitRequestMap.get(authUser.getId());
1488
 
1489
            if (authVisitRequests != null) {
1490
                UserVisitModel userVisitModel = new UserVisitModel();
1491
                userVisitModel.setAuthUser(authUser.getFullName());
1492
                List<VisitDescriptionModel> visitDescriptions = new ArrayList<>();
1493
 
1494
                for (VisitRequest authVisitRequest : authVisitRequests) {
1495
                    VisitDescriptionModel visitDescriptionModel = new VisitDescriptionModel();
1496
                    visitDescriptionModel.setVisitId(authVisitRequest.getVisitId());
1497
 
1498
                    if (authVisitRequest.getVisitType().equals("lead")) {
1499
                        Lead lead = leadMap.get(authVisitRequest.getVisitId());
1500
 
1501
                        visitDescriptionModel.setVisitName(lead.getFirstName());
1502
                        visitDescriptionModel.setCity(lead.getCity());
1503
                        visitDescriptionModel.setState(lead.getState());
1504
                        visitDescriptionModel.setScheduleTime(lead.getScheduledTimestamp());
1505
                        visitDescriptionModel.setRemarks(lead.getLeadActivity().getRemark());
1506
 
1507
                    } else {
1508
                        FranchiseeVisit franchiseeVisit = franchiseeVisitsMap.get(authVisitRequest.getVisitId());
1509
                        CustomRetailer customRetailer = retailerService.getFofoRetailer(franchiseeVisit.getFofoId());
1510
 
1511
                        visitDescriptionModel.setVisitName(franchiseeVisit.getPartnerName());
1512
                        visitDescriptionModel.setCity(customRetailer.getAddress().getCity());
1513
                        visitDescriptionModel.setState(customRetailer.getAddress().getState());
1514
                        visitDescriptionModel.setScheduleTime(franchiseeVisit.getFranchiseeActivity().getSchelduleTimestamp());
1515
                        visitDescriptionModel.setRemarks(franchiseeVisit.getAgenda());
1516
 
1517
                    }
1518
 
1519
                    if (authVisitRequest.getActionedBy() != 0) {
1520
                        AuthUser au = authRepository.selectById(authVisitRequest.getActionedBy());
1521
 
1522
                        visitDescriptionModel.setActionBy(au.getFullName());
1523
                    }
1524
                    visitDescriptionModel.setStatus(authVisitRequest.getStatus());
1525
                    visitDescriptionModel.setVisitType(authVisitRequest.getVisitType());
1526
                    visitDescriptions.add(visitDescriptionModel);
1527
                }
1528
 
1529
                userVisitModel.setVisitDescriptions(visitDescriptions);
1530
                userVisits.add(userVisitModel);
1531
            }
1532
 
1533
        }
1534
 
1535
        model.addAttribute("userVisits", userVisits);
1536
 
1537
        return "visit-request-plan";
1538
    }
25979 tejbeer 1539
}