Subversion Repositories SmartDukaan

Rev

Rev 28935 | Rev 28983 | 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
 
27117 tejbeer 3
import java.time.LocalDate;
25899 tejbeer 4
import java.time.LocalDateTime;
27117 tejbeer 5
import java.time.format.DateTimeFormatter;
25952 tejbeer 6
import java.util.ArrayList;
27117 tejbeer 7
import java.util.HashMap;
8
import java.util.HashSet;
25899 tejbeer 9
import java.util.List;
25952 tejbeer 10
import java.util.Map;
11
import java.util.Set;
28935 tejbeer 12
import java.util.stream.Collectors;
25899 tejbeer 13
 
14
import javax.servlet.http.HttpServletRequest;
15
 
16
import org.apache.logging.log4j.LogManager;
17
import org.apache.logging.log4j.Logger;
18
import org.springframework.beans.factory.annotation.Autowired;
19
import org.springframework.format.annotation.DateTimeFormat;
20
import org.springframework.http.MediaType;
21
import org.springframework.http.ResponseEntity;
22
import org.springframework.stereotype.Controller;
23
import org.springframework.transaction.annotation.Transactional;
28935 tejbeer 24
import org.springframework.ui.Model;
25899 tejbeer 25
import org.springframework.web.bind.annotation.RequestBody;
26
import org.springframework.web.bind.annotation.RequestMapping;
27
import org.springframework.web.bind.annotation.RequestMethod;
28
import org.springframework.web.bind.annotation.RequestParam;
29
 
30
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
25952 tejbeer 31
import com.spice.profitmandi.common.model.CustomRetailer;
27117 tejbeer 32
import com.spice.profitmandi.common.model.ProfitMandiConstants;
25899 tejbeer 33
import com.spice.profitmandi.common.web.util.ResponseSender;
34
import com.spice.profitmandi.dao.entity.auth.AuthUser;
35
import com.spice.profitmandi.dao.entity.dtr.User;
25952 tejbeer 36
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
28935 tejbeer 37
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
38
import com.spice.profitmandi.dao.entity.fofo.PartnerOnBoardingPanel;
27117 tejbeer 39
import com.spice.profitmandi.dao.entity.logistics.PostOffice;
25952 tejbeer 40
import com.spice.profitmandi.dao.entity.user.FranchiseeActivity;
41
import com.spice.profitmandi.dao.entity.user.FranchiseeVisit;
25899 tejbeer 42
import com.spice.profitmandi.dao.entity.user.Lead;
43
import com.spice.profitmandi.dao.entity.user.LeadActivity;
25952 tejbeer 44
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeActivityStatus;
45
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeVisitStatus;
25899 tejbeer 46
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
28935 tejbeer 47
import com.spice.profitmandi.dao.enumuration.dtr.TimelineStatus;
48
import com.spice.profitmandi.dao.enumuration.dtr.StoreTimeline;
25979 tejbeer 49
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
28935 tejbeer 50
import com.spice.profitmandi.dao.model.OnBoardingTimelineModel;
51
import com.spice.profitmandi.dao.model.UserCart;
25899 tejbeer 52
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
25952 tejbeer 53
import com.spice.profitmandi.dao.repository.cs.CsService;
28935 tejbeer 54
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
25952 tejbeer 55
import com.spice.profitmandi.dao.repository.dtr.FranchiseeActivityRepository;
56
import com.spice.profitmandi.dao.repository.dtr.FranchiseeVisitRepository;
25899 tejbeer 57
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
58
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
28935 tejbeer 59
import com.spice.profitmandi.dao.repository.dtr.PartnerOnBoardingPanelRepository;
25952 tejbeer 60
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
25899 tejbeer 61
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
25952 tejbeer 62
import com.spice.profitmandi.service.user.RetailerService;
28935 tejbeer 63
import com.spice.profitmandi.service.user.StoreTimelineTatService;
25952 tejbeer 64
import com.spice.profitmandi.web.req.CreateFranchiseeRequest;
25979 tejbeer 65
 
25952 tejbeer 66
import com.spice.profitmandi.web.res.Partner;
25899 tejbeer 67
 
68
import io.swagger.annotations.ApiImplicitParam;
69
import io.swagger.annotations.ApiImplicitParams;
70
 
71
@Controller
72
@Transactional(rollbackFor = Throwable.class)
73
public class LeadController {
74
	private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
75
	@Autowired
76
	private ResponseSender<?> responseSender;
77
 
78
	@Autowired
79
	private AuthRepository authRepository;
80
 
81
	@Autowired
82
	private LeadRepository leadRepository;
83
 
84
	@Autowired
25952 tejbeer 85
	private CsService csService;
86
 
87
	@Autowired
88
	private UserRepository userRepository;
89
 
90
	@Autowired
91
	private UserAccountRepository userAccountRepository;
92
 
93
	@Autowired
94
	private com.spice.profitmandi.dao.repository.user.UserRepository userUserRepository;
95
 
96
	@Autowired
97
	private RetailerService retailerService;
98
 
99
	@Autowired
25899 tejbeer 100
	private LeadActivityRepository leadActivityRepository;
101
 
25952 tejbeer 102
	@Autowired
103
	private FranchiseeVisitRepository franchiseeVisitRepository;
104
 
105
	@Autowired
106
	private FranchiseeActivityRepository franchiseeActivityRepository;
107
 
28935 tejbeer 108
	@Autowired
109
	private PartnerOnBoardingPanelRepository partnerOnBoardingPanelRepository;
110
 
111
	@Autowired
112
	private FofoStoreRepository fofoStoreRepository;
113
 
114
	@Autowired
115
	private StoreTimelineTatService storeTimelineTatService;
116
 
25899 tejbeer 117
	@RequestMapping(value = "/lead", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
118
	@ApiImplicitParams({
119
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
120
	public ResponseEntity<?> LeadUser(HttpServletRequest request,
121
			@RequestBody CreateRefferalRequest createRefferalRequest) throws Exception {
122
		Lead lead = new Lead();
123
		lead.setFirstName(createRefferalRequest.getFirstName());
124
		lead.setLastName(createRefferalRequest.getLastName());
125
		lead.setLeadMobile(createRefferalRequest.getMobile());
126
		lead.setState(createRefferalRequest.getState());
127
		lead.setCity(createRefferalRequest.getCity());
128
		lead.setAddress(createRefferalRequest.getAddress());
129
		lead.setCreatedTimestamp(LocalDateTime.now());
130
		lead.setUpdatedTimestamp(LocalDateTime.now());
131
		lead.setStatus(createRefferalRequest.getStatus());
25979 tejbeer 132
		lead.setSource(createRefferalRequest.getSource());
28201 tejbeer 133
		lead.setNotinterestedReason(createRefferalRequest.getReason());
26244 tejbeer 134
		if (createRefferalRequest.getColorCheck() == true) {
135
			lead.setColor("Green");
136
		} else {
137
			lead.setColor("Yellow");
138
		}
25900 amit.gupta 139
		AuthUser authUser = authRepository.selectByGmailId(createRefferalRequest.getReffereeEmail());
140
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
141
		lead.setCreatedBy(authUserName);
142
		lead.setAuthId(authUser.getId());
25981 tejbeer 143
		lead.setAssignTo(authUser.getId());
25899 tejbeer 144
 
145
		leadRepository.persist(lead);
146
		LeadActivity leadActivity = new LeadActivity();
147
		leadActivity.setLeadId(lead.getId());
148
		leadActivity.setRemark(createRefferalRequest.getRemark());
149
 
150
		if (createRefferalRequest.getStatus().equals(LeadStatus.followUp)) {
151
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
26958 tejbeer 152
			leadActivity.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
27025 tejbeer 153
			lead.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
25899 tejbeer 154
		} else {
155
			leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 156
			leadActivity.setClosureTimestamp(null);
27025 tejbeer 157
			lead.setClosureTimestamp(null);
25899 tejbeer 158
		}
159
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
160
		leadActivityRepository.persist(leadActivity);
161
 
162
		return responseSender.ok(true);
163
	}
164
 
165
	@RequestMapping(value = "/lead-description", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
166
	@ApiImplicitParams({
167
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
168
	public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId,
169
			@RequestParam(name = "status") LeadStatus status,
170
			@RequestParam(name = "offset", defaultValue = "0") int offset,
171
			@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
172
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
25979 tejbeer 173
		List<Lead> leads = leadRepository.selectByAssignAuthIdAndStatus(authUser.getId(), status, offset, limit);
174
 
25899 tejbeer 175
		return responseSender.ok(leads);
176
 
177
	}
178
 
179
	@RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
180
	@ApiImplicitParams({
181
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
182
	public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id)
183
			throws ProfitMandiBusinessException {
184
 
185
		List<LeadActivity> leadActivities = leadActivityRepository.selectBYLeadId(id);
186
		return responseSender.ok(leadActivities);
187
 
188
	}
189
 
25948 amit.gupta 190
	@RequestMapping(value = "/leadUpdate", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
25899 tejbeer 191
	@ApiImplicitParams({
192
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
193
	public ResponseEntity<?> leadUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
26244 tejbeer 194
			@RequestParam(name = "status") LeadStatus status, @RequestParam(name = "colorCheck") Boolean colorCheck,
28201 tejbeer 195
			@RequestParam(name = "remark") String remark, @RequestParam(name = "reason") String reason,
26958 tejbeer 196
			@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp,
197
			@RequestParam(name = "closureTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime closureTimestamp)
25899 tejbeer 198
			throws ProfitMandiBusinessException {
199
 
200
		Lead lead = leadRepository.selectById(id);
201
 
202
		LeadActivity leadActivity = new LeadActivity();
26250 tejbeer 203
		lead.setStatus(status);
28201 tejbeer 204
		lead.setNotinterestedReason(reason);
26250 tejbeer 205
		leadActivity.setRemark(remark);
206
		leadActivity.setLeadId(id);
207
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
208
		leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 209
		leadActivity.setClosureTimestamp(null);
26250 tejbeer 210
		lead.setUpdatedTimestamp(LocalDateTime.now());
211
		if (colorCheck == true) {
212
			lead.setColor("Green");
213
		} else {
214
			lead.setColor("Yellow");
215
		}
216
		if (status == LeadStatus.followUp) {
25899 tejbeer 217
 
218
			leadActivity.setSchelduleTimestamp(schelduleTimestamp);
26958 tejbeer 219
			leadActivity.setClosureTimestamp(closureTimestamp);
27025 tejbeer 220
			lead.setClosureTimestamp(closureTimestamp);
26250 tejbeer 221
 
25899 tejbeer 222
		} else {
26250 tejbeer 223
 
25899 tejbeer 224
			leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 225
			leadActivity.setClosureTimestamp(null);
27025 tejbeer 226
			lead.setClosureTimestamp(null);
26244 tejbeer 227
 
25899 tejbeer 228
		}
26250 tejbeer 229
		leadActivityRepository.persist(leadActivity);
25899 tejbeer 230
		return responseSender.ok(true);
231
 
232
	}
25952 tejbeer 233
 
27117 tejbeer 234
	@RequestMapping(value = ProfitMandiConstants.URL_NEW_LEAD, method = RequestMethod.POST)
235
	public ResponseEntity<?> newLead(HttpServletRequest request,
27597 amit.gupta 236
			@RequestBody CreateRefferalRequest createRefferalRequest) throws ProfitMandiBusinessException {
27117 tejbeer 237
		LOGGER.info("requested url : " + request.getRequestURL().toString());
238
		Lead lead = new Lead();
239
		lead.setAddress(createRefferalRequest.getCity());
27625 tejbeer 240
		Long.parseLong(createRefferalRequest.getMobile());
28201 tejbeer 241
		if (createRefferalRequest.getMobile().length() != 10) {
242
			throw new ProfitMandiBusinessException("Mobile Number", createRefferalRequest.getMobile(),
243
					"Number should be of 10 digits");
27597 amit.gupta 244
		}
27117 tejbeer 245
		lead.setLeadMobile(createRefferalRequest.getMobile());
246
		lead.setCity(createRefferalRequest.getCity());
247
		lead.setState(createRefferalRequest.getState());
248
		lead.setLastName(createRefferalRequest.getLastName());
249
		if (lead.getState().equals("Uttar Pradesh")) {
250
			lead.setAssignTo(1);
251
		} else if (lead.getState().equals("Haryana")) {
252
			lead.setAssignTo(1);
253
		} else if (lead.getState().equals("Delhi")) {
254
			lead.setAssignTo(1);
255
		} else {
28201 tejbeer 256
			// Assign to sm
27992 amit.gupta 257
			lead.setAssignTo(53);
28201 tejbeer 258
			// Assign to neha
259
			// lead.setAssignTo(1);
27117 tejbeer 260
		}
261
		lead.setAuthId(lead.getAssignTo());
262
		lead.setCreatedBy("daily-sync");
263
		lead.setSource("SD-WEB");
264
		lead.setFirstName(createRefferalRequest.getFirstName());
265
		lead.setStatus(LeadStatus.followUp);
266
		lead.setColor("yellow");
267
		lead.setCreatedTimestamp(LocalDateTime.now());
268
		lead.setUpdatedTimestamp(LocalDateTime.now());
269
		leadRepository.persist(lead);
270
 
271
		return responseSender.ok(true);
272
 
273
	}
274
 
25952 tejbeer 275
	@RequestMapping(value = "/getPartnersList", method = RequestMethod.GET)
276
	@ApiImplicitParams({
277
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
278
	public ResponseEntity<?> getPartners(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId)
279
			throws ProfitMandiBusinessException {
280
 
25973 tejbeer 281
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
25952 tejbeer 282
 
283
		Map<String, Set<String>> storeGuyMap = csService.getAuthUserPartnerEmailMapping();
284
 
285
		Set<String> emails = storeGuyMap.get(authUser.getEmailId());
286
		LOGGER.info("emails" + emails);
287
		List<User> users = userRepository.selectAllByEmailIds(new ArrayList<>(emails));
288
		List<Partner> partners = new ArrayList<>();
289
		for (User user : users) {
290
 
291
			UserAccount uc = userAccountRepository.selectSaholicByUserId(user.getId());
292
			com.spice.profitmandi.dao.entity.user.User userInfo = userUserRepository.selectById(uc.getAccountKey());
293
			CustomRetailer customRetailer = retailerService.getFofoRetailer(userInfo.getId());
294
 
295
			Partner partner = new Partner();
296
			partner.setBusinessName(customRetailer.getBusinessName());
297
			partner.setPartnerId(customRetailer.getPartnerId());
298
			partner.setCartId(customRetailer.getCartId());
299
			partner.setEmail(customRetailer.getEmail());
300
			partner.setGstNumber(customRetailer.getGstNumber());
301
			partner.setDisplayName(customRetailer.getDisplayName());
302
			partner.setCity(customRetailer.getAddress().getCity());
303
			partner.setUserId(user.getId());
304
			partners.add(partner);
305
		}
306
		LOGGER.info("partners" + partners);
307
		return responseSender.ok(partners);
308
	}
309
 
310
	@RequestMapping(value = "/franchise-first-visit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
311
	@ApiImplicitParams({
312
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
313
	public ResponseEntity<?> FranchiseFirstVisit(HttpServletRequest request,
314
			@RequestBody CreateFranchiseeRequest createFranchiseeRequest) throws Exception {
315
 
316
		FranchiseeVisit franchiseeVisit = new FranchiseeVisit();
317
		franchiseeVisit.setFofoId(createFranchiseeRequest.getFofoId());
318
		CustomRetailer customRetailer = retailerService.getFofoRetailer(createFranchiseeRequest.getFofoId());
319
 
320
		franchiseeVisit.setPartnerName(customRetailer.getBusinessName());
321
		franchiseeVisit.setAgenda(createFranchiseeRequest.getAgenda());
322
		franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
323
		franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
324
		franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
325
		franchiseeVisit.setSchelduleTimestamp(createFranchiseeRequest.getFirstSchelduleTimestamp());
326
		// change
25973 tejbeer 327
		AuthUser authUser = authRepository.selectByGmailId(createFranchiseeRequest.getCreatedBy());
25952 tejbeer 328
 
329
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
330
		franchiseeVisit.setCreatedBy(authUserName);
331
		franchiseeVisit.setAuthId(authUser.getId());
332
 
333
		franchiseeVisitRepository.persist(franchiseeVisit);
334
 
335
		return responseSender.ok(true);
336
	}
337
 
338
	@RequestMapping(value = "/franchise-visit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
339
	@ApiImplicitParams({
340
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
341
	public ResponseEntity<?> FranchiseVisit(HttpServletRequest request,
342
			@RequestBody CreateFranchiseeRequest createFranchiseeRequest) throws Exception {
343
 
344
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(createFranchiseeRequest.getId());
345
		franchiseeVisit.setFofoId(createFranchiseeRequest.getFofoId());
346
		CustomRetailer customRetailer = retailerService.getFofoRetailer(createFranchiseeRequest.getFofoId());
347
 
348
		franchiseeVisit.setPartnerName(customRetailer.getBusinessName());
349
		franchiseeVisit.setAgenda(createFranchiseeRequest.getAgenda());
350
		franchiseeVisit.setPartnerRemark(createFranchiseeRequest.getPartnerRemark());
351
		franchiseeVisit.setOutsideVisibity(createFranchiseeRequest.getOutsideVisibity());
352
		franchiseeVisit.setInstoreVisibility(createFranchiseeRequest.getInstoreVisibility());
353
		franchiseeVisit.setOutsideStock(createFranchiseeRequest.getOutsideStock());
354
		franchiseeVisit.setSystemKnowledge(createFranchiseeRequest.getSystemKnowledge());
355
		franchiseeVisit.setWorkingDevice(createFranchiseeRequest.getWorkingDevice());
356
		franchiseeVisit.setWorkingPrinter(createFranchiseeRequest.getWorkingPrinter());
357
		franchiseeVisit.setCarryBags(createFranchiseeRequest.getCarryBags());
358
		franchiseeVisit.setSmartdukaanTshirt(createFranchiseeRequest.getSmartdukaanTshirt());
359
		franchiseeVisit.setLatestDummies(createFranchiseeRequest.getLatestDummies());
360
		franchiseeVisit.setInvestment(createFranchiseeRequest.getInvestment());
361
		franchiseeVisit.setMtd(createFranchiseeRequest.getMtd());
362
		franchiseeVisit.setHygiene(createFranchiseeRequest.getHygiene());
363
		franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
364
		franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
365
		if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
366
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
367
		} else {
368
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
369
		}
370
 
371
		// AuthUser authUser =
372
		// authRepository.selectByGmailId(createFranchiseeRequest.getCreatedBy());
373
		// change
25973 tejbeer 374
		AuthUser authUser = authRepository.selectByGmailId(createFranchiseeRequest.getCreatedBy());
25952 tejbeer 375
 
376
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
377
		franchiseeVisit.setCreatedBy(authUserName);
378
		franchiseeVisit.setAuthId(authUser.getId());
379
 
380
		franchiseeVisitRepository.persist(franchiseeVisit);
381
 
382
		FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
383
		franchiseeActivity.setAction(createFranchiseeRequest.getAction());
384
		franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
385
		franchiseeActivity.setResolution(createFranchiseeRequest.getResolution());
386
		if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
387
			franchiseeActivity.setSchelduleTimestamp(createFranchiseeRequest.getSchelduleTimestamp());
388
		} else {
389
			franchiseeActivity.setSchelduleTimestamp(null);
390
		}
391
		franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
392
		franchiseeActivityRepository.persist(franchiseeActivity);
393
 
394
		franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
395
		return responseSender.ok(true);
396
	}
397
 
398
	@RequestMapping(value = "/getFranchiseVisit", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
399
	@ApiImplicitParams({
400
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
401
	public ResponseEntity<?> getFranchiseVisit(HttpServletRequest request,
402
			@RequestParam(name = "gmailId") String gmailId, @RequestParam(name = "status") FranchiseeVisitStatus status,
403
			@RequestParam(name = "offset", defaultValue = "0") int offset,
404
			@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
25973 tejbeer 405
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
25952 tejbeer 406
 
407
		List<FranchiseeVisit> franchiseeVisits = franchiseeVisitRepository.selectByAuthIdAndStatus(authUser.getId(),
408
				status, offset, limit);
409
 
410
		for (FranchiseeVisit fv : franchiseeVisits) {
411
			if (fv.getFranchiseActivityId() != 0) {
412
				FranchiseeActivity fA = franchiseeActivityRepository.selectById(fv.getFranchiseActivityId());
413
				fv.setFranchiseeActivity(fA);
414
			}
415
		}
416
 
417
		return responseSender.ok(franchiseeVisits);
418
 
419
	}
420
 
421
	@RequestMapping(value = "/getFranchiseActivity", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
422
	@ApiImplicitParams({
423
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
424
	public ResponseEntity<?> getFranchiseActivity(HttpServletRequest request, @RequestParam(name = "id") int id)
425
			throws ProfitMandiBusinessException {
426
 
427
		List<FranchiseeActivity> franchiseeActivities = franchiseeActivityRepository.selectByFranchiseeVisitId(id);
428
 
429
		return responseSender.ok(franchiseeActivities);
430
 
431
	}
432
 
433
	@RequestMapping(value = "/getFranchiseeInfo", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
434
	@ApiImplicitParams({
435
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
436
	public ResponseEntity<?> getFranchiseeInfo(HttpServletRequest request, @RequestParam(name = "id") int id)
437
			throws ProfitMandiBusinessException {
438
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
439
 
440
		return responseSender.ok(franchiseeVisit);
441
 
442
	}
443
 
444
	@RequestMapping(value = "/franchise-visit-update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
445
	@ApiImplicitParams({
446
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
447
	public ResponseEntity<?> franchiseVisitUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
448
			@RequestParam(name = "action") FranchiseeActivityStatus action,
449
			@RequestParam(name = "resolution") String resolution,
450
			@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp)
451
			throws ProfitMandiBusinessException {
452
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
453
 
454
		FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
455
 
456
		if (action == FranchiseeActivityStatus.FOLLOWUP) {
457
			franchiseeActivity.setResolution(resolution);
458
			franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
459
			franchiseeActivity.setAction(action);
460
			franchiseeActivity.setSchelduleTimestamp(schelduleTimestamp);
461
			franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
462
			franchiseeActivityRepository.persist(franchiseeActivity);
463
			franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
464
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
465
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
466
			franchiseeVisitRepository.persist(franchiseeVisit);
467
 
468
		} else {
469
			franchiseeActivity.setResolution(resolution);
470
			franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
471
			franchiseeActivity.setAction(action);
472
			franchiseeActivity.setSchelduleTimestamp(null);
473
			franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
474
			franchiseeActivityRepository.persist(franchiseeActivity);
475
			franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
476
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
477
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
478
			franchiseeVisitRepository.persist(franchiseeVisit);
479
 
480
		}
481
 
482
		return responseSender.ok(true);
483
 
484
	}
28935 tejbeer 485
 
486
	@RequestMapping(value = "/onBoardingTimelineStatus", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
487
	@ApiImplicitParams({
488
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
489
	public ResponseEntity<?> onBoardingTimelineStatus(HttpServletRequest request, Model model)
490
			throws ProfitMandiBusinessException {
491
		int userId = (int) request.getAttribute("userId");
492
		UserCart uc = userAccountRepository.getUserCart(userId);
493
		FofoStore fs = fofoStoreRepository.selectByRetailerId(uc.getUserId());
494
		PartnerOnBoardingPanel partnerOnBoardingPanel = partnerOnBoardingPanelRepository.selectByCode(fs.getCode());
495
		Map<StoreTimeline, OnBoardingTimelineModel> timelineStatus = null;
496
		LOGGER.info("partnerOnBoardingPanel" + partnerOnBoardingPanel);
497
		if (partnerOnBoardingPanel != null) {
498
 
499
			timelineStatus = storeTimelineTatService.getTimeline(partnerOnBoardingPanel.getId());
500
		}
501
		List<OnBoardingTimelineModel> onBoardingModel = new ArrayList<>();
502
		if (timelineStatus != null) {
503
			onBoardingModel = timelineStatus.values().stream().skip(2).map(x -> x).collect(Collectors.toList());
504
		}
505
		return responseSender.ok(onBoardingModel);
506
 
507
	}
28982 tejbeer 508
 
509
	@RequestMapping(value = "/onBoardingTimelineVisibility", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
510
	@ApiImplicitParams({
511
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
512
	public ResponseEntity<?> onBoardingTimelineVisibility(HttpServletRequest request, Model model)
513
			throws ProfitMandiBusinessException {
514
		int userId = (int) request.getAttribute("userId");
515
		UserCart uc = userAccountRepository.getUserCart(userId);
516
 
517
		FofoStore fs = fofoStoreRepository.selectByRetailerId(uc.getUserId());
518
		PartnerOnBoardingPanel partnerOnBoardingPanel = partnerOnBoardingPanelRepository.selectByCode(fs.getCode());
519
		boolean status = true;
520
		if (partnerOnBoardingPanel != null) {
521
 
522
			status = storeTimelineTatService.getTimelineCompleted(partnerOnBoardingPanel.getId());
523
		}
524
 
525
		return responseSender.ok(status);
526
 
527
	}
25899 tejbeer 528
}