Subversion Repositories SmartDukaan

Rev

Rev 29287 | Rev 29426 | 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 java.time.LocalDate;
25979 tejbeer 4
import java.time.LocalDateTime;
29266 manish 5
import java.time.format.DateTimeFormatter;
25979 tejbeer 6
import java.util.ArrayList;
25988 tejbeer 7
import java.util.Arrays;
27604 tejbeer 8
import java.util.HashMap;
29266 manish 9
import java.util.HashSet;
25979 tejbeer 10
import java.util.List;
11
import java.util.Map;
12
import java.util.stream.Collectors;
13
 
14
import javax.servlet.http.HttpServletRequest;
15
import javax.transaction.Transactional;
16
 
17
import org.apache.logging.log4j.LogManager;
18
import org.apache.logging.log4j.Logger;
19
import org.springframework.beans.factory.annotation.Autowired;
20
import org.springframework.stereotype.Controller;
21
import org.springframework.ui.Model;
22
import org.springframework.web.bind.annotation.RequestBody;
23
import org.springframework.web.bind.annotation.RequestMapping;
24
import org.springframework.web.bind.annotation.RequestMethod;
25
import org.springframework.web.bind.annotation.RequestParam;
26
 
29266 manish 27
import com.google.gson.Gson;
25988 tejbeer 28
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
29266 manish 29
import com.spice.profitmandi.common.model.ChartInvestmentModel;
30
import com.spice.profitmandi.common.model.Data;
31
import com.spice.profitmandi.common.model.DataInvestmentModel;
32
import com.spice.profitmandi.common.model.Legend;
33
import com.spice.profitmandi.common.model.OptionModel;
34
import com.spice.profitmandi.common.model.PieLables;
29278 manish 35
import com.spice.profitmandi.common.model.ProfitMandiConstants;
25979 tejbeer 36
import com.spice.profitmandi.dao.entity.auth.AuthUser;
29266 manish 37
import com.spice.profitmandi.dao.entity.cs.Position;
38
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
25979 tejbeer 39
import com.spice.profitmandi.dao.entity.user.Lead;
40
import com.spice.profitmandi.dao.entity.user.LeadActivity;
41
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
29266 manish 42
import com.spice.profitmandi.dao.model.ChartLeadModel;
27605 tejbeer 43
import com.spice.profitmandi.dao.model.CreateLeacdActivityRequest;
25979 tejbeer 44
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
29266 manish 45
import com.spice.profitmandi.dao.model.DataLeadModel;
46
import com.spice.profitmandi.dao.model.LeadStatusData;
25979 tejbeer 47
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
29266 manish 48
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
25979 tejbeer 49
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
50
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
51
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
29266 manish 52
import com.spice.profitmandi.service.AuthService;
25979 tejbeer 53
import com.spice.profitmandi.web.model.LoginDetails;
54
import com.spice.profitmandi.web.util.CookiesProcessor;
55
import com.spice.profitmandi.web.util.MVCResponseSender;
56
 
57
@Controller
58
@Transactional(rollbackOn = Throwable.class)
59
public class LeadController {
60
	private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
61
 
62
	@Autowired
63
	private LeadRepository leadRepository;
64
 
65
	@Autowired
66
	private LeadActivityRepository leadActivityRepository;
67
 
68
	@Autowired
69
	private StateRepository stateRepository;
70
 
71
	@Autowired
29266 manish 72
	private AuthService authService;
73
 
74
	@Autowired
25979 tejbeer 75
	private AuthRepository authRepository;
76
 
77
	@Autowired
29266 manish 78
	private Gson gson;
79
 
80
	@Autowired
25979 tejbeer 81
	private CookiesProcessor cookiesProcessor;
29278 manish 82
 
83
	@Autowired
84
	PositionRepository positionRepository;
25979 tejbeer 85
 
86
	@Autowired
87
	private MVCResponseSender mvcResponseSender;
88
 
25988 tejbeer 89
	List<LeadStatus> status = Arrays.asList(LeadStatus.notInterested, LeadStatus.finalized);
90
 
25979 tejbeer 91
	@RequestMapping(value = "/getOpenLead", method = RequestMethod.GET)
27609 tejbeer 92
	public String getOpenLead(HttpServletRequest request,
27610 tejbeer 93
			@RequestParam(name = "leadStatus", required = false, defaultValue = "followUp") List<LeadStatus> leadStatus,
27723 tejbeer 94
			@RequestParam(name = "color", required = false, defaultValue = "") List<String> color, Model model)
27642 tejbeer 95
			throws Exception {
27609 tejbeer 96
 
29266 manish 97
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
98
		String emailId = loginDetails.getEmailId();
99
		AuthUser authUser = authRepository.selectByEmailOrMobile(emailId);
29278 manish 100
 
101
 
102
	boolean authPositon  = 	positionRepository.hasCategory(authUser.getId(),ProfitMandiConstants.TICKET_CATEGORY_SALES);
103
 
27610 tejbeer 104
		if (leadStatus.contains(LeadStatus.All)) {
105
 
106
			leadStatus.addAll(Arrays.asList(LeadStatus.values()));
107
		}
27615 tejbeer 108
 
27642 tejbeer 109
		List<Lead> leads = null;
110
		Map<Integer, LeadActivity> leadActivityMap = new HashMap<>();
29287 amit.gupta 111
		List<Integer> authUserIds = null;
27723 tejbeer 112
		if (!color.isEmpty()) {
113
			if (color.contains("All")) {
114
				color.add("yellow");
115
				color.add("green");
116
			}
29278 manish 117
			if(authPositon)
118
			{
29287 amit.gupta 119
				authUserIds = authService.getAllReportees(authUser.getId());
29284 amit.gupta 120
				authUserIds.add(authUser.getId());
29278 manish 121
				LOGGER.info("authIds" + authUserIds);
122
			leads = leadRepository.selectAllByColorStatusAndUpdatedTimestampAndAuthIds(leadStatus, authUserIds, color,
27642 tejbeer 123
					LocalDateTime.now().withDayOfMonth(1).minusMonths(3));
29278 manish 124
 
125
			}
126
			else {
127
 
128
				leads = leadRepository.selectAllByColorStatusAndUpdatedTimestamp(leadStatus, color,
129
						LocalDateTime.now().withDayOfMonth(1).minusMonths(3));
130
			}
131
 
27642 tejbeer 132
		} else {
133
 
29278 manish 134
			if(authPositon) {
29287 amit.gupta 135
				authUserIds = authService.getAllReportees(authUser.getId());
29284 amit.gupta 136
				authUserIds.add(authUser.getId());
29278 manish 137
				LOGGER.info("authIds" + authUserIds);
138
				leads =	leadRepository.selectAllByStatusAndUpdatedTimestampAndAuthId(leadStatus,
139
						LocalDateTime.now().withDayOfMonth(1).minusMonths(3),authUserIds);
140
 
141
			}
142
			else {
27642 tejbeer 143
			leads = leadRepository.selectAllByStatusAndUpdatedTimestamp(leadStatus,
29278 manish 144
					LocalDateTime.now().withDayOfMonth(1).minusMonths(3));
145
			}
27642 tejbeer 146
			// List<Lead> leads = leadRepository.selectAllBylistStatus(leadStatus);
147
			if (!leads.isEmpty()) {
148
				leads.addAll(leadRepository.selectAllByStatus(LeadStatus.pending));
149
			}
27652 tejbeer 150
		}
29287 amit.gupta 151
		if(authPositon && authUserIds.size() > 0) {
152
			List<String> leadCreators = new ArrayList<>();
153
			leadCreators.add("daily-sync");
29289 amit.gupta 154
			leadCreators.addAll(authRepository.selectAllAuthUserByIds(authUserIds).stream().map(x->x.getFullName()).collect(Collectors.toList()));
155
			model.addAttribute("leadCreators", leadCreators);
29287 amit.gupta 156
		}
29266 manish 157
		List<Lead> weekLast = new ArrayList<>();
158
		List<Lead> weekThird = new ArrayList<>();
159
		List<Lead> weekSecond = new ArrayList<>();
160
		List<Lead> weekFirst = new ArrayList<>();
161
		LocalDateTime curDate = LocalDate.now().atStartOfDay();
162
		List<LeadWeakWiseModel> lwDays = new ArrayList<>();
163
 
27642 tejbeer 164
 
29266 manish 165
		for (int i = 7; i >= 1; i--) {
166
			LocalDateTime startOfDay = curDate.minusDays(i);
167
 
168
			LeadWeakWiseModel lm = new LeadWeakWiseModel();
169
			lm.setMonth(startOfDay.toLocalDate());
170
			lwDays.add(lm);
171
		}
172
      if(!leads.isEmpty())
173
      {
174
		for (Lead lead : leads) {
175
 
176
			if (lead.getCreatedTimestamp().isAfter(curDate.minusDays(28))
29275 amit.gupta 177
					&& lead.getCreatedTimestamp().isBefore(curDate.minusDays(21))) {
29266 manish 178
				weekLast.add(lead);
179
 
29275 amit.gupta 180
			} else if(lead.getCreatedTimestamp().isAfter(curDate.minusDays(21))
181
					&& lead.getCreatedTimestamp().isBefore(curDate.minusDays(14))) {
29266 manish 182
				weekThird.add(lead);
29275 amit.gupta 183
			} else if (lead.getCreatedTimestamp().isAfter(curDate.minusDays(14))
184
					&& lead.getCreatedTimestamp().isBefore(curDate.minusDays(7))) {
29266 manish 185
 
186
				weekSecond.add(lead);
29275 amit.gupta 187
			} else if (lead.getCreatedTimestamp().isAfter(curDate.minusDays(7))) {
29266 manish 188
				weekFirst.add(lead);
189
			}
190
 
191
		}
192
	}
193
		LOGGER.info("weekLast" + weekLast);
194
		LOGGER.info("weekThird" + weekThird);
195
		LOGGER.info("weekSecond" + weekSecond);
29287 amit.gupta 196
		Map<String, Long> leadLasts = weekLast.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(), Collectors.counting()));
197
		Map<String, Long> leadThirds = weekThird.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(), Collectors.counting()));
29266 manish 198
		Map<String, Long> leadSeconds = weekSecond.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(),
199
				Collectors.mapping(Lead::getCreatedBy, Collectors.counting())));
200
 
201
		Map<String, Map<LocalDate, Long>> leadFirsts = weekFirst.stream()
202
				.collect(Collectors.groupingBy(x -> x.getCreatedBy(),
203
						Collectors.groupingBy(x -> x.getCreatedTimestamp().toLocalDate(), Collectors.counting())));
204
 
205
		LOGGER.info("leadFirsts" + leadFirsts);
206
 
27723 tejbeer 207
		List<Integer> authIds = new ArrayList<>();
208
		if (!leads.isEmpty()) {
25979 tejbeer 209
 
27723 tejbeer 210
			authIds.addAll(leads.stream().map(x -> x.getAssignTo()).collect(Collectors.toList()));
27610 tejbeer 211
 
27723 tejbeer 212
			for (Lead lead : leads) {
213
				List<LeadActivity> leadActivity = leadActivityRepository.selectBYLeadId(lead.getId());
214
				if (!leadActivity.isEmpty()) {
215
					leadActivityMap.put(lead.getId(), leadActivity.get(0));
27604 tejbeer 216
				}
27723 tejbeer 217
			}
218
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
219
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
220
			model.addAttribute("leadActivityMap", leadActivityMap);
221
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
222
		}
223
 
29266 manish 224
		ChartLeadModel cm = this.getLeadChart(leads);
225
		model.addAttribute("chartLead", gson.toJson(cm));
226
 
227
		LOGGER.info("ChartLeadModel" + gson.toJson(cm));
228
		LOGGER.info("lwDays" + lwDays);
229
 
27610 tejbeer 230
		LOGGER.info("leads" + leads);
25979 tejbeer 231
		List<String> stateNames = stateRepository.selectAll().stream().map(x -> x.getName())
232
				.collect(Collectors.toList());
233
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
29266 manish 234
		LocalDate lastDate = curDate.minusDays(1).toLocalDate();
235
 
236
		List<LocalDate> weekDates = new ArrayList<>();
237
 
238
		weekDates.add(curDate.minusDays(28).toLocalDate());
239
		weekDates.add(curDate.minusDays(22).toLocalDate());
240
		weekDates.add(curDate.minusDays(21).toLocalDate());
241
		weekDates.add(curDate.minusDays(15).toLocalDate());
242
		weekDates.add(curDate.minusDays(14).toLocalDate());
243
		weekDates.add(curDate.minusDays(8).toLocalDate());
244
		weekDates.add(curDate.minusDays(7).toLocalDate());
245
		LOGGER.info("lastDate" + lastDate);
246
 
247
 
248
		model.addAttribute("weekDates", weekDates);
249
 
250
		model.addAttribute("lastDate", lastDate);
25979 tejbeer 251
		model.addAttribute("stateNames", stateNames);
252
		model.addAttribute("authUsers", authUsers);
27610 tejbeer 253
		model.addAttribute("lead", leads);
254
		model.addAttribute("leadStatus", LeadStatus.values());
29266 manish 255
		model.addAttribute("leadLasts", leadLasts);
256
		model.addAttribute("leadThirds", leadThirds);
257
		model.addAttribute("leadSeconds", leadSeconds);
258
		model.addAttribute("leadFirsts", leadFirsts);
259
		model.addAttribute("lwDays", lwDays);
25979 tejbeer 260
 
27610 tejbeer 261
		model.addAttribute("selectedLeadStatus", leadStatus.get(0));
25979 tejbeer 262
		return "lead";
27642 tejbeer 263
 
25979 tejbeer 264
	}
265
 
29266 manish 266
	public ChartLeadModel getLeadChart(List<Lead> leads) throws ProfitMandiBusinessException {
267
 
268
		Map<LeadStatus, Long> leadStatusMap = leads.stream().collect(
269
				Collectors.groupingBy(x -> x.getStatus(), Collectors.mapping(Lead::getStatus, Collectors.counting())));
270
 
271
		ChartLeadModel cm = new ChartLeadModel();
272
 
273
		HashSet<LeadStatus> labels = new HashSet<LeadStatus>();
274
		labels.addAll(leadStatusMap.keySet());
275
 
276
		List<LeadStatus> labelList = new ArrayList<>(labels);
277
		List<String> backgroundColor = new ArrayList<>();
278
 
279
		List<Long> values = new ArrayList<>();
280
 
281
		for (LeadStatus label : labelList) {
282
			values.add(leadStatusMap.get(label));
283
 
284
			if (label.equals(LeadStatus.pending)) {
285
				backgroundColor.add("pink");
286
			}
287
			if (label.equals(LeadStatus.notInterested)) {
288
				backgroundColor.add("red");
289
			}
290
			if (label.equals(LeadStatus.followUp)) {
291
				backgroundColor.add("#9ACD32");
292
			}
293
			if (label.equals(LeadStatus.finalized)) {
294
				backgroundColor.add("blue");
295
			}
296
		}
297
		LOGGER.info("labelList" + labelList);
298
 
299
		LOGGER.info("backgroundColor" + backgroundColor);
300
		LOGGER.info("labelsChartLead" + labels);
301
		LeadStatusData data = new LeadStatusData();
302
		data.setData(values);
303
		data.setBackgroundColor(backgroundColor);
304
		data.setLabel("DataSet 1");
305
 
306
		PieLables label = new PieLables();
307
		label.setFontColor("black");
308
		label.setFontSize(15);
309
 
310
		Legend legend = new Legend();
311
		legend.setLabels(label);
312
		legend.setPosition("left");
313
 
314
		List<LeadStatusData> dataList = new ArrayList<>();
315
		dataList.add(data);
316
 
317
		DataLeadModel datasets = new DataLeadModel();
318
		datasets.setDatasets(dataList);
319
		datasets.setLabels(labels);
320
 
321
		OptionModel om = new OptionModel();
322
		om.setLegend(legend);
323
 
324
		cm.setType("pie");
325
		cm.setData(datasets);
326
		cm.setOptions(om);
327
 
328
		return cm;
329
	}
330
 
25988 tejbeer 331
	@RequestMapping(value = "/getClosedLead", method = RequestMethod.GET)
332
	public String getClosedLead(HttpServletRequest request,
333
			@RequestParam(name = "offset", defaultValue = "0") int offset,
334
			@RequestParam(name = "limit", defaultValue = "10") int limit,
335
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
336
			throws Exception {
337
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
338
		List<Lead> leads = null;
339
		long size = 0;
340
		leads = leadRepository.selectAllByStatus(status, offset, limit);
341
		size = leadRepository.selectCountByStatus(status);
342
 
343
		if (!leads.isEmpty()) {
344
			List<Integer> authIds = new ArrayList<>();
345
			for (Lead lead : leads) {
346
				authIds.add(lead.getAssignTo());
347
			}
348
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
349
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
350
 
351
			model.addAttribute("leads", leads);
352
			model.addAttribute("start", offset + 1);
353
			model.addAttribute("size", size);
354
			model.addAttribute("searchTerm", searchTerm);
355
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
25990 tejbeer 356
			model.addAttribute("url", "/getPaginatedClosedLeads");
25988 tejbeer 357
 
358
			if (leads.size() < limit) {
359
				model.addAttribute("end", offset + leads.size());
360
			} else {
361
				model.addAttribute("end", offset + limit);
362
			}
363
 
364
		} else {
365
			model.addAttribute("lead", leads);
366
 
367
			model.addAttribute("size", size);
368
		}
369
 
370
		model.addAttribute("authUsers", authUsers);
371
		return "lead-close";
372
	}
373
 
374
	@RequestMapping(value = "/getPaginatedClosedLeads", method = RequestMethod.GET)
25990 tejbeer 375
	public String getPaginatedClosedLeads(HttpServletRequest request,
25988 tejbeer 376
			@RequestParam(name = "offset", defaultValue = "0") int offset,
377
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
378
			throws ProfitMandiBusinessException {
379
		List<Lead> leads = null;
380
		leads = leadRepository.selectAllByStatus(status, offset, limit);
381
 
382
		if (!leads.isEmpty()) {
383
			List<Integer> authIds = new ArrayList<>();
384
			for (Lead lead : leads) {
385
				authIds.add(lead.getAssignTo());
386
			}
387
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
388
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
389
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
390
			model.addAttribute("leads", leads);
25990 tejbeer 391
			model.addAttribute("url", "/getPaginatedClosedLeads");
25988 tejbeer 392
 
393
		} else {
394
			model.addAttribute("leads", leads);
395
 
396
		}
397
		return "lead-close-paginated";
398
	}
399
 
400
	@RequestMapping(value = "/searchLeads")
401
	public String getClosedLeads(HttpServletRequest request,
402
			@RequestParam(name = "offset", defaultValue = "0") int offset,
403
			@RequestParam(name = "limit", defaultValue = "10") int limit,
404
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
405
			throws ProfitMandiBusinessException {
406
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
407
		List<Lead> leads = null;
408
		long size = 0;
409
		if (!(searchTerm.equals(""))) {
410
			leads = leadRepository.selectBySearchTerm(status, searchTerm, offset, limit);
411
			if (!(leads.size() == 0)) {
412
				size = leadRepository.selectCountByStatus(status);
413
				List<Integer> authIds = new ArrayList<>();
414
				for (Lead lead : leads) {
415
					authIds.add(lead.getAssignTo());
416
				}
417
				Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
418
						.collect(Collectors.toMap(x -> x.getId(), x -> x));
419
				model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
420
				model.addAttribute("leads", leads);
421
				model.addAttribute("start", offset + 1);
422
				model.addAttribute("size", size);
423
				model.addAttribute("searchTerm", searchTerm);
424
 
425
				if (leads.size() < limit) {
426
					model.addAttribute("end", offset + leads.size());
427
				} else {
428
					model.addAttribute("end", offset + limit);
429
				}
430
			} else {
431
				throw new ProfitMandiBusinessException("lead", searchTerm, "leads Not Found");
432
			}
433
		} else {
434
			leads = leadRepository.selectAllByStatus(status, offset, limit);
435
			size = leadRepository.selectCountByStatus(status);
436
 
437
			if (!leads.isEmpty()) {
438
				List<Integer> authIds = new ArrayList<>();
439
				for (Lead lead : leads) {
440
					authIds.add(lead.getAssignTo());
441
				}
442
				Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
443
						.collect(Collectors.toMap(x -> x.getId(), x -> x));
444
 
445
				model.addAttribute("leads", leads);
446
				model.addAttribute("start", offset + 1);
447
				model.addAttribute("size", size);
448
				model.addAttribute("searchTerm", searchTerm);
449
				model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
450
 
451
				if (leads.size() < limit) {
452
					model.addAttribute("end", offset + leads.size());
453
				} else {
454
					model.addAttribute("end", offset + limit);
455
				}
456
 
457
			}
458
		}
459
 
460
		model.addAttribute("authUsers", authUsers);
461
		return "lead-close";
462
	}
463
 
464
	@RequestMapping(value = "/searchLeadPaginated")
25990 tejbeer 465
	public String searchLeadPaginated(HttpServletRequest request,
25988 tejbeer 466
			@RequestParam(name = "offset", defaultValue = "0") int offset,
467
			@RequestParam(name = "limit", defaultValue = "10") int limit,
468
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
469
			throws ProfitMandiBusinessException {
470
		LOGGER.info("In search Item....");
471
		List<Lead> leads = null;
472
		if (!searchTerm.equals("")) {
473
			leads = leadRepository.selectBySearchTerm(status, searchTerm, offset, limit);
474
			if (!(leads.size() == 0)) {
475
 
476
				List<Integer> authIds = new ArrayList<>();
477
				for (Lead lead : leads) {
478
					authIds.add(lead.getAssignTo());
479
				}
480
				Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
481
						.collect(Collectors.toMap(x -> x.getId(), x -> x));
482
				model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
483
				model.addAttribute("leads", leads);
484
			}
485
		}
486
 
487
		return "lead-close-paginated";
488
 
489
	}
490
 
25979 tejbeer 491
	@RequestMapping(value = "/getLeadActivity", method = RequestMethod.GET)
492
	public String getLeadActivity(HttpServletRequest request, @RequestParam int leadId, Model model) throws Exception {
493
		List<LeadActivity> leadActivity = leadActivityRepository.selectBYLeadId(leadId);
494
		model.addAttribute("leadActivity", leadActivity);
495
		return "lead_activity_modal";
496
	}
497
 
498
	@RequestMapping(value = "/createLead", method = RequestMethod.POST)
499
	public String CreateLead(HttpServletRequest request, @RequestBody CreateRefferalRequest createRefferalRequest,
500
			Model model) throws Exception {
501
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
502
		LOGGER.info("createRefferalRequest" + createRefferalRequest.getSchelduleTimestamp());
503
		Lead lead = new Lead();
504
		lead.setFirstName(createRefferalRequest.getFirstName());
505
		lead.setLastName(createRefferalRequest.getLastName());
506
		lead.setLeadMobile(createRefferalRequest.getMobile());
507
		lead.setState(createRefferalRequest.getState());
508
		lead.setCity(createRefferalRequest.getCity());
509
		lead.setAddress(createRefferalRequest.getAddress());
510
		lead.setCreatedTimestamp(LocalDateTime.now());
511
		lead.setUpdatedTimestamp(LocalDateTime.now());
512
		lead.setStatus(createRefferalRequest.getStatus());
513
		lead.setAssignTo(createRefferalRequest.getAssignTo());
514
		lead.setSource(createRefferalRequest.getSource());
26298 tejbeer 515
		lead.setColor("yellow");
25979 tejbeer 516
		// change
25989 tejbeer 517
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
25979 tejbeer 518
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
519
		lead.setCreatedBy(authUserName);
520
		lead.setAuthId(authUser.getId());
521
 
522
		leadRepository.persist(lead);
523
		LeadActivity leadActivity = new LeadActivity();
524
		leadActivity.setLeadId(lead.getId());
525
		leadActivity.setRemark(createRefferalRequest.getRemark());
526
 
527
		if (createRefferalRequest.getStatus() == LeadStatus.followUp) {
528
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
529
		} else {
530
			leadActivity.setSchelduleTimestamp(null);
531
		}
532
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
533
		leadActivityRepository.persist(leadActivity);
534
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
535
		return "response";
536
 
537
	}
538
 
539
	@RequestMapping(value = "/editLead", method = RequestMethod.POST)
27605 tejbeer 540
	public String EditLead(HttpServletRequest request,
541
			@RequestBody CreateLeacdActivityRequest createLeadActivityRequest, Model model) throws Exception {
25979 tejbeer 542
 
543
		LeadActivity leadActivity = new LeadActivity();
27605 tejbeer 544
		leadActivity.setLeadId(createLeadActivityRequest.getId());
545
		leadActivity.setRemark(createLeadActivityRequest.getRemark());
546
 
547
		if (createLeadActivityRequest.getStatus() == LeadStatus.followUp) {
548
			leadActivity.setSchelduleTimestamp(createLeadActivityRequest.getScheldule());
549
		} else {
550
			leadActivity.setSchelduleTimestamp(null);
551
		}
25979 tejbeer 552
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
553
		leadActivityRepository.persist(leadActivity);
27605 tejbeer 554
		Lead lead = leadRepository.selectById(createLeadActivityRequest.getId());
555
		lead.setAssignTo(createLeadActivityRequest.getAssignTo());
556
		lead.setStatus(createLeadActivityRequest.getStatus());
28200 tejbeer 557
		lead.setNotinterestedReason(createLeadActivityRequest.getReason());
25979 tejbeer 558
		lead.setUpdatedTimestamp(LocalDateTime.now());
559
 
560
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
561
		return "response";
562
 
563
	}
564
}