Subversion Repositories SmartDukaan

Rev

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