Subversion Repositories SmartDukaan

Rev

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