Subversion Repositories SmartDukaan

Rev

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