Subversion Repositories SmartDukaan

Rev

Rev 29331 | Rev 29446 | 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
 
29434 amit.gupta 3
import java.time.LocalDate;
25899 tejbeer 4
import java.time.LocalDateTime;
25952 tejbeer 5
import java.util.ArrayList;
29434 amit.gupta 6
import java.util.Arrays;
25899 tejbeer 7
import java.util.List;
25952 tejbeer 8
import java.util.Map;
9
import java.util.Set;
28935 tejbeer 10
import java.util.stream.Collectors;
25899 tejbeer 11
 
12
import javax.servlet.http.HttpServletRequest;
13
 
14
import org.apache.logging.log4j.LogManager;
15
import org.apache.logging.log4j.Logger;
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.format.annotation.DateTimeFormat;
18
import org.springframework.http.MediaType;
19
import org.springframework.http.ResponseEntity;
20
import org.springframework.stereotype.Controller;
21
import org.springframework.transaction.annotation.Transactional;
28935 tejbeer 22
import org.springframework.ui.Model;
25899 tejbeer 23
import org.springframework.web.bind.annotation.RequestBody;
24
import org.springframework.web.bind.annotation.RequestMapping;
25
import org.springframework.web.bind.annotation.RequestMethod;
26
import org.springframework.web.bind.annotation.RequestParam;
27
 
28
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
25952 tejbeer 29
import com.spice.profitmandi.common.model.CustomRetailer;
27117 tejbeer 30
import com.spice.profitmandi.common.model.ProfitMandiConstants;
25899 tejbeer 31
import com.spice.profitmandi.common.web.util.ResponseSender;
32
import com.spice.profitmandi.dao.entity.auth.AuthUser;
33
import com.spice.profitmandi.dao.entity.dtr.User;
25952 tejbeer 34
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
28935 tejbeer 35
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
36
import com.spice.profitmandi.dao.entity.fofo.PartnerOnBoardingPanel;
25952 tejbeer 37
import com.spice.profitmandi.dao.entity.user.FranchiseeActivity;
38
import com.spice.profitmandi.dao.entity.user.FranchiseeVisit;
25899 tejbeer 39
import com.spice.profitmandi.dao.entity.user.Lead;
40
import com.spice.profitmandi.dao.entity.user.LeadActivity;
25952 tejbeer 41
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeActivityStatus;
42
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeVisitStatus;
25899 tejbeer 43
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
28935 tejbeer 44
import com.spice.profitmandi.dao.enumuration.dtr.StoreTimeline;
25979 tejbeer 45
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
28935 tejbeer 46
import com.spice.profitmandi.dao.model.OnBoardingTimelineModel;
47
import com.spice.profitmandi.dao.model.UserCart;
25899 tejbeer 48
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
25952 tejbeer 49
import com.spice.profitmandi.dao.repository.cs.CsService;
28935 tejbeer 50
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
25952 tejbeer 51
import com.spice.profitmandi.dao.repository.dtr.FranchiseeActivityRepository;
52
import com.spice.profitmandi.dao.repository.dtr.FranchiseeVisitRepository;
25899 tejbeer 53
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
54
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
28935 tejbeer 55
import com.spice.profitmandi.dao.repository.dtr.PartnerOnBoardingPanelRepository;
25952 tejbeer 56
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
25899 tejbeer 57
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
25952 tejbeer 58
import com.spice.profitmandi.service.user.RetailerService;
28935 tejbeer 59
import com.spice.profitmandi.service.user.StoreTimelineTatService;
25952 tejbeer 60
import com.spice.profitmandi.web.req.CreateFranchiseeRequest;
61
import com.spice.profitmandi.web.res.Partner;
25899 tejbeer 62
 
63
import io.swagger.annotations.ApiImplicitParam;
64
import io.swagger.annotations.ApiImplicitParams;
65
 
66
@Controller
67
@Transactional(rollbackFor = Throwable.class)
68
public class LeadController {
69
	private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
70
	@Autowired
71
	private ResponseSender<?> responseSender;
72
 
73
	@Autowired
74
	private AuthRepository authRepository;
75
 
76
	@Autowired
77
	private LeadRepository leadRepository;
78
 
79
	@Autowired
25952 tejbeer 80
	private CsService csService;
81
 
82
	@Autowired
83
	private UserRepository userRepository;
84
 
85
	@Autowired
86
	private UserAccountRepository userAccountRepository;
87
 
88
	@Autowired
89
	private com.spice.profitmandi.dao.repository.user.UserRepository userUserRepository;
90
 
91
	@Autowired
92
	private RetailerService retailerService;
93
 
94
	@Autowired
25899 tejbeer 95
	private LeadActivityRepository leadActivityRepository;
96
 
25952 tejbeer 97
	@Autowired
98
	private FranchiseeVisitRepository franchiseeVisitRepository;
99
 
100
	@Autowired
101
	private FranchiseeActivityRepository franchiseeActivityRepository;
102
 
28935 tejbeer 103
	@Autowired
104
	private PartnerOnBoardingPanelRepository partnerOnBoardingPanelRepository;
105
 
106
	@Autowired
107
	private FofoStoreRepository fofoStoreRepository;
108
 
109
	@Autowired
110
	private StoreTimelineTatService storeTimelineTatService;
111
 
25899 tejbeer 112
	@RequestMapping(value = "/lead", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
113
	@ApiImplicitParams({
114
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
115
	public ResponseEntity<?> LeadUser(HttpServletRequest request,
116
			@RequestBody CreateRefferalRequest createRefferalRequest) throws Exception {
117
		Lead lead = new Lead();
118
		lead.setFirstName(createRefferalRequest.getFirstName());
119
		lead.setLastName(createRefferalRequest.getLastName());
120
		lead.setLeadMobile(createRefferalRequest.getMobile());
121
		lead.setState(createRefferalRequest.getState());
122
		lead.setCity(createRefferalRequest.getCity());
123
		lead.setAddress(createRefferalRequest.getAddress());
124
		lead.setCreatedTimestamp(LocalDateTime.now());
125
		lead.setUpdatedTimestamp(LocalDateTime.now());
126
		lead.setStatus(createRefferalRequest.getStatus());
25979 tejbeer 127
		lead.setSource(createRefferalRequest.getSource());
28201 tejbeer 128
		lead.setNotinterestedReason(createRefferalRequest.getReason());
26244 tejbeer 129
		if (createRefferalRequest.getColorCheck() == true) {
130
			lead.setColor("Green");
131
		} else {
132
			lead.setColor("Yellow");
133
		}
25900 amit.gupta 134
		AuthUser authUser = authRepository.selectByGmailId(createRefferalRequest.getReffereeEmail());
135
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
136
		lead.setCreatedBy(authUserName);
137
		lead.setAuthId(authUser.getId());
25981 tejbeer 138
		lead.setAssignTo(authUser.getId());
25899 tejbeer 139
 
140
		leadRepository.persist(lead);
141
		LeadActivity leadActivity = new LeadActivity();
142
		leadActivity.setLeadId(lead.getId());
143
		leadActivity.setRemark(createRefferalRequest.getRemark());
144
 
145
		if (createRefferalRequest.getStatus().equals(LeadStatus.followUp)) {
146
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
26958 tejbeer 147
			leadActivity.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
27025 tejbeer 148
			lead.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
25899 tejbeer 149
		} else {
150
			leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 151
			leadActivity.setClosureTimestamp(null);
27025 tejbeer 152
			lead.setClosureTimestamp(null);
25899 tejbeer 153
		}
154
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
155
		leadActivityRepository.persist(leadActivity);
156
 
157
		return responseSender.ok(true);
158
	}
159
 
160
	@RequestMapping(value = "/lead-description", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
161
	@ApiImplicitParams({
162
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
163
	public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId,
29331 tejbeer 164
			@RequestParam(name = "status") LeadStatus status) throws ProfitMandiBusinessException {
25899 tejbeer 165
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
29434 amit.gupta 166
		List<Lead> leads = null;
167
		if (status.equals(LeadStatus.followUp)) {
168
			leads = leadRepository.selectLeadsScheduledBetweenDate(Arrays.asList(authUser.getId()), LocalDate.now().atStartOfDay().minusDays(30), LocalDate.now().atStartOfDay());
169
		} else {
170
			leads = leadRepository.selectByAssignAuthIdAndStatus(authUser.getId(), status);
171
		}
25979 tejbeer 172
 
25899 tejbeer 173
		return responseSender.ok(leads);
174
 
175
	}
176
 
177
	@RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
178
	@ApiImplicitParams({
179
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
180
	public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id)
181
			throws ProfitMandiBusinessException {
182
 
183
		List<LeadActivity> leadActivities = leadActivityRepository.selectBYLeadId(id);
29317 tejbeer 184
		Lead lead = leadRepository.selectById(id);
185
		lead.setLeadActivities(leadActivities);
186
		return responseSender.ok(lead);
25899 tejbeer 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")) {
29276 amit.gupta 250
			lead.setAssignTo(53);
27117 tejbeer 251
		} else if (lead.getState().equals("Haryana")) {
29276 amit.gupta 252
			lead.setAssignTo(53);
27117 tejbeer 253
		} else if (lead.getState().equals("Delhi")) {
29276 amit.gupta 254
			lead.setAssignTo(53);
27117 tejbeer 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
 
28983 tejbeer 525
		LOGGER.info("status" + status);
526
 
28982 tejbeer 527
		return responseSender.ok(status);
528
 
529
	}
25899 tejbeer 530
}