Subversion Repositories SmartDukaan

Rev

Rev 25906 | Rev 25952 | Go to most recent revision | Details | Compare with Previous | 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;
25948 amit.gupta 22
import com.spice.profitmandi.common.model.ProfitMandiConstants;
25899 tejbeer 23
import com.spice.profitmandi.common.web.util.ResponseSender;
24
import com.spice.profitmandi.dao.entity.auth.AuthUser;
25948 amit.gupta 25
import com.spice.profitmandi.dao.entity.dtr.RechargeTransaction;
25899 tejbeer 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;
25948 amit.gupta 29
import com.spice.profitmandi.dao.entity.user.Promoter;
30
import com.spice.profitmandi.dao.entity.user.Refferal;
25899 tejbeer 31
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
25948 amit.gupta 32
import com.spice.profitmandi.dao.enumuration.dtr.RefferalStatus;
25899 tejbeer 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;
25948 amit.gupta 36
import com.spice.profitmandi.dao.repository.dtr.RefferalRepository;
25899 tejbeer 37
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
25948 amit.gupta 38
import com.spice.profitmandi.dao.repository.user.PromoterRepository;
25899 tejbeer 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());
25948 amit.gupta 75
 
25900 amit.gupta 76
		AuthUser authUser = authRepository.selectByGmailId(createRefferalRequest.getReffereeEmail());
77
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
78
		lead.setCreatedBy(authUserName);
79
		lead.setAuthId(authUser.getId());
25899 tejbeer 80
 
81
		leadRepository.persist(lead);
82
		LeadActivity leadActivity = new LeadActivity();
83
		leadActivity.setLeadId(lead.getId());
84
		leadActivity.setRemark(createRefferalRequest.getRemark());
85
 
86
		if (createRefferalRequest.getStatus().equals(LeadStatus.followUp)) {
87
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
88
		} else {
89
			leadActivity.setSchelduleTimestamp(null);
90
		}
91
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
92
		leadActivityRepository.persist(leadActivity);
93
 
94
		return responseSender.ok(true);
95
	}
96
 
97
	@RequestMapping(value = "/lead-description", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
98
	@ApiImplicitParams({
99
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
100
	public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId,
101
			@RequestParam(name = "status") LeadStatus status,
102
			@RequestParam(name = "offset", defaultValue = "0") int offset,
103
			@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
104
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
105
		List<Lead> leads = leadRepository.selectByAuthIdAndStatus(authUser.getId(), status, offset, limit);
106
		return responseSender.ok(leads);
107
 
108
	}
109
 
110
	@RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
111
	@ApiImplicitParams({
112
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
113
	public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id)
114
			throws ProfitMandiBusinessException {
115
 
116
		List<LeadActivity> leadActivities = leadActivityRepository.selectBYLeadId(id);
117
		return responseSender.ok(leadActivities);
118
 
119
	}
120
 
25948 amit.gupta 121
	@RequestMapping(value = "/leadUpdate", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
25899 tejbeer 122
	@ApiImplicitParams({
123
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
124
	public ResponseEntity<?> leadUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
125
			@RequestParam(name = "status") LeadStatus status, @RequestParam(name = "remark") String remark,
126
			@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp)
127
			throws ProfitMandiBusinessException {
128
 
129
		Lead lead = leadRepository.selectById(id);
130
 
131
		LeadActivity leadActivity = new LeadActivity();
132
 
133
		if (status == LeadStatus.followUp) {
134
			lead.setStatus(status);
135
			leadActivity.setSchelduleTimestamp(schelduleTimestamp);
136
			leadActivity.setRemark(remark);
137
			leadActivity.setLeadId(id);
138
			leadActivity.setCreatedTimestamp(LocalDateTime.now());
139
			lead.setUpdatedTimestamp(LocalDateTime.now());
140
			leadActivityRepository.persist(leadActivity);
141
		} else {
142
			lead.setStatus(status);
143
			leadActivity.setRemark(remark);
144
			leadActivity.setLeadId(id);
145
			leadActivity.setCreatedTimestamp(LocalDateTime.now());
146
			leadActivity.setSchelduleTimestamp(null);
147
			lead.setUpdatedTimestamp(LocalDateTime.now());
148
			leadActivityRepository.persist(leadActivity);
149
		}
150
 
151
		return responseSender.ok(true);
152
 
153
	}
154
}