Subversion Repositories SmartDukaan

Rev

Rev 25979 | Rev 25988 | 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
 
3
import java.time.LocalDateTime;
4
import java.util.ArrayList;
5
import java.util.List;
6
import java.util.Map;
7
import java.util.stream.Collectors;
8
 
9
import javax.servlet.http.HttpServletRequest;
10
import javax.transaction.Transactional;
11
 
12
import org.apache.logging.log4j.LogManager;
13
import org.apache.logging.log4j.Logger;
14
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.stereotype.Controller;
16
import org.springframework.ui.Model;
17
import org.springframework.web.bind.annotation.RequestBody;
18
import org.springframework.web.bind.annotation.RequestMapping;
19
import org.springframework.web.bind.annotation.RequestMethod;
20
import org.springframework.web.bind.annotation.RequestParam;
21
 
22
import com.spice.profitmandi.dao.entity.auth.AuthUser;
23
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
24
import com.spice.profitmandi.dao.entity.user.Lead;
25
import com.spice.profitmandi.dao.entity.user.LeadActivity;
26
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
27
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
28
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
29
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
30
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
31
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
32
import com.spice.profitmandi.web.model.LoginDetails;
33
import com.spice.profitmandi.web.util.CookiesProcessor;
34
import com.spice.profitmandi.web.util.MVCResponseSender;
35
 
36
@Controller
37
@Transactional(rollbackOn = Throwable.class)
38
public class LeadController {
39
	private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
40
 
41
	@Autowired
42
	private LeadRepository leadRepository;
43
 
44
	@Autowired
45
	private LeadActivityRepository leadActivityRepository;
46
 
47
	@Autowired
48
	private StateRepository stateRepository;
49
 
50
	@Autowired
51
	private AuthRepository authRepository;
52
 
53
	@Autowired
54
	private CookiesProcessor cookiesProcessor;
55
 
56
	@Autowired
57
	private MVCResponseSender mvcResponseSender;
58
 
59
	@RequestMapping(value = "/getOpenLead", method = RequestMethod.GET)
60
	public String getOpenLead(HttpServletRequest request, Model model) throws Exception {
61
		List<Lead> leads = leadRepository.selectAllByStatus(LeadStatus.followUp);
62
		List<Integer> authIds = new ArrayList<>();
63
		if (!leads.isEmpty()) {
64
 
65
			for (Lead lead : leads) {
66
				authIds.add(lead.getAssignTo());
67
			}
68
			Map<Integer, AuthUser> authIdAndAuthUserMap = authRepository.selectAllAuthUserByIds(authIds).stream()
69
					.collect(Collectors.toMap(x -> x.getId(), x -> x));
70
 
71
			model.addAttribute("lead", leads);
72
			model.addAttribute("authIdAndAuthUserMap", authIdAndAuthUserMap);
73
 
74
		} else {
75
			model.addAttribute("lead", leads);
76
		}
77
 
78
		List<String> stateNames = stateRepository.selectAll().stream().map(x -> x.getName())
79
				.collect(Collectors.toList());
80
		List<AuthUser> authUsers = authRepository.selectAllActiveUser();
81
		model.addAttribute("stateNames", stateNames);
82
		model.addAttribute("authUsers", authUsers);
83
 
84
		return "lead";
85
	}
86
 
87
	@RequestMapping(value = "/getLeadActivity", method = RequestMethod.GET)
88
	public String getLeadActivity(HttpServletRequest request, @RequestParam int leadId, Model model) throws Exception {
89
		List<LeadActivity> leadActivity = leadActivityRepository.selectBYLeadId(leadId);
90
		model.addAttribute("leadActivity", leadActivity);
91
		return "lead_activity_modal";
92
	}
93
 
94
	@RequestMapping(value = "/createLead", method = RequestMethod.POST)
95
	public String CreateLead(HttpServletRequest request, @RequestBody CreateRefferalRequest createRefferalRequest,
96
			Model model) throws Exception {
97
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
98
		LOGGER.info("createRefferalRequest" + createRefferalRequest.getSchelduleTimestamp());
99
		Lead lead = new Lead();
100
		lead.setFirstName(createRefferalRequest.getFirstName());
101
		lead.setLastName(createRefferalRequest.getLastName());
102
		lead.setLeadMobile(createRefferalRequest.getMobile());
103
		lead.setState(createRefferalRequest.getState());
104
		lead.setCity(createRefferalRequest.getCity());
105
		lead.setAddress(createRefferalRequest.getAddress());
106
		lead.setCreatedTimestamp(LocalDateTime.now());
107
		lead.setUpdatedTimestamp(LocalDateTime.now());
108
		lead.setStatus(createRefferalRequest.getStatus());
109
		lead.setAssignTo(createRefferalRequest.getAssignTo());
110
		lead.setSource(createRefferalRequest.getSource());
111
		// change
25981 tejbeer 112
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
25979 tejbeer 113
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
114
		lead.setCreatedBy(authUserName);
115
		lead.setAuthId(authUser.getId());
116
 
117
		leadRepository.persist(lead);
118
		LeadActivity leadActivity = new LeadActivity();
119
		leadActivity.setLeadId(lead.getId());
120
		leadActivity.setRemark(createRefferalRequest.getRemark());
121
 
122
		if (createRefferalRequest.getStatus() == LeadStatus.followUp) {
123
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
124
		} else {
125
			leadActivity.setSchelduleTimestamp(null);
126
		}
127
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
128
		leadActivityRepository.persist(leadActivity);
129
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
130
		return "response";
131
 
132
	}
133
 
134
	@RequestMapping(value = "/editLead", method = RequestMethod.POST)
135
	public String EditLead(HttpServletRequest request, @RequestParam int assignTo, @RequestParam String remark,
136
			@RequestParam int leadId, Model model) throws Exception {
137
 
138
		LeadActivity leadActivity = new LeadActivity();
139
		leadActivity.setLeadId(leadId);
140
		leadActivity.setRemark(remark);
141
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
142
		leadActivityRepository.persist(leadActivity);
143
		Lead lead = leadRepository.selectById(leadId);
144
		lead.setAssignTo(assignTo);
145
		lead.setUpdatedTimestamp(LocalDateTime.now());
146
 
147
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
148
		return "response";
149
 
150
	}
151
}