Subversion Repositories SmartDukaan

Rev

Rev 25900 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
25899 tejbeer 1
package com.spice.profitmandi.web.controller;
2
 
3
import java.time.LocalDateTime;
4
import java.util.List;
5
 
6
import javax.servlet.http.HttpServletRequest;
7
 
8
import org.apache.logging.log4j.LogManager;
9
import org.apache.logging.log4j.Logger;
10
import org.springframework.beans.factory.annotation.Autowired;
11
import org.springframework.format.annotation.DateTimeFormat;
12
import org.springframework.http.MediaType;
13
import org.springframework.http.ResponseEntity;
14
import org.springframework.stereotype.Controller;
15
import org.springframework.transaction.annotation.Transactional;
16
import org.springframework.web.bind.annotation.RequestBody;
17
import org.springframework.web.bind.annotation.RequestMapping;
18
import org.springframework.web.bind.annotation.RequestMethod;
19
import org.springframework.web.bind.annotation.RequestParam;
20
 
21
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
22
import com.spice.profitmandi.common.model.ProfitMandiConstants;
23
import com.spice.profitmandi.common.web.util.ResponseSender;
24
import com.spice.profitmandi.dao.entity.auth.AuthUser;
25
import com.spice.profitmandi.dao.entity.dtr.RechargeTransaction;
26
import com.spice.profitmandi.dao.entity.dtr.User;
27
import com.spice.profitmandi.dao.entity.user.Lead;
28
import com.spice.profitmandi.dao.entity.user.LeadActivity;
29
import com.spice.profitmandi.dao.entity.user.Promoter;
30
import com.spice.profitmandi.dao.entity.user.Refferal;
31
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
32
import com.spice.profitmandi.dao.enumuration.dtr.RefferalStatus;
33
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
34
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
35
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
36
import com.spice.profitmandi.dao.repository.dtr.RefferalRepository;
37
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
38
import com.spice.profitmandi.dao.repository.user.PromoterRepository;
39
import com.spice.profitmandi.web.req.CreateRefferalRequest;
40
 
41
import io.swagger.annotations.ApiImplicitParam;
42
import io.swagger.annotations.ApiImplicitParams;
43
 
44
@Controller
45
@Transactional(rollbackFor = Throwable.class)
46
public class LeadController {
47
	private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
48
	@Autowired
49
	private ResponseSender<?> responseSender;
50
 
51
	@Autowired
52
	private AuthRepository authRepository;
53
 
54
	@Autowired
55
	private LeadRepository leadRepository;
56
 
57
	@Autowired
58
	private LeadActivityRepository leadActivityRepository;
59
 
60
	@RequestMapping(value = "/lead", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
61
	@ApiImplicitParams({
62
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
63
	public ResponseEntity<?> LeadUser(HttpServletRequest request,
64
			@RequestBody CreateRefferalRequest createRefferalRequest) throws Exception {
65
		Lead lead = new Lead();
66
		lead.setFirstName(createRefferalRequest.getFirstName());
67
		lead.setLastName(createRefferalRequest.getLastName());
68
		lead.setLeadMobile(createRefferalRequest.getMobile());
69
		lead.setState(createRefferalRequest.getState());
70
		lead.setCity(createRefferalRequest.getCity());
71
		lead.setAddress(createRefferalRequest.getAddress());
72
		lead.setCreatedTimestamp(LocalDateTime.now());
73
		lead.setUpdatedTimestamp(LocalDateTime.now());
74
		lead.setStatus(createRefferalRequest.getStatus());
75
 
76
		if (createRefferalRequest.isFofoAssociate()) {
77
			AuthUser authUser = authRepository.selectByGmailId(createRefferalRequest.getReffereeEmail());
78
			String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
79
			lead.setCreatedBy(authUserName);
80
			lead.setAuthId(authUser.getId());
81
 
82
		}
83
 
84
		leadRepository.persist(lead);
85
		LeadActivity leadActivity = new LeadActivity();
86
		leadActivity.setLeadId(lead.getId());
87
		leadActivity.setRemark(createRefferalRequest.getRemark());
88
 
89
		if (createRefferalRequest.getStatus().equals(LeadStatus.followUp)) {
90
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
91
		} else {
92
			leadActivity.setSchelduleTimestamp(null);
93
		}
94
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
95
		leadActivityRepository.persist(leadActivity);
96
 
97
		return responseSender.ok(true);
98
	}
99
 
100
	@RequestMapping(value = "/lead-description", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
101
	@ApiImplicitParams({
102
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
103
	public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId,
104
			@RequestParam(name = "status") LeadStatus status,
105
			@RequestParam(name = "offset", defaultValue = "0") int offset,
106
			@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
107
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
108
		List<Lead> leads = leadRepository.selectByAuthIdAndStatus(authUser.getId(), status, offset, limit);
109
		return responseSender.ok(leads);
110
 
111
	}
112
 
113
	@RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
114
	@ApiImplicitParams({
115
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
116
	public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id)
117
			throws ProfitMandiBusinessException {
118
 
119
		List<LeadActivity> leadActivities = leadActivityRepository.selectBYLeadId(id);
120
		return responseSender.ok(leadActivities);
121
 
122
	}
123
 
124
	@RequestMapping(value = "/lead-update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
125
	@ApiImplicitParams({
126
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
127
	public ResponseEntity<?> leadUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
128
			@RequestParam(name = "status") LeadStatus status, @RequestParam(name = "remark") String remark,
129
			@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp)
130
			throws ProfitMandiBusinessException {
131
 
132
		Lead lead = leadRepository.selectById(id);
133
 
134
		LeadActivity leadActivity = new LeadActivity();
135
 
136
		if (status == LeadStatus.followUp) {
137
			lead.setStatus(status);
138
			leadActivity.setSchelduleTimestamp(schelduleTimestamp);
139
			leadActivity.setRemark(remark);
140
			leadActivity.setLeadId(id);
141
			leadActivity.setCreatedTimestamp(LocalDateTime.now());
142
			lead.setUpdatedTimestamp(LocalDateTime.now());
143
			leadActivityRepository.persist(leadActivity);
144
		} else {
145
			lead.setStatus(status);
146
			leadActivity.setRemark(remark);
147
			leadActivity.setLeadId(id);
148
			leadActivity.setCreatedTimestamp(LocalDateTime.now());
149
			leadActivity.setSchelduleTimestamp(null);
150
			lead.setUpdatedTimestamp(LocalDateTime.now());
151
			leadActivityRepository.persist(leadActivity);
152
		}
153
 
154
		return responseSender.ok(true);
155
 
156
	}
157
}