Subversion Repositories SmartDukaan

Rev

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