Subversion Repositories SmartDukaan

Rev

Rev 28200 | Rev 29275 | 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))
143
					&& lead.getCreatedTimestamp().isBefore(curDate.minusDays(22))) {
144
				weekLast.add(lead);
145
 
146
			}
147
 
148
			if (lead.getCreatedTimestamp().isAfter(curDate.minusDays(21))
149
					&& lead.getCreatedTimestamp().isBefore(curDate.minusDays(15))) {
150
				weekThird.add(lead);
151
			}
152
			if (lead.getCreatedTimestamp().isAfter(curDate.minusDays(14))
153
					&& lead.getCreatedTimestamp().isBefore(curDate.minusDays(8))) {
154
 
155
				weekSecond.add(lead);
156
			}
157
			if (lead.getCreatedTimestamp().isAfter(curDate.minusDays(7))) {
158
				weekFirst.add(lead);
159
			}
160
 
161
		}
162
	}
163
 
164
 
165
		LOGGER.info("weekLast" + weekLast);
166
		LOGGER.info("weekThird" + weekThird);
167
		LOGGER.info("weekSecond" + weekSecond);
168
		Map<String, Long> leadLasts = weekLast.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(),
169
				Collectors.mapping(Lead::getCreatedBy, Collectors.counting())));
170
		Map<String, Long> leadThirds = weekThird.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(),
171
				Collectors.mapping(Lead::getCreatedBy, Collectors.counting())));
172
		Map<String, Long> leadSeconds = weekSecond.stream().collect(Collectors.groupingBy(x -> x.getCreatedBy(),
173
				Collectors.mapping(Lead::getCreatedBy, Collectors.counting())));
174
 
175
		Map<String, Map<LocalDate, Long>> leadFirsts = weekFirst.stream()
176
				.collect(Collectors.groupingBy(x -> x.getCreatedBy(),
177
						Collectors.groupingBy(x -> x.getCreatedTimestamp().toLocalDate(), Collectors.counting())));
178
 
179
		LOGGER.info("leadFirsts" + leadFirsts);
180
 
27723 tejbeer 181
		List<Integer> authIds = new ArrayList<>();
182
		if (!leads.isEmpty()) {
25979 tejbeer 183
 
27723 tejbeer 184
			authIds.addAll(leads.stream().map(x -> x.getAssignTo()).collect(Collectors.toList()));
27610 tejbeer 185
 
27723 tejbeer 186
			for (Lead lead : leads) {
187
				List<LeadActivity> leadActivity = leadActivityRepository.selectBYLeadId(lead.getId());
188
				if (!leadActivity.isEmpty()) {
189
					leadActivityMap.put(lead.getId(), leadActivity.get(0));
27604 tejbeer 190
				}
27723 tejbeer 191
			}
192
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
193
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
194
			model.addAttribute("lead", leads);
195
			model.addAttribute("leadActivityMap", leadActivityMap);
196
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
27610 tejbeer 197
 
27723 tejbeer 198
		} else {
199
			model.addAttribute("lead", leads);
200
		}
201
 
29266 manish 202
		ChartLeadModel cm = this.getLeadChart(leads);
203
		model.addAttribute("chartLead", gson.toJson(cm));
204
 
205
		LOGGER.info("ChartLeadModel" + gson.toJson(cm));
206
		LOGGER.info("lwDays" + lwDays);
207
 
27610 tejbeer 208
		LOGGER.info("leads" + leads);
25979 tejbeer 209
		List<String> stateNames = stateRepository.selectAll().stream().map(x -> x.getName())
210
				.collect(Collectors.toList());
211
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
29266 manish 212
		LocalDate lastDate = curDate.minusDays(1).toLocalDate();
213
 
214
		List<LocalDate> weekDates = new ArrayList<>();
215
 
216
		weekDates.add(curDate.minusDays(28).toLocalDate());
217
		weekDates.add(curDate.minusDays(22).toLocalDate());
218
		weekDates.add(curDate.minusDays(21).toLocalDate());
219
		weekDates.add(curDate.minusDays(15).toLocalDate());
220
		weekDates.add(curDate.minusDays(14).toLocalDate());
221
		weekDates.add(curDate.minusDays(8).toLocalDate());
222
		weekDates.add(curDate.minusDays(7).toLocalDate());
223
		LOGGER.info("lastDate" + lastDate);
224
 
225
 
226
		model.addAttribute("weekDates", weekDates);
227
 
228
		model.addAttribute("lastDate", lastDate);
25979 tejbeer 229
		model.addAttribute("stateNames", stateNames);
230
		model.addAttribute("authUsers", authUsers);
27610 tejbeer 231
		model.addAttribute("lead", leads);
232
		model.addAttribute("leadStatus", LeadStatus.values());
29266 manish 233
		model.addAttribute("leadLasts", leadLasts);
234
		model.addAttribute("leadThirds", leadThirds);
235
		model.addAttribute("leadSeconds", leadSeconds);
236
		model.addAttribute("leadFirsts", leadFirsts);
237
		model.addAttribute("lwDays", lwDays);
25979 tejbeer 238
 
27610 tejbeer 239
		model.addAttribute("selectedLeadStatus", leadStatus.get(0));
25979 tejbeer 240
		return "lead";
27642 tejbeer 241
 
25979 tejbeer 242
	}
243
 
29266 manish 244
	public ChartLeadModel getLeadChart(List<Lead> leads) throws ProfitMandiBusinessException {
245
 
246
		Map<LeadStatus, Long> leadStatusMap = leads.stream().collect(
247
				Collectors.groupingBy(x -> x.getStatus(), Collectors.mapping(Lead::getStatus, Collectors.counting())));
248
 
249
		ChartLeadModel cm = new ChartLeadModel();
250
 
251
		HashSet<LeadStatus> labels = new HashSet<LeadStatus>();
252
		labels.addAll(leadStatusMap.keySet());
253
 
254
		List<LeadStatus> labelList = new ArrayList<>(labels);
255
		List<String> backgroundColor = new ArrayList<>();
256
 
257
		List<Long> values = new ArrayList<>();
258
 
259
		for (LeadStatus label : labelList) {
260
			values.add(leadStatusMap.get(label));
261
 
262
			if (label.equals(LeadStatus.pending)) {
263
				backgroundColor.add("pink");
264
			}
265
			if (label.equals(LeadStatus.notInterested)) {
266
				backgroundColor.add("red");
267
			}
268
			if (label.equals(LeadStatus.followUp)) {
269
				backgroundColor.add("#9ACD32");
270
			}
271
			if (label.equals(LeadStatus.finalized)) {
272
				backgroundColor.add("blue");
273
			}
274
		}
275
		LOGGER.info("labelList" + labelList);
276
 
277
		LOGGER.info("backgroundColor" + backgroundColor);
278
		LOGGER.info("labelsChartLead" + labels);
279
		LeadStatusData data = new LeadStatusData();
280
		data.setData(values);
281
		data.setBackgroundColor(backgroundColor);
282
		data.setLabel("DataSet 1");
283
 
284
		PieLables label = new PieLables();
285
		label.setFontColor("black");
286
		label.setFontSize(15);
287
 
288
		Legend legend = new Legend();
289
		legend.setLabels(label);
290
		legend.setPosition("left");
291
 
292
		List<LeadStatusData> dataList = new ArrayList<>();
293
		dataList.add(data);
294
 
295
		DataLeadModel datasets = new DataLeadModel();
296
		datasets.setDatasets(dataList);
297
		datasets.setLabels(labels);
298
 
299
		OptionModel om = new OptionModel();
300
		om.setLegend(legend);
301
 
302
		cm.setType("pie");
303
		cm.setData(datasets);
304
		cm.setOptions(om);
305
 
306
		return cm;
307
	}
308
 
25988 tejbeer 309
	@RequestMapping(value = "/getClosedLead", method = RequestMethod.GET)
310
	public String getClosedLead(HttpServletRequest request,
311
			@RequestParam(name = "offset", defaultValue = "0") int offset,
312
			@RequestParam(name = "limit", defaultValue = "10") int limit,
313
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
314
			throws Exception {
315
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
316
		List<Lead> leads = null;
317
		long size = 0;
318
		leads = leadRepository.selectAllByStatus(status, offset, limit);
319
		size = leadRepository.selectCountByStatus(status);
320
 
321
		if (!leads.isEmpty()) {
322
			List<Integer> authIds = new ArrayList<>();
323
			for (Lead lead : leads) {
324
				authIds.add(lead.getAssignTo());
325
			}
326
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
327
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
328
 
329
			model.addAttribute("leads", leads);
330
			model.addAttribute("start", offset + 1);
331
			model.addAttribute("size", size);
332
			model.addAttribute("searchTerm", searchTerm);
333
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
25990 tejbeer 334
			model.addAttribute("url", "/getPaginatedClosedLeads");
25988 tejbeer 335
 
336
			if (leads.size() < limit) {
337
				model.addAttribute("end", offset + leads.size());
338
			} else {
339
				model.addAttribute("end", offset + limit);
340
			}
341
 
342
		} else {
343
			model.addAttribute("lead", leads);
344
 
345
			model.addAttribute("size", size);
346
		}
347
 
348
		model.addAttribute("authUsers", authUsers);
349
		return "lead-close";
350
	}
351
 
352
	@RequestMapping(value = "/getPaginatedClosedLeads", method = RequestMethod.GET)
25990 tejbeer 353
	public String getPaginatedClosedLeads(HttpServletRequest request,
25988 tejbeer 354
			@RequestParam(name = "offset", defaultValue = "0") int offset,
355
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
356
			throws ProfitMandiBusinessException {
357
		List<Lead> leads = null;
358
		leads = leadRepository.selectAllByStatus(status, offset, limit);
359
 
360
		if (!leads.isEmpty()) {
361
			List<Integer> authIds = new ArrayList<>();
362
			for (Lead lead : leads) {
363
				authIds.add(lead.getAssignTo());
364
			}
365
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
366
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
367
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
368
			model.addAttribute("leads", leads);
25990 tejbeer 369
			model.addAttribute("url", "/getPaginatedClosedLeads");
25988 tejbeer 370
 
371
		} else {
372
			model.addAttribute("leads", leads);
373
 
374
		}
375
		return "lead-close-paginated";
376
	}
377
 
378
	@RequestMapping(value = "/searchLeads")
379
	public String getClosedLeads(HttpServletRequest request,
380
			@RequestParam(name = "offset", defaultValue = "0") int offset,
381
			@RequestParam(name = "limit", defaultValue = "10") int limit,
382
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
383
			throws ProfitMandiBusinessException {
384
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
385
		List<Lead> leads = null;
386
		long size = 0;
387
		if (!(searchTerm.equals(""))) {
388
			leads = leadRepository.selectBySearchTerm(status, searchTerm, offset, limit);
389
			if (!(leads.size() == 0)) {
390
				size = leadRepository.selectCountByStatus(status);
391
				List<Integer> authIds = new ArrayList<>();
392
				for (Lead lead : leads) {
393
					authIds.add(lead.getAssignTo());
394
				}
395
				Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
396
						.collect(Collectors.toMap(x -> x.getId(), x -> x));
397
				model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
398
				model.addAttribute("leads", leads);
399
				model.addAttribute("start", offset + 1);
400
				model.addAttribute("size", size);
401
				model.addAttribute("searchTerm", searchTerm);
402
 
403
				if (leads.size() < limit) {
404
					model.addAttribute("end", offset + leads.size());
405
				} else {
406
					model.addAttribute("end", offset + limit);
407
				}
408
			} else {
409
				throw new ProfitMandiBusinessException("lead", searchTerm, "leads Not Found");
410
			}
411
		} else {
412
			leads = leadRepository.selectAllByStatus(status, offset, limit);
413
			size = leadRepository.selectCountByStatus(status);
414
 
415
			if (!leads.isEmpty()) {
416
				List<Integer> authIds = new ArrayList<>();
417
				for (Lead lead : leads) {
418
					authIds.add(lead.getAssignTo());
419
				}
420
				Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
421
						.collect(Collectors.toMap(x -> x.getId(), x -> x));
422
 
423
				model.addAttribute("leads", leads);
424
				model.addAttribute("start", offset + 1);
425
				model.addAttribute("size", size);
426
				model.addAttribute("searchTerm", searchTerm);
427
				model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
428
 
429
				if (leads.size() < limit) {
430
					model.addAttribute("end", offset + leads.size());
431
				} else {
432
					model.addAttribute("end", offset + limit);
433
				}
434
 
435
			}
436
		}
437
 
438
		model.addAttribute("authUsers", authUsers);
439
		return "lead-close";
440
	}
441
 
442
	@RequestMapping(value = "/searchLeadPaginated")
25990 tejbeer 443
	public String searchLeadPaginated(HttpServletRequest request,
25988 tejbeer 444
			@RequestParam(name = "offset", defaultValue = "0") int offset,
445
			@RequestParam(name = "limit", defaultValue = "10") int limit,
446
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
447
			throws ProfitMandiBusinessException {
448
		LOGGER.info("In search Item....");
449
		List<Lead> leads = null;
450
		if (!searchTerm.equals("")) {
451
			leads = leadRepository.selectBySearchTerm(status, searchTerm, offset, limit);
452
			if (!(leads.size() == 0)) {
453
 
454
				List<Integer> authIds = new ArrayList<>();
455
				for (Lead lead : leads) {
456
					authIds.add(lead.getAssignTo());
457
				}
458
				Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
459
						.collect(Collectors.toMap(x -> x.getId(), x -> x));
460
				model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
461
				model.addAttribute("leads", leads);
462
			}
463
		}
464
 
465
		return "lead-close-paginated";
466
 
467
	}
468
 
25979 tejbeer 469
	@RequestMapping(value = "/getLeadActivity", method = RequestMethod.GET)
470
	public String getLeadActivity(HttpServletRequest request, @RequestParam int leadId, Model model) throws Exception {
471
		List<LeadActivity> leadActivity = leadActivityRepository.selectBYLeadId(leadId);
472
		model.addAttribute("leadActivity", leadActivity);
473
		return "lead_activity_modal";
474
	}
475
 
476
	@RequestMapping(value = "/createLead", method = RequestMethod.POST)
477
	public String CreateLead(HttpServletRequest request, @RequestBody CreateRefferalRequest createRefferalRequest,
478
			Model model) throws Exception {
479
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
480
		LOGGER.info("createRefferalRequest" + createRefferalRequest.getSchelduleTimestamp());
481
		Lead lead = new Lead();
482
		lead.setFirstName(createRefferalRequest.getFirstName());
483
		lead.setLastName(createRefferalRequest.getLastName());
484
		lead.setLeadMobile(createRefferalRequest.getMobile());
485
		lead.setState(createRefferalRequest.getState());
486
		lead.setCity(createRefferalRequest.getCity());
487
		lead.setAddress(createRefferalRequest.getAddress());
488
		lead.setCreatedTimestamp(LocalDateTime.now());
489
		lead.setUpdatedTimestamp(LocalDateTime.now());
490
		lead.setStatus(createRefferalRequest.getStatus());
491
		lead.setAssignTo(createRefferalRequest.getAssignTo());
492
		lead.setSource(createRefferalRequest.getSource());
26298 tejbeer 493
		lead.setColor("yellow");
25979 tejbeer 494
		// change
25989 tejbeer 495
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
25979 tejbeer 496
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
497
		lead.setCreatedBy(authUserName);
498
		lead.setAuthId(authUser.getId());
499
 
500
		leadRepository.persist(lead);
501
		LeadActivity leadActivity = new LeadActivity();
502
		leadActivity.setLeadId(lead.getId());
503
		leadActivity.setRemark(createRefferalRequest.getRemark());
504
 
505
		if (createRefferalRequest.getStatus() == LeadStatus.followUp) {
506
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
507
		} else {
508
			leadActivity.setSchelduleTimestamp(null);
509
		}
510
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
511
		leadActivityRepository.persist(leadActivity);
512
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
513
		return "response";
514
 
515
	}
516
 
517
	@RequestMapping(value = "/editLead", method = RequestMethod.POST)
27605 tejbeer 518
	public String EditLead(HttpServletRequest request,
519
			@RequestBody CreateLeacdActivityRequest createLeadActivityRequest, Model model) throws Exception {
25979 tejbeer 520
 
521
		LeadActivity leadActivity = new LeadActivity();
27605 tejbeer 522
		leadActivity.setLeadId(createLeadActivityRequest.getId());
523
		leadActivity.setRemark(createLeadActivityRequest.getRemark());
524
 
525
		if (createLeadActivityRequest.getStatus() == LeadStatus.followUp) {
526
			leadActivity.setSchelduleTimestamp(createLeadActivityRequest.getScheldule());
527
		} else {
528
			leadActivity.setSchelduleTimestamp(null);
529
		}
25979 tejbeer 530
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
531
		leadActivityRepository.persist(leadActivity);
27605 tejbeer 532
		Lead lead = leadRepository.selectById(createLeadActivityRequest.getId());
533
		lead.setAssignTo(createLeadActivityRequest.getAssignTo());
534
		lead.setStatus(createLeadActivityRequest.getStatus());
28200 tejbeer 535
		lead.setNotinterestedReason(createLeadActivityRequest.getReason());
25979 tejbeer 536
		lead.setUpdatedTimestamp(LocalDateTime.now());
537
 
538
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
539
		return "response";
540
 
541
	}
542
}