Subversion Repositories SmartDukaan

Rev

Rev 30292 | Rev 30420 | 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
 
29426 manish 3
import java.io.ByteArrayInputStream;
4
import java.io.InputStream;
29266 manish 5
import java.time.LocalDate;
25979 tejbeer 6
import java.time.LocalDateTime;
7
import java.util.ArrayList;
25988 tejbeer 8
import java.util.Arrays;
27604 tejbeer 9
import java.util.HashMap;
29266 manish 10
import java.util.HashSet;
25979 tejbeer 11
import java.util.List;
12
import java.util.Map;
30416 tejbeer 13
import java.util.Set;
14
import java.util.TreeMap;
25979 tejbeer 15
import java.util.stream.Collectors;
16
 
17
import javax.servlet.http.HttpServletRequest;
29426 manish 18
import javax.servlet.http.HttpServletResponse;
25979 tejbeer 19
import javax.transaction.Transactional;
20
 
29598 tejbeer 21
import org.apache.commons.csv.CSVRecord;
25979 tejbeer 22
import org.apache.logging.log4j.LogManager;
23
import org.apache.logging.log4j.Logger;
24
import org.springframework.beans.factory.annotation.Autowired;
29426 manish 25
import org.springframework.core.io.InputStreamResource;
26
import org.springframework.http.HttpHeaders;
27
import org.springframework.http.HttpStatus;
28
import org.springframework.http.ResponseEntity;
25979 tejbeer 29
import org.springframework.stereotype.Controller;
30
import org.springframework.ui.Model;
30416 tejbeer 31
import org.springframework.util.StringUtils;
25979 tejbeer 32
import org.springframework.web.bind.annotation.RequestBody;
33
import org.springframework.web.bind.annotation.RequestMapping;
34
import org.springframework.web.bind.annotation.RequestMethod;
35
import org.springframework.web.bind.annotation.RequestParam;
29426 manish 36
import org.springframework.web.bind.annotation.RequestPart;
37
import org.springframework.web.multipart.MultipartFile;
25979 tejbeer 38
 
29266 manish 39
import com.google.gson.Gson;
25988 tejbeer 40
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
30416 tejbeer 41
import com.spice.profitmandi.common.model.CustomRetailer;
29266 manish 42
import com.spice.profitmandi.common.model.Legend;
43
import com.spice.profitmandi.common.model.OptionModel;
44
import com.spice.profitmandi.common.model.PieLables;
29278 manish 45
import com.spice.profitmandi.common.model.ProfitMandiConstants;
29426 manish 46
import com.spice.profitmandi.common.util.FileUtil;
25979 tejbeer 47
import com.spice.profitmandi.dao.entity.auth.AuthUser;
30416 tejbeer 48
import com.spice.profitmandi.dao.entity.auth.PartnerCollectionRemark;
49
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
25979 tejbeer 50
import com.spice.profitmandi.dao.entity.user.Lead;
51
import com.spice.profitmandi.dao.entity.user.LeadActivity;
29598 tejbeer 52
import com.spice.profitmandi.dao.enumuration.dtr.LeadSource;
25979 tejbeer 53
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
29266 manish 54
import com.spice.profitmandi.dao.model.ChartLeadModel;
27605 tejbeer 55
import com.spice.profitmandi.dao.model.CreateLeacdActivityRequest;
25979 tejbeer 56
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
29266 manish 57
import com.spice.profitmandi.dao.model.DataLeadModel;
58
import com.spice.profitmandi.dao.model.LeadStatusData;
30416 tejbeer 59
import com.spice.profitmandi.dao.model.PartnerCollectionPlanModel;
30185 tejbeer 60
import com.spice.profitmandi.dao.model.TeamCommitmentModel;
25979 tejbeer 61
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
30185 tejbeer 62
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionPlanRepository;
30416 tejbeer 63
import com.spice.profitmandi.dao.repository.cs.CsService;
29266 manish 64
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
30416 tejbeer 65
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
25979 tejbeer 66
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
67
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
30416 tejbeer 68
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
25979 tejbeer 69
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
29266 manish 70
import com.spice.profitmandi.service.AuthService;
30416 tejbeer 71
import com.spice.profitmandi.service.PartnerCollectionService;
72
import com.spice.profitmandi.service.user.RetailerService;
25979 tejbeer 73
import com.spice.profitmandi.web.model.LoginDetails;
74
import com.spice.profitmandi.web.util.CookiesProcessor;
75
import com.spice.profitmandi.web.util.MVCResponseSender;
76
 
77
@Controller
78
@Transactional(rollbackOn = Throwable.class)
79
public class LeadController {
80
	private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
81
 
82
	@Autowired
83
	private LeadRepository leadRepository;
84
 
85
	@Autowired
86
	private LeadActivityRepository leadActivityRepository;
87
 
88
	@Autowired
89
	private StateRepository stateRepository;
90
 
91
	@Autowired
29266 manish 92
	private AuthService authService;
93
 
94
	@Autowired
25979 tejbeer 95
	private AuthRepository authRepository;
96
 
97
	@Autowired
29266 manish 98
	private Gson gson;
99
 
100
	@Autowired
25979 tejbeer 101
	private CookiesProcessor cookiesProcessor;
29426 manish 102
 
29278 manish 103
	@Autowired
104
	PositionRepository positionRepository;
25979 tejbeer 105
 
106
	@Autowired
107
	private MVCResponseSender mvcResponseSender;
108
 
30185 tejbeer 109
	@Autowired
110
	private PartnerCollectionPlanRepository partnerCollectionPlanRepository;
111
 
30416 tejbeer 112
	@Autowired
113
	private CsService csService;
114
 
115
	@Autowired
116
	private FofoStoreRepository fofoStoreRepository;
117
 
118
	@Autowired
119
	private PartnerCollectionService partnerCollectionService;
120
 
121
	@Autowired
122
	private RetailerService retailerService;
123
 
124
	@Autowired
125
	private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
25988 tejbeer 126
	List<LeadStatus> status = Arrays.asList(LeadStatus.notInterested, LeadStatus.finalized);
127
 
25979 tejbeer 128
	@RequestMapping(value = "/getOpenLead", method = RequestMethod.GET)
27609 tejbeer 129
	public String getOpenLead(HttpServletRequest request,
29426 manish 130
			@RequestParam(name = "leadStatus", required = false, defaultValue = "All") List<LeadStatus> leadStatus,
29744 tejbeer 131
			@RequestParam(name = "color", required = false, defaultValue = "All") List<String> color,
29445 manish 132
			@RequestParam(name = "leadDate", required = false, defaultValue = "") LocalDate leadDate, Model model)
27642 tejbeer 133
			throws Exception {
27609 tejbeer 134
 
29445 manish 135
		LocalDateTime localDateTime = null;
136
		if (leadDate != null) {
137
			localDateTime = leadDate.atStartOfDay();
138
		}
139
		LOGGER.info("localDateTime" + localDateTime);
140
 
29266 manish 141
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
142
		String emailId = loginDetails.getEmailId();
143
		AuthUser authUser = authRepository.selectByEmailOrMobile(emailId);
29426 manish 144
 
145
		boolean authPositon = positionRepository.hasCategory(authUser.getId(),
146
				ProfitMandiConstants.TICKET_CATEGORY_SALES);
147
 
27610 tejbeer 148
		if (leadStatus.contains(LeadStatus.All)) {
149
 
29445 manish 150
			leadStatus.add(LeadStatus.pending);
151
			leadStatus.add(LeadStatus.notInterested);
152
			leadStatus.add(LeadStatus.finalized);
27610 tejbeer 153
		}
27615 tejbeer 154
 
29744 tejbeer 155
		if (color.contains("All")) {
156
			color.add("yellow");
157
			color.add("green");
158
		}
159
 
29852 tejbeer 160
		List<Lead> leads = new ArrayList<>();
29445 manish 161
 
162
		model.addAttribute("colors", color);
163
 
29744 tejbeer 164
		Map<Integer, List<LeadActivity>> leadActivityMap = new HashMap<>();
165
 
29287 amit.gupta 166
		List<Integer> authUserIds = null;
29445 manish 167
 
29744 tejbeer 168
		LOGGER.info("color111" + color);
29445 manish 169
 
29744 tejbeer 170
		List<Lead> leadFollowUp = new ArrayList<>();
29426 manish 171
 
29744 tejbeer 172
		if (authPositon) {
173
			authUserIds = authService.getAllReportees(authUser.getId());
174
			authUserIds.add(authUser.getId());
175
			LOGGER.info("authIds" + authUserIds);
29426 manish 176
 
29753 tejbeer 177
			LOGGER.info("leadStatus" + leadStatus);
178
 
29744 tejbeer 179
			if (localDateTime == null) {
29445 manish 180
 
29852 tejbeer 181
				if (!leadStatus.contains(LeadStatus.followUp)) {
29445 manish 182
 
29852 tejbeer 183
					leads = leadRepository.selectAllByColorStatusAndUpdatedTimestampAndAuthIds(leadStatus, authUserIds,
184
							color, LocalDateTime.now().minusMonths(1));
185
				}
186
 
187
				if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
30290 tejbeer 188
					leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
29852 tejbeer 189
					leads.addAll(leadFollowUp);
190
				}
191
 
29744 tejbeer 192
			} else {
29445 manish 193
 
29852 tejbeer 194
				if (!leadStatus.contains(LeadStatus.followUp)) {
195
 
196
					leads = leadRepository.selectAllByColorStatusAndUpdatedTimestampAndAuthIds(leadStatus, authUserIds,
197
							color, localDateTime);
198
				}
199
 
200
				if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
201
 
30290 tejbeer 202
					leadFollowUp = leadRepository.selectByAssignAuthIdsAndStatus(authUserIds, LeadStatus.followUp);
203
 
29852 tejbeer 204
					leads.addAll(leadFollowUp);
205
 
206
				}
207
 
29744 tejbeer 208
			}
29445 manish 209
 
29744 tejbeer 210
		} else {
29445 manish 211
 
29744 tejbeer 212
			if (localDateTime == null) {
29852 tejbeer 213
				if (!leadStatus.contains(LeadStatus.followUp)) {
29445 manish 214
 
29852 tejbeer 215
					leads = leadRepository.selectAllByColorStatusAndUpdatedTimestamp(leadStatus, color,
216
							LocalDateTime.now().minusMonths(1));
217
				}
218
				if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
219
 
30292 tejbeer 220
					leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
30290 tejbeer 221
 
29852 tejbeer 222
					leads.addAll(leadFollowUp);
223
				}
29744 tejbeer 224
				LOGGER.info("leadlocalDateTime1" + leads);
29445 manish 225
 
29744 tejbeer 226
			} else {
29852 tejbeer 227
				if (!leadStatus.contains(LeadStatus.followUp)) {
29445 manish 228
 
29852 tejbeer 229
					leads = leadRepository.selectAllByColorStatusAndUpdatedTimestamp(leadStatus, color, localDateTime);
230
				}
231
 
232
				if (leadStatus.contains(LeadStatus.followUp) || leadStatus.contains(LeadStatus.All)) {
233
 
30292 tejbeer 234
					leadFollowUp = leadRepository.selectAllByStatus(LeadStatus.followUp);
30290 tejbeer 235
 
29852 tejbeer 236
					leads.addAll(leadFollowUp);
237
				}
29744 tejbeer 238
				LOGGER.info("leadlocalDateTime2" + leads);
29445 manish 239
 
29278 manish 240
			}
29426 manish 241
 
29445 manish 242
		}
243
 
29426 manish 244
		if (authPositon && authUserIds.size() > 0) {
29287 amit.gupta 245
			List<String> leadCreators = new ArrayList<>();
246
			leadCreators.add("daily-sync");
29426 manish 247
			leadCreators.addAll(authRepository.selectAllAuthUserByIds(authUserIds).stream().map(x -> x.getFullName())
248
					.collect(Collectors.toList()));
29289 amit.gupta 249
			model.addAttribute("leadCreators", leadCreators);
29287 amit.gupta 250
		}
29266 manish 251
		List<Lead> weekLast = new ArrayList<>();
252
		List<Lead> weekThird = new ArrayList<>();
253
		List<Lead> weekSecond = new ArrayList<>();
254
		List<Lead> weekFirst = new ArrayList<>();
255
		LocalDateTime curDate = LocalDate.now().atStartOfDay();
256
		List<LeadWeakWiseModel> lwDays = new ArrayList<>();
27642 tejbeer 257
 
29266 manish 258
		for (int i = 7; i >= 1; i--) {
259
			LocalDateTime startOfDay = curDate.minusDays(i);
260
 
261
			LeadWeakWiseModel lm = new LeadWeakWiseModel();
262
			lm.setMonth(startOfDay.toLocalDate());
263
			lwDays.add(lm);
264
		}
29426 manish 265
		if (!leads.isEmpty()) {
29266 manish 266
 
29744 tejbeer 267
			weekLast.addAll(
268
					leads.stream()
269
							.filter(x -> x.getCreatedTimestamp().isAfter(curDate.minusDays(28))
270
									&& x.getCreatedTimestamp().isBefore(curDate.minusDays(21)))
271
							.collect(Collectors.toList()));
29266 manish 272
 
29744 tejbeer 273
			weekThird
274
					.addAll(leads.stream()
275
							.filter(x -> x.getCreatedTimestamp().isAfter(curDate.minusDays(21))
276
									&& x.getCreatedTimestamp().isBefore(curDate.minusDays(14)))
277
							.collect(Collectors.toList()));
29266 manish 278
 
29744 tejbeer 279
			weekSecond
280
					.addAll(leads.stream()
281
							.filter(x -> x.getCreatedTimestamp().isAfter(curDate.minusDays(14))
282
									&& x.getCreatedTimestamp().isBefore(curDate.minusDays(7)))
283
							.collect(Collectors.toList()));
29426 manish 284
 
29744 tejbeer 285
			weekFirst.addAll(leads.stream().filter(x -> x.getCreatedTimestamp().isAfter(curDate.minusDays(7)))
286
					.collect(Collectors.toList()));
287
 
29266 manish 288
		}
289
		LOGGER.info("weekLast" + weekLast);
290
		LOGGER.info("weekThird" + weekThird);
291
		LOGGER.info("weekSecond" + weekSecond);
29426 manish 292
		Map<String, Long> leadLasts = weekLast.stream()
293
				.collect(Collectors.groupingBy(x -> x.getCreatedBy(), Collectors.counting()));
294
		Map<String, Long> leadThirds = weekThird.stream()
295
				.collect(Collectors.groupingBy(x -> x.getCreatedBy(), Collectors.counting()));
29266 manish 296
		Map<String, Long> leadSeconds = weekSecond.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(),
297
				Collectors.mapping(Lead::getCreatedBy, Collectors.counting())));
298
 
299
		Map<String, Map<LocalDate, Long>> leadFirsts = weekFirst.stream()
300
				.collect(Collectors.groupingBy(x -> x.getCreatedBy(),
301
						Collectors.groupingBy(x -> x.getCreatedTimestamp().toLocalDate(), Collectors.counting())));
302
 
303
		LOGGER.info("leadFirsts" + leadFirsts);
304
 
27723 tejbeer 305
		List<Integer> authIds = new ArrayList<>();
306
		if (!leads.isEmpty()) {
25979 tejbeer 307
 
27723 tejbeer 308
			authIds.addAll(leads.stream().map(x -> x.getAssignTo()).collect(Collectors.toList()));
27610 tejbeer 309
 
29744 tejbeer 310
			leadActivityMap = leadActivityRepository
311
					.selectAllByleadIds(leads.stream().map(x -> x.getId()).collect(Collectors.toList())).stream()
312
					.collect(Collectors.groupingBy(LeadActivity::getLeadId, Collectors.toList()));
313
 
27723 tejbeer 314
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
315
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
316
			model.addAttribute("leadActivityMap", leadActivityMap);
317
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
318
		}
319
 
29266 manish 320
		ChartLeadModel cm = this.getLeadChart(leads);
321
		model.addAttribute("chartLead", gson.toJson(cm));
322
 
323
		LOGGER.info("ChartLeadModel" + gson.toJson(cm));
324
		LOGGER.info("lwDays" + lwDays);
325
 
27610 tejbeer 326
		LOGGER.info("leads" + leads);
25979 tejbeer 327
		List<String> stateNames = stateRepository.selectAll().stream().map(x -> x.getName())
328
				.collect(Collectors.toList());
329
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
29266 manish 330
		LocalDate lastDate = curDate.minusDays(1).toLocalDate();
29426 manish 331
 
29266 manish 332
		List<LocalDate> weekDates = new ArrayList<>();
29426 manish 333
 
29266 manish 334
		weekDates.add(curDate.minusDays(28).toLocalDate());
335
		weekDates.add(curDate.minusDays(22).toLocalDate());
336
		weekDates.add(curDate.minusDays(21).toLocalDate());
337
		weekDates.add(curDate.minusDays(15).toLocalDate());
338
		weekDates.add(curDate.minusDays(14).toLocalDate());
339
		weekDates.add(curDate.minusDays(8).toLocalDate());
340
		weekDates.add(curDate.minusDays(7).toLocalDate());
341
		LOGGER.info("lastDate" + lastDate);
29426 manish 342
 
29266 manish 343
		model.addAttribute("weekDates", weekDates);
29426 manish 344
 
29445 manish 345
		model.addAttribute("leadDate", leadDate);
29266 manish 346
		model.addAttribute("lastDate", lastDate);
25979 tejbeer 347
		model.addAttribute("stateNames", stateNames);
348
		model.addAttribute("authUsers", authUsers);
27610 tejbeer 349
		model.addAttribute("lead", leads);
350
		model.addAttribute("leadStatus", LeadStatus.values());
29266 manish 351
		model.addAttribute("leadLasts", leadLasts);
352
		model.addAttribute("leadThirds", leadThirds);
353
		model.addAttribute("leadSeconds", leadSeconds);
354
		model.addAttribute("leadFirsts", leadFirsts);
355
		model.addAttribute("lwDays", lwDays);
25979 tejbeer 356
 
27610 tejbeer 357
		model.addAttribute("selectedLeadStatus", leadStatus.get(0));
25979 tejbeer 358
		return "lead";
27642 tejbeer 359
 
25979 tejbeer 360
	}
361
 
29266 manish 362
	public ChartLeadModel getLeadChart(List<Lead> leads) throws ProfitMandiBusinessException {
363
 
364
		Map<LeadStatus, Long> leadStatusMap = leads.stream().collect(
365
				Collectors.groupingBy(x -> x.getStatus(), Collectors.mapping(Lead::getStatus, Collectors.counting())));
366
 
29426 manish 367
		Map<String, Long> hotLeadsMap = leads.stream().collect(
368
				Collectors.groupingBy(x -> x.getColor(), Collectors.mapping(Lead::getColor, Collectors.counting())));
369
 
370
		LOGGER.info("hotLeadsMap" + hotLeadsMap);
29266 manish 371
		ChartLeadModel cm = new ChartLeadModel();
372
 
373
		HashSet<LeadStatus> labels = new HashSet<LeadStatus>();
374
		labels.addAll(leadStatusMap.keySet());
29445 manish 375
 
29426 manish 376
		HashSet<String> hotLeads = new HashSet<String>();
377
		hotLeads.addAll(leadStatusMap.keySet().stream().map(x -> x.toString()).collect(Collectors.toSet()));
378
		hotLeads.add("HotLead");
29445 manish 379
 
29426 manish 380
		HashSet<String> hotLeadKeys = new HashSet<String>();
29445 manish 381
 
29426 manish 382
		hotLeadKeys.add("HotLead");
383
		List<String> hotLeadGreen = new ArrayList<>(hotLeadKeys);
29598 tejbeer 384
 
29448 manish 385
		LOGGER.info("hotLeads" + hotLeads);
29445 manish 386
 
29266 manish 387
		List<LeadStatus> labelList = new ArrayList<>(labels);
388
		List<String> backgroundColor = new ArrayList<>();
29426 manish 389
		LOGGER.info("hotLeadKeys" + hotLeadKeys);
29266 manish 390
		List<Long> values = new ArrayList<>();
391
 
29448 manish 392
		for (String hotLead : hotLeads) {
29266 manish 393
 
29448 manish 394
			if (hotLead.equals("pending")) {
29266 manish 395
				backgroundColor.add("pink");
29448 manish 396
				values.add(leadStatusMap.get(LeadStatus.pending));
29266 manish 397
			}
29448 manish 398
			if (hotLead.equals("notInterested")) {
29266 manish 399
				backgroundColor.add("red");
29448 manish 400
				values.add(leadStatusMap.get(LeadStatus.notInterested));
29266 manish 401
			}
29448 manish 402
			if (hotLead.equals("followUp")) {
29266 manish 403
				backgroundColor.add("#9ACD32");
29448 manish 404
				values.add(leadStatusMap.get(LeadStatus.followUp));
29266 manish 405
			}
29448 manish 406
			if (hotLead.equals("finalized")) {
29266 manish 407
				backgroundColor.add("blue");
29448 manish 408
				values.add(leadStatusMap.get(LeadStatus.finalized));
29445 manish 409
			}
29598 tejbeer 410
 
29448 manish 411
			if (hotLead.equals("HotLead")) {
29426 manish 412
				backgroundColor.add("green");
413
				values.add(hotLeadsMap.get("Green"));
29445 manish 414
 
29266 manish 415
			}
29445 manish 416
 
29266 manish 417
		}
418
		LOGGER.info("labelList" + labelList);
419
 
420
		LOGGER.info("backgroundColor" + backgroundColor);
421
		LOGGER.info("labelsChartLead" + labels);
422
		LeadStatusData data = new LeadStatusData();
423
		data.setData(values);
424
		data.setBackgroundColor(backgroundColor);
425
		data.setLabel("DataSet 1");
426
 
427
		PieLables label = new PieLables();
428
		label.setFontColor("black");
429
		label.setFontSize(15);
430
 
431
		Legend legend = new Legend();
432
		legend.setLabels(label);
433
		legend.setPosition("left");
434
 
435
		List<LeadStatusData> dataList = new ArrayList<>();
436
		dataList.add(data);
437
 
438
		DataLeadModel datasets = new DataLeadModel();
439
		datasets.setDatasets(dataList);
29426 manish 440
		datasets.setLabels(hotLeads);
29266 manish 441
 
442
		OptionModel om = new OptionModel();
443
		om.setLegend(legend);
444
 
445
		cm.setType("pie");
446
		cm.setData(datasets);
447
		cm.setOptions(om);
448
 
449
		return cm;
450
	}
451
 
25988 tejbeer 452
	@RequestMapping(value = "/getClosedLead", method = RequestMethod.GET)
453
	public String getClosedLead(HttpServletRequest request,
454
			@RequestParam(name = "offset", defaultValue = "0") int offset,
455
			@RequestParam(name = "limit", defaultValue = "10") int limit,
456
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
457
			throws Exception {
458
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
459
		List<Lead> leads = null;
460
		long size = 0;
461
		leads = leadRepository.selectAllByStatus(status, offset, limit);
462
		size = leadRepository.selectCountByStatus(status);
463
 
464
		if (!leads.isEmpty()) {
465
			List<Integer> authIds = new ArrayList<>();
466
			for (Lead lead : leads) {
467
				authIds.add(lead.getAssignTo());
468
			}
469
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
470
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
471
 
472
			model.addAttribute("leads", leads);
473
			model.addAttribute("start", offset + 1);
474
			model.addAttribute("size", size);
475
			model.addAttribute("searchTerm", searchTerm);
476
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
25990 tejbeer 477
			model.addAttribute("url", "/getPaginatedClosedLeads");
25988 tejbeer 478
 
479
			if (leads.size() < limit) {
480
				model.addAttribute("end", offset + leads.size());
481
			} else {
482
				model.addAttribute("end", offset + limit);
483
			}
484
 
485
		} else {
486
			model.addAttribute("lead", leads);
487
 
488
			model.addAttribute("size", size);
489
		}
490
 
491
		model.addAttribute("authUsers", authUsers);
492
		return "lead-close";
493
	}
494
 
495
	@RequestMapping(value = "/getPaginatedClosedLeads", method = RequestMethod.GET)
25990 tejbeer 496
	public String getPaginatedClosedLeads(HttpServletRequest request,
25988 tejbeer 497
			@RequestParam(name = "offset", defaultValue = "0") int offset,
498
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
499
			throws ProfitMandiBusinessException {
500
		List<Lead> leads = null;
501
		leads = leadRepository.selectAllByStatus(status, offset, limit);
502
 
503
		if (!leads.isEmpty()) {
504
			List<Integer> authIds = new ArrayList<>();
505
			for (Lead lead : leads) {
506
				authIds.add(lead.getAssignTo());
507
			}
508
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
509
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
510
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
511
			model.addAttribute("leads", leads);
25990 tejbeer 512
			model.addAttribute("url", "/getPaginatedClosedLeads");
25988 tejbeer 513
 
514
		} else {
515
			model.addAttribute("leads", leads);
516
 
517
		}
518
		return "lead-close-paginated";
519
	}
520
 
521
	@RequestMapping(value = "/searchLeads")
522
	public String getClosedLeads(HttpServletRequest request,
523
			@RequestParam(name = "offset", defaultValue = "0") int offset,
524
			@RequestParam(name = "limit", defaultValue = "10") int limit,
525
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
526
			throws ProfitMandiBusinessException {
527
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
528
		List<Lead> leads = null;
529
		long size = 0;
530
		if (!(searchTerm.equals(""))) {
531
			leads = leadRepository.selectBySearchTerm(status, searchTerm, offset, limit);
532
			if (!(leads.size() == 0)) {
533
				size = leadRepository.selectCountByStatus(status);
534
				List<Integer> authIds = new ArrayList<>();
535
				for (Lead lead : leads) {
536
					authIds.add(lead.getAssignTo());
537
				}
538
				Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
539
						.collect(Collectors.toMap(x -> x.getId(), x -> x));
540
				model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
541
				model.addAttribute("leads", leads);
542
				model.addAttribute("start", offset + 1);
543
				model.addAttribute("size", size);
544
				model.addAttribute("searchTerm", searchTerm);
545
 
546
				if (leads.size() < limit) {
547
					model.addAttribute("end", offset + leads.size());
548
				} else {
549
					model.addAttribute("end", offset + limit);
550
				}
551
			} else {
552
				throw new ProfitMandiBusinessException("lead", searchTerm, "leads Not Found");
553
			}
554
		} else {
555
			leads = leadRepository.selectAllByStatus(status, offset, limit);
556
			size = leadRepository.selectCountByStatus(status);
557
 
558
			if (!leads.isEmpty()) {
559
				List<Integer> authIds = new ArrayList<>();
560
				for (Lead lead : leads) {
561
					authIds.add(lead.getAssignTo());
562
				}
563
				Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
564
						.collect(Collectors.toMap(x -> x.getId(), x -> x));
565
 
566
				model.addAttribute("leads", leads);
567
				model.addAttribute("start", offset + 1);
568
				model.addAttribute("size", size);
569
				model.addAttribute("searchTerm", searchTerm);
570
				model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
571
 
572
				if (leads.size() < limit) {
573
					model.addAttribute("end", offset + leads.size());
574
				} else {
575
					model.addAttribute("end", offset + limit);
576
				}
577
 
578
			}
579
		}
580
 
581
		model.addAttribute("authUsers", authUsers);
582
		return "lead-close";
583
	}
584
 
585
	@RequestMapping(value = "/searchLeadPaginated")
25990 tejbeer 586
	public String searchLeadPaginated(HttpServletRequest request,
25988 tejbeer 587
			@RequestParam(name = "offset", defaultValue = "0") int offset,
588
			@RequestParam(name = "limit", defaultValue = "10") int limit,
589
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
590
			throws ProfitMandiBusinessException {
591
		LOGGER.info("In search Item....");
592
		List<Lead> leads = null;
593
		if (!searchTerm.equals("")) {
594
			leads = leadRepository.selectBySearchTerm(status, searchTerm, offset, limit);
595
			if (!(leads.size() == 0)) {
596
 
597
				List<Integer> authIds = new ArrayList<>();
598
				for (Lead lead : leads) {
599
					authIds.add(lead.getAssignTo());
600
				}
601
				Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
602
						.collect(Collectors.toMap(x -> x.getId(), x -> x));
603
				model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
604
				model.addAttribute("leads", leads);
605
			}
606
		}
607
 
608
		return "lead-close-paginated";
609
 
610
	}
611
 
25979 tejbeer 612
	@RequestMapping(value = "/getLeadActivity", method = RequestMethod.GET)
613
	public String getLeadActivity(HttpServletRequest request, @RequestParam int leadId, Model model) throws Exception {
614
		List<LeadActivity> leadActivity = leadActivityRepository.selectBYLeadId(leadId);
615
		model.addAttribute("leadActivity", leadActivity);
616
		return "lead_activity_modal";
617
	}
618
 
619
	@RequestMapping(value = "/createLead", method = RequestMethod.POST)
620
	public String CreateLead(HttpServletRequest request, @RequestBody CreateRefferalRequest createRefferalRequest,
621
			Model model) throws Exception {
622
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
623
		LOGGER.info("createRefferalRequest" + createRefferalRequest.getSchelduleTimestamp());
624
		Lead lead = new Lead();
625
		lead.setFirstName(createRefferalRequest.getFirstName());
626
		lead.setLastName(createRefferalRequest.getLastName());
627
		lead.setLeadMobile(createRefferalRequest.getMobile());
628
		lead.setState(createRefferalRequest.getState());
629
		lead.setCity(createRefferalRequest.getCity());
630
		lead.setAddress(createRefferalRequest.getAddress());
631
		lead.setCreatedTimestamp(LocalDateTime.now());
632
		lead.setUpdatedTimestamp(LocalDateTime.now());
633
		lead.setStatus(createRefferalRequest.getStatus());
634
		lead.setAssignTo(createRefferalRequest.getAssignTo());
635
		lead.setSource(createRefferalRequest.getSource());
26298 tejbeer 636
		lead.setColor("yellow");
25979 tejbeer 637
		// change
25989 tejbeer 638
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
25979 tejbeer 639
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
640
		lead.setCreatedBy(authUserName);
641
		lead.setAuthId(authUser.getId());
642
 
643
		leadRepository.persist(lead);
644
		LeadActivity leadActivity = new LeadActivity();
645
		leadActivity.setLeadId(lead.getId());
646
		leadActivity.setRemark(createRefferalRequest.getRemark());
647
 
648
		if (createRefferalRequest.getStatus() == LeadStatus.followUp) {
649
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
650
		} else {
651
			leadActivity.setSchelduleTimestamp(null);
652
		}
653
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
654
		leadActivityRepository.persist(leadActivity);
655
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
656
		return "response";
657
 
658
	}
659
 
660
	@RequestMapping(value = "/editLead", method = RequestMethod.POST)
27605 tejbeer 661
	public String EditLead(HttpServletRequest request,
662
			@RequestBody CreateLeacdActivityRequest createLeadActivityRequest, Model model) throws Exception {
25979 tejbeer 663
 
664
		LeadActivity leadActivity = new LeadActivity();
27605 tejbeer 665
		leadActivity.setLeadId(createLeadActivityRequest.getId());
666
		leadActivity.setRemark(createLeadActivityRequest.getRemark());
29598 tejbeer 667
 
29476 manish 668
		LOGGER.info("createRefferalRequest" + createLeadActivityRequest);
27605 tejbeer 669
 
670
		if (createLeadActivityRequest.getStatus() == LeadStatus.followUp) {
671
			leadActivity.setSchelduleTimestamp(createLeadActivityRequest.getScheldule());
672
		} else {
673
			leadActivity.setSchelduleTimestamp(null);
674
		}
25979 tejbeer 675
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
676
		leadActivityRepository.persist(leadActivity);
29598 tejbeer 677
		Lead lead = leadRepository.selectById(createLeadActivityRequest.getId());
27605 tejbeer 678
		lead.setAssignTo(createLeadActivityRequest.getAssignTo());
679
		lead.setStatus(createLeadActivityRequest.getStatus());
28200 tejbeer 680
		lead.setNotinterestedReason(createLeadActivityRequest.getReason());
25979 tejbeer 681
		lead.setUpdatedTimestamp(LocalDateTime.now());
682
 
29473 manish 683
		lead = leadRepository.selectById(createLeadActivityRequest.getId());
29598 tejbeer 684
 
29476 manish 685
		int authId = 0;
686
		if (lead != null) {
25979 tejbeer 687
 
29476 manish 688
			authId = lead.getAssignTo();
689
			Map<Integer, LeadActivity> leadActivityMap = new HashMap<>();
29598 tejbeer 690
 
691
			List<LeadActivity> leadActivitys = leadActivityRepository.selectBYLeadId(lead.getId());
692
 
693
			if (!leadActivitys.isEmpty()) {
694
				leadActivityMap.put(lead.getId(), leadActivitys.get(0));
695
			}
696
 
697
			Map<Integer, AuthUser> authIdAndAuthUserMap = new HashMap<>();
698
			AuthUser AuthUser = authRepository.selectById(authId);
699
 
700
			authIdAndAuthUserMap.put(AuthUser.getId(), AuthUser);
701
 
29476 manish 702
			model.addAttribute("leadActivityMap", leadActivityMap);
703
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
704
		}
705
 
29473 manish 706
		model.addAttribute("request", lead);
707
 
708
		return "edit-lead";
709
 
25979 tejbeer 710
	}
29445 manish 711
 
29426 manish 712
	@RequestMapping(value = "/downloadIvoryLead", method = RequestMethod.GET)
713
	public ResponseEntity<?> downloadDelayDayTemplate(HttpServletRequest request) throws Exception {
29598 tejbeer 714
		List<String> stateNames = stateRepository.selectAll().stream().map(x -> x.getName())
715
				.collect(Collectors.toList());
716
 
29426 manish 717
		List<List<?>> rows = new ArrayList<>();
718
 
29598 tejbeer 719
		List<LeadSource> lss = LeadSource.enumValues;
29426 manish 720
 
29598 tejbeer 721
		for (LeadSource ls : lss) {
722
			rows.add(Arrays.asList("-", "-", "-", "-", "-", "-", "-", ls));
723
 
724
		}
725
		for (String stateName : stateNames) {
726
			rows.add(Arrays.asList("-", "-", "-", "-", stateName, "-", "-", "-"));
727
 
728
		}
729
 
730
		org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(Arrays.asList("First Name",
731
				"Last Name", "Address", "City", "State", "Mobile", "Assign To(email)", "Source"), rows);
732
 
29426 manish 733
		final HttpHeaders headers = new HttpHeaders();
734
		headers.set("Content-Type", "text/csv");
29598 tejbeer 735
		headers.set("Content-disposition", "inline; filename=leads.format.csv");
29426 manish 736
		headers.setContentLength(baos.toByteArray().length);
737
 
738
		final InputStream inputStream = new ByteArrayInputStream(baos.toByteArray());
739
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
740
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
741
 
742
	}
29445 manish 743
 
29426 manish 744
	@RequestMapping(value = "/csvFileAndSetLead", method = RequestMethod.POST)
745
	public String readCsvFileAndSetLead(HttpServletRequest request, Model model, HttpServletResponse response,
746
			@RequestPart MultipartFile file) throws Throwable {
747
 
29598 tejbeer 748
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
749
		String email = loginDetails.getEmailId();
750
 
751
		AuthUser createdBy = authRepository.selectByEmailOrMobile(email);
752
 
29426 manish 753
		LOGGER.info("file" + file.toString());
754
 
755
		String fileName = file.getName();
756
 
757
		String fileNames = file.getOriginalFilename();
758
 
759
		LOGGER.info("fileName" + fileName);
760
		LOGGER.info("fileNames" + fileNames);
761
 
29598 tejbeer 762
		List<CSVRecord> records = FileUtil.readFile(file);
29426 manish 763
 
29598 tejbeer 764
		for (CSVRecord record : records) {
29426 manish 765
 
766
			Lead lead = new Lead();
29598 tejbeer 767
			lead.setFirstName(record.get(0));
768
			lead.setLastName(record.get(1));
769
			lead.setAddress(record.get(2));
770
			lead.setCity(record.get(3));
771
			lead.setState(record.get(4));
772
			lead.setLeadMobile(record.get(5));
773
			LOGGER.info("record" + record.get(6));
29426 manish 774
 
29598 tejbeer 775
			AuthUser assignTo = authRepository.selectByEmailOrMobile(record.get(6));
29426 manish 776
 
29598 tejbeer 777
			if (assignTo == null) {
778
				throw new ProfitMandiBusinessException("Assign To ", record.get(6), "email id not exist");
779
			}
29445 manish 780
 
29598 tejbeer 781
			lead.setAssignTo(assignTo.getId());
782
			lead.setSource(record.get(7));
783
 
784
			lead.setCreatedTimestamp(LocalDateTime.now());
785
 
29426 manish 786
			lead.setUpdatedTimestamp(LocalDateTime.now());
787
			lead.setStatus(LeadStatus.pending);
788
			lead.setColor("yellow");
789
			// change
29598 tejbeer 790
			lead.setCreatedBy(createdBy.getFullName());
791
			lead.setAuthId(createdBy.getId());
29426 manish 792
 
793
			leadRepository.persist(lead);
794
 
795
			LeadActivity leadActivity = new LeadActivity();
796
			leadActivity.setLeadId(lead.getId());
29598 tejbeer 797
			leadActivity.setRemark("New Lead");
29426 manish 798
			leadActivity.setSchelduleTimestamp(null);
799
 
800
			leadActivity.setCreatedTimestamp(LocalDateTime.now());
801
			leadActivityRepository.persist(leadActivity);
802
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
803
 
804
		}
805
 
806
		model.addAttribute("responseSTG", mvcResponseSender.createResponseString(true));
807
 
808
		return "response";
809
 
810
	}
811
 
30185 tejbeer 812
	@RequestMapping(value = "/teamCommitment", method = RequestMethod.GET)
813
	public String teamCommitments(HttpServletRequest request, Model model) throws Exception {
814
 
815
		return "team-commitment";
816
 
817
	}
818
 
819
	@RequestMapping(value = "/getTeamCommitment", method = RequestMethod.GET)
820
	public String getTeamCommitments(HttpServletRequest request, @RequestParam LocalDateTime date, Model model)
821
			throws Exception {
822
 
823
		List<TeamCommitmentModel> commitments = partnerCollectionPlanRepository
824
				.selectTeamCommitmentByDate(date.toLocalDate());
825
 
826
		model.addAttribute("commitments", commitments);
827
		return "team-commitment-table";
828
 
829
	}
30416 tejbeer 830
 
831
	@RequestMapping(value = "/partnerHealth", method = RequestMethod.GET)
832
	public String partnerHealth(HttpServletRequest request,
833
			@RequestParam(name = "email", required = false) String email, Model model) throws Exception {
834
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
835
 
836
		if (StringUtils.isEmpty(email)) {
837
			email = loginDetails.getEmailId();
838
		} else {
839
			AuthUser selectedUser = authRepository.selectByEmailOrMobile(email);
840
 
841
			model.addAttribute("selectedUser", selectedUser);
842
 
843
		}
844
 
845
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
846
 
847
		Map<String, Set<Integer>> storeGuyMap = csService.getAuthUserPartnerIdMapping();
848
		Set<Integer> fofoIds = storeGuyMap.get(email);
849
		LocalDateTime startDate = LocalDate.now().atStartOfDay();
850
		if (fofoIds.size() > 0 && fofoIds != null) {
851
			List<Integer> fofoIdl = new ArrayList<>(fofoIds);
852
			List<Integer> fofoIdList = fofoStoreRepository.selectByRetailerIds(fofoIdl).stream()
853
					.filter(x -> !x.isInternal()).map(x -> x.getId()).collect(Collectors.toList());
854
 
855
			Map<Integer, PartnerCollectionPlanModel> foundCollectionMap = partnerCollectionService
856
					.getCollectionMap(fofoIdList, startDate);
857
 
858
			ChartLeadModel cm = this
859
					.getCollectionCount(foundCollectionMap.values().stream().collect(Collectors.toList()));
860
			model.addAttribute("chartPartnerHealth", gson.toJson(cm));
861
			Map<Integer, PartnerDailyInvestment> partnerDailyInvestmentMap = new HashMap<>();
862
 
863
			List<PartnerDailyInvestment> partnerDailyInvestments = partnerDailyInvestmentRepository
864
					.selectAll(fofoIdList, startDate.toLocalDate().minusDays(1));
865
			if (!partnerDailyInvestments.isEmpty()) {
866
				partnerDailyInvestmentMap = partnerDailyInvestments.stream()
867
						.collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
868
			}
869
 
870
			Map<LocalDate, Map<Integer, PartnerCollectionPlanModel>> pcpmMap = new TreeMap<>();
871
			for (int i = 0; i <= 6; i++) {
872
 
873
				Map<Integer, PartnerCollectionPlanModel> collectionMap = partnerCollectionService
874
						.getCollectionMap(fofoIdList, startDate.minusDays(i));
875
 
876
				pcpmMap.put(startDate.minusDays(i).toLocalDate(), collectionMap);
877
			}
878
 
879
			Map<Integer, PartnerCollectionPlanModel> todayPcpmMap = pcpmMap.get(startDate.toLocalDate());
880
			model.addAttribute("todayPcpmMap", todayPcpmMap);
881
 
882
			Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(fofoIdList);
883
			List<Integer> allReportees = authService.getAllReportees(authUser.getId());
884
			LOGGER.info("allReportees" + allReportees);
885
			List<Integer> salesPositionsAuthIds = positionRepository
886
					.selectPositionByCategoryId(ProfitMandiConstants.TICKET_CATEGORY_SALES).stream()
887
					.map(x -> x.getAuthUserId()).collect(Collectors.toList());
888
			LOGGER.info("salesPositionsAuthIds" + salesPositionsAuthIds);
889
			List<Integer> rbmPositionsAuthIds = positionRepository
890
					.selectPositionByCategoryId(ProfitMandiConstants.TICKET_CATEGORY_RBM).stream()
891
					.map(x -> x.getAuthUserId()).collect(Collectors.toList());
892
			LOGGER.info("rbmPositionsAuthIds" + rbmPositionsAuthIds);
893
 
894
			salesPositionsAuthIds.addAll(rbmPositionsAuthIds);
895
 
896
			LOGGER.info("sdddd" + salesPositionsAuthIds);
897
 
898
			Set<Integer> empHierarchy = allReportees.stream().filter(x -> salesPositionsAuthIds.contains(x))
899
					.collect(Collectors.toSet());
900
 
901
			LOGGER.info("empHierarchy" + empHierarchy);
902
			List<AuthUser> authUsers = authRepository.selectAllAuthUserByIds(new ArrayList<>(empHierarchy));
903
 
904
			LOGGER.info("dddd" + authUsers);
905
			model.addAttribute("authUsers", authUsers);
906
			model.addAttribute("partnerCollectionPlanMap", pcpmMap);
907
			model.addAttribute("partnerDailyInvestmentMap", partnerDailyInvestmentMap);
908
			model.addAttribute("customRetailers", customRetailers);
909
			model.addAttribute("rankColorMap", ProfitMandiConstants.Rank_Color_Map);
910
 
911
		}
912
		return "partner-health";
913
 
914
	}
915
 
916
	public ChartLeadModel getCollectionCount(List<PartnerCollectionPlanModel> pcpm)
917
			throws ProfitMandiBusinessException {
918
 
919
		Map<Integer, Long> rankCount = pcpm.stream().collect(Collectors.groupingBy(x -> x.getRank(),
920
				Collectors.mapping(PartnerCollectionPlanModel::getRank, Collectors.counting())));
921
 
922
		ChartLeadModel cm = new ChartLeadModel();
923
 
924
		HashSet<String> labels = new HashSet<String>();
925
		labels.add("Plan for Today");
926
		labels.add("Carry Forward");
927
		labels.add("Untouched");
928
		labels.add("Plan for Future");
929
		labels.add("Normal");
930
 
931
		List<String> backgroundColor = new ArrayList<>();
932
		List<Long> values = new ArrayList<>();
933
 
934
		for (String label : labels) {
935
 
936
			if (label.equals("Plan for Today")) {
937
				backgroundColor.add("#007bff");
938
				values.add(rankCount.get(1));
939
			}
940
			if (label.equals("Carry Forward")) {
941
				backgroundColor.add("#ffc107");
942
				values.add(rankCount.get(2));
943
			}
944
			if (label.equals("Untouched")) {
945
				backgroundColor.add("#dc3545");
946
				values.add(rankCount.get(3));
947
			}
948
			if (label.equals("Plan for Future")) {
949
				backgroundColor.add("#6c757d");
950
				values.add(rankCount.get(4));
951
			}
952
			if (label.equals("Normal")) {
953
				backgroundColor.add("White");
954
				values.add(rankCount.get(5));
955
			}
956
 
957
		}
958
 
959
		LOGGER.info("backgroundColor" + backgroundColor);
960
		LOGGER.info("labelsChartLead" + labels);
961
		LeadStatusData data = new LeadStatusData();
962
		data.setData(values);
963
		data.setBackgroundColor(backgroundColor);
964
		data.setLabel("DataSet 1");
965
 
966
		PieLables label = new PieLables();
967
		label.setFontColor("black");
968
		label.setFontSize(15);
969
 
970
		Legend legend = new Legend();
971
		legend.setLabels(label);
972
		legend.setPosition("left");
973
 
974
		List<LeadStatusData> dataList = new ArrayList<>();
975
		dataList.add(data);
976
 
977
		DataLeadModel datasets = new DataLeadModel();
978
		datasets.setDatasets(dataList);
979
		datasets.setLabels(labels);
980
 
981
		OptionModel om = new OptionModel();
982
		om.setLegend(legend);
983
 
984
		cm.setType("pie");
985
		cm.setData(datasets);
986
		cm.setOptions(om);
987
 
988
		return cm;
989
	}
990
 
25979 tejbeer 991
}