Subversion Repositories SmartDukaan

Rev

Rev 30433 | Rev 30452 | 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
 
30416 tejbeer 3
import java.time.LocalDate;
4
import java.time.LocalDateTime;
30433 tejbeer 5
import java.time.format.DateTimeFormatter;
30416 tejbeer 6
import java.util.ArrayList;
7
import java.util.Arrays;
8
import java.util.Comparator;
9
import java.util.HashMap;
10
import java.util.List;
11
import java.util.Map;
12
import java.util.Map.Entry;
13
import java.util.Set;
14
import java.util.stream.Collectors;
15
 
16
import javax.servlet.http.HttpServletRequest;
30433 tejbeer 17
import javax.servlet.http.HttpServletResponse;
30416 tejbeer 18
 
30433 tejbeer 19
import org.apache.commons.csv.CSVRecord;
30416 tejbeer 20
import org.apache.logging.log4j.LogManager;
21
import org.apache.logging.log4j.Logger;
22
import org.springframework.beans.factory.annotation.Autowired;
23
import org.springframework.format.annotation.DateTimeFormat;
24
import org.springframework.http.MediaType;
25
import org.springframework.http.ResponseEntity;
26
import org.springframework.stereotype.Controller;
27
import org.springframework.transaction.annotation.Transactional;
28
import org.springframework.ui.Model;
29
import org.springframework.web.bind.annotation.RequestBody;
30
import org.springframework.web.bind.annotation.RequestMapping;
31
import org.springframework.web.bind.annotation.RequestMethod;
32
import org.springframework.web.bind.annotation.RequestParam;
30433 tejbeer 33
import org.springframework.web.bind.annotation.RequestPart;
34
import org.springframework.web.multipart.MultipartFile;
30416 tejbeer 35
 
25899 tejbeer 36
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
25952 tejbeer 37
import com.spice.profitmandi.common.model.CustomRetailer;
27117 tejbeer 38
import com.spice.profitmandi.common.model.ProfitMandiConstants;
30433 tejbeer 39
import com.spice.profitmandi.common.util.FileUtil;
25899 tejbeer 40
import com.spice.profitmandi.common.web.util.ResponseSender;
41
import com.spice.profitmandi.dao.entity.auth.AuthUser;
30077 tejbeer 42
import com.spice.profitmandi.dao.entity.auth.PartnerCollectionPlan;
30416 tejbeer 43
import com.spice.profitmandi.dao.entity.auth.PartnerCollectionRemark;
30077 tejbeer 44
import com.spice.profitmandi.dao.entity.auth.PartnerSecondaryPlan;
30416 tejbeer 45
import com.spice.profitmandi.dao.entity.cs.Ticket;
46
import com.spice.profitmandi.dao.entity.cs.TicketCategory;
47
import com.spice.profitmandi.dao.entity.cs.TicketSubCategory;
25899 tejbeer 48
import com.spice.profitmandi.dao.entity.dtr.User;
25952 tejbeer 49
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
28935 tejbeer 50
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
30087 tejbeer 51
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
28935 tejbeer 52
import com.spice.profitmandi.dao.entity.fofo.PartnerOnBoardingPanel;
25952 tejbeer 53
import com.spice.profitmandi.dao.entity.user.FranchiseeActivity;
54
import com.spice.profitmandi.dao.entity.user.FranchiseeVisit;
25899 tejbeer 55
import com.spice.profitmandi.dao.entity.user.Lead;
56
import com.spice.profitmandi.dao.entity.user.LeadActivity;
30416 tejbeer 57
import com.spice.profitmandi.dao.enumuration.auth.CollectionRemark;
25952 tejbeer 58
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeActivityStatus;
59
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeVisitStatus;
25899 tejbeer 60
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
28935 tejbeer 61
import com.spice.profitmandi.dao.enumuration.dtr.StoreTimeline;
30416 tejbeer 62
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
63
import com.spice.profitmandi.dao.model.OnBoardingTimelineModel;
64
import com.spice.profitmandi.dao.model.PartnerCollectionAchievementModel;
65
import com.spice.profitmandi.dao.model.PartnerCollectionPlanModel;
66
import com.spice.profitmandi.dao.model.PartnerCollectionRemarkModel;
67
import com.spice.profitmandi.dao.model.PartnerSecondaryPlanModel;
68
import com.spice.profitmandi.dao.model.PartnerTargetAchievementModel;
69
import com.spice.profitmandi.dao.model.TargetModel;
70
import com.spice.profitmandi.dao.model.TicketViewModel;
71
import com.spice.profitmandi.dao.model.UserCart;
25899 tejbeer 72
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
30104 tejbeer 73
import com.spice.profitmandi.dao.repository.auth.AuthUserPartnerMappingRepository;
30077 tejbeer 74
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionPlanRepository;
30416 tejbeer 75
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionRemarkRepository;
30077 tejbeer 76
import com.spice.profitmandi.dao.repository.auth.PartnerSecondaryPlanRepository;
25952 tejbeer 77
import com.spice.profitmandi.dao.repository.cs.CsService;
30077 tejbeer 78
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
30416 tejbeer 79
import com.spice.profitmandi.dao.repository.cs.TicketCategoryRepository;
80
import com.spice.profitmandi.dao.repository.cs.TicketRepository;
81
import com.spice.profitmandi.dao.repository.cs.TicketSubCategoryRepository;
82
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
83
import com.spice.profitmandi.dao.repository.dtr.FranchiseeActivityRepository;
84
import com.spice.profitmandi.dao.repository.dtr.FranchiseeVisitRepository;
85
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
86
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
87
import com.spice.profitmandi.dao.repository.dtr.PartnerOnBoardingPanelRepository;
88
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
89
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
30087 tejbeer 90
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
30077 tejbeer 91
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
92
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
30348 tejbeer 93
import com.spice.profitmandi.service.PartnerCollectionService;
25952 tejbeer 94
import com.spice.profitmandi.service.user.RetailerService;
28935 tejbeer 95
import com.spice.profitmandi.service.user.StoreTimelineTatService;
30433 tejbeer 96
 
25952 tejbeer 97
import com.spice.profitmandi.web.req.CreateFranchiseeRequest;
98
import com.spice.profitmandi.web.res.Partner;
30416 tejbeer 99
 
25899 tejbeer 100
import io.swagger.annotations.ApiImplicitParam;
101
import io.swagger.annotations.ApiImplicitParams;
102
 
103
@Controller
104
@Transactional(rollbackFor = Throwable.class)
105
public class LeadController {
106
	private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
107
	@Autowired
108
	private ResponseSender<?> responseSender;
109
 
110
	@Autowired
111
	private AuthRepository authRepository;
112
 
113
	@Autowired
114
	private LeadRepository leadRepository;
115
 
116
	@Autowired
25952 tejbeer 117
	private CsService csService;
118
 
119
	@Autowired
120
	private UserRepository userRepository;
121
 
122
	@Autowired
123
	private UserAccountRepository userAccountRepository;
124
 
125
	@Autowired
126
	private com.spice.profitmandi.dao.repository.user.UserRepository userUserRepository;
127
 
128
	@Autowired
129
	private RetailerService retailerService;
130
 
131
	@Autowired
25899 tejbeer 132
	private LeadActivityRepository leadActivityRepository;
133
 
25952 tejbeer 134
	@Autowired
135
	private FranchiseeVisitRepository franchiseeVisitRepository;
136
 
137
	@Autowired
138
	private FranchiseeActivityRepository franchiseeActivityRepository;
139
 
28935 tejbeer 140
	@Autowired
141
	private PartnerOnBoardingPanelRepository partnerOnBoardingPanelRepository;
142
 
143
	@Autowired
144
	private FofoStoreRepository fofoStoreRepository;
145
 
146
	@Autowired
147
	private StoreTimelineTatService storeTimelineTatService;
148
 
30348 tejbeer 149
	@Autowired
150
	private PartnerCollectionService partnerCollectionService;
151
 
30416 tejbeer 152
	@Autowired
153
	private TicketRepository ticketRepository;
154
 
155
	@Autowired
156
	private TicketCategoryRepository ticketCategoryRepository;
157
 
158
	@Autowired
159
	private TicketSubCategoryRepository ticketSubCategoryRepository;
160
 
161
	@Autowired
162
	private PartnerCollectionRemarkRepository partnerCollectionRemarkRepository;
163
 
25899 tejbeer 164
	@RequestMapping(value = "/lead", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
165
	@ApiImplicitParams({
30294 tejbeer 166
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25899 tejbeer 167
	public ResponseEntity<?> LeadUser(HttpServletRequest request,
30294 tejbeer 168
			@RequestBody CreateRefferalRequest createRefferalRequest) throws Exception {
25899 tejbeer 169
		Lead lead = new Lead();
170
		lead.setFirstName(createRefferalRequest.getFirstName());
171
		lead.setLastName(createRefferalRequest.getLastName());
172
		lead.setLeadMobile(createRefferalRequest.getMobile());
173
		lead.setState(createRefferalRequest.getState());
174
		lead.setCity(createRefferalRequest.getCity());
175
		lead.setAddress(createRefferalRequest.getAddress());
176
		lead.setCreatedTimestamp(LocalDateTime.now());
177
		lead.setUpdatedTimestamp(LocalDateTime.now());
178
		lead.setStatus(createRefferalRequest.getStatus());
25979 tejbeer 179
		lead.setSource(createRefferalRequest.getSource());
28201 tejbeer 180
		lead.setNotinterestedReason(createRefferalRequest.getReason());
26244 tejbeer 181
		if (createRefferalRequest.getColorCheck() == true) {
182
			lead.setColor("Green");
183
		} else {
184
			lead.setColor("Yellow");
185
		}
25900 amit.gupta 186
		AuthUser authUser = authRepository.selectByGmailId(createRefferalRequest.getReffereeEmail());
187
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
188
		lead.setCreatedBy(authUserName);
189
		lead.setAuthId(authUser.getId());
25981 tejbeer 190
		lead.setAssignTo(authUser.getId());
25899 tejbeer 191
 
192
		leadRepository.persist(lead);
193
		LeadActivity leadActivity = new LeadActivity();
194
		leadActivity.setLeadId(lead.getId());
195
		leadActivity.setRemark(createRefferalRequest.getRemark());
196
 
197
		if (createRefferalRequest.getStatus().equals(LeadStatus.followUp)) {
198
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
26958 tejbeer 199
			leadActivity.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
27025 tejbeer 200
			lead.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
25899 tejbeer 201
		} else {
202
			leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 203
			leadActivity.setClosureTimestamp(null);
27025 tejbeer 204
			lead.setClosureTimestamp(null);
25899 tejbeer 205
		}
206
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
207
		leadActivityRepository.persist(leadActivity);
208
 
209
		return responseSender.ok(true);
210
	}
211
 
212
	@RequestMapping(value = "/lead-description", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
213
	@ApiImplicitParams({
30294 tejbeer 214
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25899 tejbeer 215
	public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId,
30294 tejbeer 216
			@RequestParam(name = "status") LeadStatus status) throws ProfitMandiBusinessException {
25899 tejbeer 217
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
29434 amit.gupta 218
		List<Lead> leads = null;
30306 tejbeer 219
		LOGGER.info("emails" + status);
29434 amit.gupta 220
		if (status.equals(LeadStatus.followUp)) {
30306 tejbeer 221
 
222
			leads = leadRepository.selectLeadsScheduledBetweenDate(Arrays.asList(authUser.getId()), null, null);
223
			leads = leads.stream()
224
					.sorted(Comparator.comparing(Lead::getScheduledTimestamp,
225
							Comparator.nullsFirst(Comparator.reverseOrder())))
226
					.collect(Collectors
227
							.toList());/*
228
										 * Collections.sort(leads, (o1, o2) -> { if (o1.getScheduledTimestamp() != null
229
										 * && o2.getScheduledTimestamp() != null) { return
230
										 * o1.getScheduledTimestamp().isBefore(o2.getScheduledTimestamp()) ? -1 : 1; }
231
										 * else if (o1.getScheduledTimestamp() != null) { return 1; } else { return -1;
232
										 * } });
233
										 */
234
 
30294 tejbeer 235
		} else {
236
			leads = leadRepository.selectByAssignAuthIdAndStatus(authUser.getId(), status);
237
 
29434 amit.gupta 238
		}
25979 tejbeer 239
 
25899 tejbeer 240
		return responseSender.ok(leads);
241
 
242
	}
243
 
244
	@RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
245
	@ApiImplicitParams({
30294 tejbeer 246
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25899 tejbeer 247
	public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id)
248
			throws ProfitMandiBusinessException {
249
 
250
		List<LeadActivity> leadActivities = leadActivityRepository.selectBYLeadId(id);
29317 tejbeer 251
		Lead lead = leadRepository.selectById(id);
252
		lead.setLeadActivities(leadActivities);
253
		return responseSender.ok(lead);
25899 tejbeer 254
 
255
	}
256
 
25948 amit.gupta 257
	@RequestMapping(value = "/leadUpdate", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
25899 tejbeer 258
	@ApiImplicitParams({
30294 tejbeer 259
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25899 tejbeer 260
	public ResponseEntity<?> leadUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
30294 tejbeer 261
			@RequestParam(name = "status") LeadStatus status, @RequestParam(name = "colorCheck") Boolean colorCheck,
262
			@RequestParam(name = "remark") String remark, @RequestParam(name = "reason") String reason,
263
			@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp,
264
			@RequestParam(name = "closureTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime closureTimestamp)
25899 tejbeer 265
			throws ProfitMandiBusinessException {
266
 
267
		Lead lead = leadRepository.selectById(id);
268
 
269
		LeadActivity leadActivity = new LeadActivity();
26250 tejbeer 270
		lead.setStatus(status);
28201 tejbeer 271
		lead.setNotinterestedReason(reason);
26250 tejbeer 272
		leadActivity.setRemark(remark);
273
		leadActivity.setLeadId(id);
274
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
275
		leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 276
		leadActivity.setClosureTimestamp(null);
26250 tejbeer 277
		lead.setUpdatedTimestamp(LocalDateTime.now());
278
		if (colorCheck == true) {
279
			lead.setColor("Green");
280
		} else {
281
			lead.setColor("Yellow");
282
		}
283
		if (status == LeadStatus.followUp) {
25899 tejbeer 284
 
285
			leadActivity.setSchelduleTimestamp(schelduleTimestamp);
26958 tejbeer 286
			leadActivity.setClosureTimestamp(closureTimestamp);
27025 tejbeer 287
			lead.setClosureTimestamp(closureTimestamp);
26250 tejbeer 288
 
25899 tejbeer 289
		} else {
26250 tejbeer 290
 
25899 tejbeer 291
			leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 292
			leadActivity.setClosureTimestamp(null);
27025 tejbeer 293
			lead.setClosureTimestamp(null);
26244 tejbeer 294
 
25899 tejbeer 295
		}
26250 tejbeer 296
		leadActivityRepository.persist(leadActivity);
25899 tejbeer 297
		return responseSender.ok(true);
298
 
299
	}
25952 tejbeer 300
 
27117 tejbeer 301
	@RequestMapping(value = ProfitMandiConstants.URL_NEW_LEAD, method = RequestMethod.POST)
302
	public ResponseEntity<?> newLead(HttpServletRequest request,
30294 tejbeer 303
			@RequestBody CreateRefferalRequest createRefferalRequest) throws ProfitMandiBusinessException {
27117 tejbeer 304
		LOGGER.info("requested url : " + request.getRequestURL().toString());
305
		Lead lead = new Lead();
306
		lead.setAddress(createRefferalRequest.getCity());
27625 tejbeer 307
		Long.parseLong(createRefferalRequest.getMobile());
28201 tejbeer 308
		if (createRefferalRequest.getMobile().length() != 10) {
309
			throw new ProfitMandiBusinessException("Mobile Number", createRefferalRequest.getMobile(),
310
					"Number should be of 10 digits");
27597 amit.gupta 311
		}
27117 tejbeer 312
		lead.setLeadMobile(createRefferalRequest.getMobile());
313
		lead.setCity(createRefferalRequest.getCity());
314
		lead.setState(createRefferalRequest.getState());
315
		lead.setLastName(createRefferalRequest.getLastName());
316
		if (lead.getState().equals("Uttar Pradesh")) {
29276 amit.gupta 317
			lead.setAssignTo(53);
27117 tejbeer 318
		} else if (lead.getState().equals("Haryana")) {
29276 amit.gupta 319
			lead.setAssignTo(53);
27117 tejbeer 320
		} else if (lead.getState().equals("Delhi")) {
29276 amit.gupta 321
			lead.setAssignTo(53);
27117 tejbeer 322
		} else {
28201 tejbeer 323
			// Assign to sm
27992 amit.gupta 324
			lead.setAssignTo(53);
28201 tejbeer 325
			// Assign to neha
326
			// lead.setAssignTo(1);
27117 tejbeer 327
		}
328
		lead.setAuthId(lead.getAssignTo());
329
		lead.setCreatedBy("daily-sync");
330
		lead.setSource("SD-WEB");
331
		lead.setFirstName(createRefferalRequest.getFirstName());
332
		lead.setStatus(LeadStatus.followUp);
333
		lead.setColor("yellow");
334
		lead.setCreatedTimestamp(LocalDateTime.now());
335
		lead.setUpdatedTimestamp(LocalDateTime.now());
336
		leadRepository.persist(lead);
337
 
338
		return responseSender.ok(true);
339
 
340
	}
341
 
25952 tejbeer 342
	@RequestMapping(value = "/getPartnersList", method = RequestMethod.GET)
343
	@ApiImplicitParams({
30294 tejbeer 344
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25952 tejbeer 345
	public ResponseEntity<?> getPartners(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId)
346
			throws ProfitMandiBusinessException {
347
 
25973 tejbeer 348
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
25952 tejbeer 349
 
350
		Map<String, Set<String>> storeGuyMap = csService.getAuthUserPartnerEmailMapping();
351
 
30288 tejbeer 352
		Set<String> emails = storeGuyMap.get(authUser.getEmailId());
25952 tejbeer 353
		LOGGER.info("emails" + emails);
354
		List<User> users = userRepository.selectAllByEmailIds(new ArrayList<>(emails));
355
		List<Partner> partners = new ArrayList<>();
356
		for (User user : users) {
357
 
358
			UserAccount uc = userAccountRepository.selectSaholicByUserId(user.getId());
359
			com.spice.profitmandi.dao.entity.user.User userInfo = userUserRepository.selectById(uc.getAccountKey());
360
			CustomRetailer customRetailer = retailerService.getFofoRetailer(userInfo.getId());
361
 
362
			Partner partner = new Partner();
363
			partner.setBusinessName(customRetailer.getBusinessName());
364
			partner.setPartnerId(customRetailer.getPartnerId());
365
			partner.setCartId(customRetailer.getCartId());
366
			partner.setEmail(customRetailer.getEmail());
367
			partner.setGstNumber(customRetailer.getGstNumber());
368
			partner.setDisplayName(customRetailer.getDisplayName());
369
			partner.setCity(customRetailer.getAddress().getCity());
370
			partner.setUserId(user.getId());
371
			partners.add(partner);
372
		}
373
		LOGGER.info("partners" + partners);
374
		return responseSender.ok(partners);
375
	}
376
 
377
	@RequestMapping(value = "/franchise-first-visit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
378
	@ApiImplicitParams({
30294 tejbeer 379
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25952 tejbeer 380
	public ResponseEntity<?> FranchiseFirstVisit(HttpServletRequest request,
30294 tejbeer 381
			@RequestBody CreateFranchiseeRequest createFranchiseeRequest) throws Exception {
25952 tejbeer 382
 
383
		FranchiseeVisit franchiseeVisit = new FranchiseeVisit();
384
		franchiseeVisit.setFofoId(createFranchiseeRequest.getFofoId());
385
		CustomRetailer customRetailer = retailerService.getFofoRetailer(createFranchiseeRequest.getFofoId());
386
 
387
		franchiseeVisit.setPartnerName(customRetailer.getBusinessName());
388
		franchiseeVisit.setAgenda(createFranchiseeRequest.getAgenda());
389
		franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
390
		franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
391
		franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
392
		franchiseeVisit.setSchelduleTimestamp(createFranchiseeRequest.getFirstSchelduleTimestamp());
393
		// change
25973 tejbeer 394
		AuthUser authUser = authRepository.selectByGmailId(createFranchiseeRequest.getCreatedBy());
25952 tejbeer 395
 
396
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
397
		franchiseeVisit.setCreatedBy(authUserName);
398
		franchiseeVisit.setAuthId(authUser.getId());
399
 
400
		franchiseeVisitRepository.persist(franchiseeVisit);
401
 
402
		return responseSender.ok(true);
403
	}
404
 
405
	@RequestMapping(value = "/franchise-visit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
406
	@ApiImplicitParams({
30294 tejbeer 407
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25952 tejbeer 408
	public ResponseEntity<?> FranchiseVisit(HttpServletRequest request,
30294 tejbeer 409
			@RequestBody CreateFranchiseeRequest createFranchiseeRequest) throws Exception {
25952 tejbeer 410
 
411
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(createFranchiseeRequest.getId());
412
		franchiseeVisit.setFofoId(createFranchiseeRequest.getFofoId());
413
		CustomRetailer customRetailer = retailerService.getFofoRetailer(createFranchiseeRequest.getFofoId());
414
 
415
		franchiseeVisit.setPartnerName(customRetailer.getBusinessName());
416
		franchiseeVisit.setAgenda(createFranchiseeRequest.getAgenda());
417
		franchiseeVisit.setPartnerRemark(createFranchiseeRequest.getPartnerRemark());
418
		franchiseeVisit.setOutsideVisibity(createFranchiseeRequest.getOutsideVisibity());
419
		franchiseeVisit.setInstoreVisibility(createFranchiseeRequest.getInstoreVisibility());
420
		franchiseeVisit.setOutsideStock(createFranchiseeRequest.getOutsideStock());
421
		franchiseeVisit.setSystemKnowledge(createFranchiseeRequest.getSystemKnowledge());
422
		franchiseeVisit.setWorkingDevice(createFranchiseeRequest.getWorkingDevice());
423
		franchiseeVisit.setWorkingPrinter(createFranchiseeRequest.getWorkingPrinter());
424
		franchiseeVisit.setCarryBags(createFranchiseeRequest.getCarryBags());
425
		franchiseeVisit.setSmartdukaanTshirt(createFranchiseeRequest.getSmartdukaanTshirt());
426
		franchiseeVisit.setLatestDummies(createFranchiseeRequest.getLatestDummies());
427
		franchiseeVisit.setInvestment(createFranchiseeRequest.getInvestment());
428
		franchiseeVisit.setMtd(createFranchiseeRequest.getMtd());
429
		franchiseeVisit.setHygiene(createFranchiseeRequest.getHygiene());
430
		franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
431
		franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
432
		if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
433
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
434
		} else {
435
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
436
		}
437
 
438
		// AuthUser authUser =
439
		// authRepository.selectByGmailId(createFranchiseeRequest.getCreatedBy());
440
		// change
25973 tejbeer 441
		AuthUser authUser = authRepository.selectByGmailId(createFranchiseeRequest.getCreatedBy());
25952 tejbeer 442
 
443
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
444
		franchiseeVisit.setCreatedBy(authUserName);
445
		franchiseeVisit.setAuthId(authUser.getId());
446
 
447
		franchiseeVisitRepository.persist(franchiseeVisit);
448
 
449
		FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
450
		franchiseeActivity.setAction(createFranchiseeRequest.getAction());
451
		franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
452
		franchiseeActivity.setResolution(createFranchiseeRequest.getResolution());
453
		if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
454
			franchiseeActivity.setSchelduleTimestamp(createFranchiseeRequest.getSchelduleTimestamp());
455
		} else {
456
			franchiseeActivity.setSchelduleTimestamp(null);
457
		}
458
		franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
459
		franchiseeActivityRepository.persist(franchiseeActivity);
460
 
461
		franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
462
		return responseSender.ok(true);
463
	}
464
 
465
	@RequestMapping(value = "/getFranchiseVisit", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
466
	@ApiImplicitParams({
30294 tejbeer 467
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25952 tejbeer 468
	public ResponseEntity<?> getFranchiseVisit(HttpServletRequest request,
30294 tejbeer 469
			@RequestParam(name = "gmailId") String gmailId, @RequestParam(name = "status") FranchiseeVisitStatus status,
470
			@RequestParam(name = "offset", defaultValue = "0") int offset,
471
			@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
25973 tejbeer 472
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
25952 tejbeer 473
 
474
		List<FranchiseeVisit> franchiseeVisits = franchiseeVisitRepository.selectByAuthIdAndStatus(authUser.getId(),
475
				status, offset, limit);
476
 
477
		for (FranchiseeVisit fv : franchiseeVisits) {
478
			if (fv.getFranchiseActivityId() != 0) {
479
				FranchiseeActivity fA = franchiseeActivityRepository.selectById(fv.getFranchiseActivityId());
480
				fv.setFranchiseeActivity(fA);
481
			}
482
		}
483
 
484
		return responseSender.ok(franchiseeVisits);
485
 
486
	}
487
 
488
	@RequestMapping(value = "/getFranchiseActivity", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
489
	@ApiImplicitParams({
30294 tejbeer 490
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25952 tejbeer 491
	public ResponseEntity<?> getFranchiseActivity(HttpServletRequest request, @RequestParam(name = "id") int id)
492
			throws ProfitMandiBusinessException {
493
 
494
		List<FranchiseeActivity> franchiseeActivities = franchiseeActivityRepository.selectByFranchiseeVisitId(id);
495
 
496
		return responseSender.ok(franchiseeActivities);
497
 
498
	}
499
 
500
	@RequestMapping(value = "/getFranchiseeInfo", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
501
	@ApiImplicitParams({
30294 tejbeer 502
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25952 tejbeer 503
	public ResponseEntity<?> getFranchiseeInfo(HttpServletRequest request, @RequestParam(name = "id") int id)
504
			throws ProfitMandiBusinessException {
505
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
506
 
507
		return responseSender.ok(franchiseeVisit);
508
 
509
	}
510
 
511
	@RequestMapping(value = "/franchise-visit-update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
512
	@ApiImplicitParams({
30294 tejbeer 513
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
25952 tejbeer 514
	public ResponseEntity<?> franchiseVisitUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
30294 tejbeer 515
			@RequestParam(name = "action") FranchiseeActivityStatus action,
516
			@RequestParam(name = "resolution") String resolution,
517
			@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp)
25952 tejbeer 518
			throws ProfitMandiBusinessException {
519
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
520
 
521
		FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
522
 
523
		if (action == FranchiseeActivityStatus.FOLLOWUP) {
524
			franchiseeActivity.setResolution(resolution);
525
			franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
526
			franchiseeActivity.setAction(action);
527
			franchiseeActivity.setSchelduleTimestamp(schelduleTimestamp);
528
			franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
529
			franchiseeActivityRepository.persist(franchiseeActivity);
530
			franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
531
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
532
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
533
			franchiseeVisitRepository.persist(franchiseeVisit);
534
 
535
		} else {
536
			franchiseeActivity.setResolution(resolution);
537
			franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
538
			franchiseeActivity.setAction(action);
539
			franchiseeActivity.setSchelduleTimestamp(null);
540
			franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
541
			franchiseeActivityRepository.persist(franchiseeActivity);
542
			franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
543
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
544
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
545
			franchiseeVisitRepository.persist(franchiseeVisit);
546
 
547
		}
548
 
549
		return responseSender.ok(true);
550
 
551
	}
28935 tejbeer 552
 
553
	@RequestMapping(value = "/onBoardingTimelineStatus", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
554
	@ApiImplicitParams({
30294 tejbeer 555
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
28935 tejbeer 556
	public ResponseEntity<?> onBoardingTimelineStatus(HttpServletRequest request, Model model)
557
			throws ProfitMandiBusinessException {
558
		int userId = (int) request.getAttribute("userId");
559
		UserCart uc = userAccountRepository.getUserCart(userId);
560
		FofoStore fs = fofoStoreRepository.selectByRetailerId(uc.getUserId());
561
		PartnerOnBoardingPanel partnerOnBoardingPanel = partnerOnBoardingPanelRepository.selectByCode(fs.getCode());
562
		Map<StoreTimeline, OnBoardingTimelineModel> timelineStatus = null;
563
		LOGGER.info("partnerOnBoardingPanel" + partnerOnBoardingPanel);
564
		if (partnerOnBoardingPanel != null) {
565
 
566
			timelineStatus = storeTimelineTatService.getTimeline(partnerOnBoardingPanel.getId());
567
		}
568
		List<OnBoardingTimelineModel> onBoardingModel = new ArrayList<>();
569
		if (timelineStatus != null) {
570
			onBoardingModel = timelineStatus.values().stream().skip(2).map(x -> x).collect(Collectors.toList());
571
		}
572
		return responseSender.ok(onBoardingModel);
573
 
574
	}
28982 tejbeer 575
 
576
	@RequestMapping(value = "/onBoardingTimelineVisibility", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
577
	@ApiImplicitParams({
30294 tejbeer 578
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
28982 tejbeer 579
	public ResponseEntity<?> onBoardingTimelineVisibility(HttpServletRequest request, Model model)
580
			throws ProfitMandiBusinessException {
581
		int userId = (int) request.getAttribute("userId");
582
		UserCart uc = userAccountRepository.getUserCart(userId);
583
 
584
		FofoStore fs = fofoStoreRepository.selectByRetailerId(uc.getUserId());
585
		PartnerOnBoardingPanel partnerOnBoardingPanel = partnerOnBoardingPanelRepository.selectByCode(fs.getCode());
586
		boolean status = true;
587
		if (partnerOnBoardingPanel != null) {
588
 
589
			status = storeTimelineTatService.getTimelineCompleted(partnerOnBoardingPanel.getId());
590
		}
591
 
28983 tejbeer 592
		LOGGER.info("status" + status);
593
 
28982 tejbeer 594
		return responseSender.ok(status);
595
 
596
	}
30077 tejbeer 597
 
598
	@Autowired
599
	private OrderRepository orderRepository;
600
 
601
	@Autowired
602
	private PositionRepository positionRepository;
603
 
604
	@Autowired
605
	private UserWalletRepository userWalletRepository;
606
 
607
	@Autowired
608
	private PartnerCollectionPlanRepository partnerCollectionPlanRepository;
609
 
610
	@Autowired
611
	private PartnerSecondaryPlanRepository partnerSecondaryPlanRepository;
612
 
30087 tejbeer 613
	@Autowired
614
	private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
615
 
30104 tejbeer 616
	@Autowired
617
	private AuthUserPartnerMappingRepository authUserPartnerMappingRepository;
618
 
30077 tejbeer 619
	@RequestMapping(value = "/getPartnerTarget", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
620
	@ApiImplicitParams({
30294 tejbeer 621
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
30077 tejbeer 622
	public ResponseEntity<?> getPartnerTarget(HttpServletRequest request,
30294 tejbeer 623
			@RequestParam(name = "gmailId") String gmailId, @RequestParam String dayValue)
30087 tejbeer 624
			throws ProfitMandiBusinessException {
30077 tejbeer 625
 
626
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
627
 
30348 tejbeer 628
		Map<String, Set<Integer>> storeGuyMap = csService.getAuthUserPartnerIdMapping();
30077 tejbeer 629
 
30348 tejbeer 630
		Set<Integer> fofoIds = storeGuyMap.get(authUser.getEmailId());
30077 tejbeer 631
 
30348 tejbeer 632
		List<String> brands = Arrays.asList("Vivo", "Samsung", "Oppo", "Itel", "Almost New", "Others");
30078 tejbeer 633
 
30077 tejbeer 634
		float totalPartnerTargetSecondary = 0;
635
		float totalPartnerTargetCollection = 0;
636
		float totalPartnerAchievementSecondary = 0;
637
		float totalPartnerAchievementCollection = 0;
638
		TargetModel tm = new TargetModel();
30087 tejbeer 639
		Map<Integer, PartnerDailyInvestment> partnerDailyInvestmentMap = new HashMap<>();
30077 tejbeer 640
 
30416 tejbeer 641
		Map<Integer, Long> partnerTicketCount = ticketRepository.selectAllOpenTicketsGroupByRetailer();
642
 
643
		LOGGER.info("partnerTicketCount {}", partnerTicketCount);
644
 
30077 tejbeer 645
		List<PartnerTargetAchievementModel> ptams = new ArrayList<>();
646
 
647
		if (fofoIds.size() > 0 && fofoIds != null) {
30087 tejbeer 648
			List<Integer> fofoIdl = new ArrayList<>(fofoIds);
649
			List<Integer> fofoIdList = fofoStoreRepository.selectByRetailerIds(fofoIdl).stream()
650
					.filter(x -> !x.isInternal()).map(x -> x.getId()).collect(Collectors.toList());
30077 tejbeer 651
 
652
			LocalDateTime startDate = LocalDate.now().atStartOfDay();
653
 
30087 tejbeer 654
			if (dayValue.equals("previous")) {
655
				startDate = LocalDate.now().minusDays(1).atStartOfDay();
30138 tejbeer 656
 
30087 tejbeer 657
			}
658
 
659
			List<PartnerDailyInvestment> partnerDailyInvestments = partnerDailyInvestmentRepository
30149 tejbeer 660
					.selectAll(fofoIdList, startDate.toLocalDate().minusDays(1));
30087 tejbeer 661
			if (!partnerDailyInvestments.isEmpty()) {
662
				partnerDailyInvestmentMap = partnerDailyInvestments.stream()
663
						.collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
664
			}
665
 
30426 tejbeer 666
			Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
30077 tejbeer 667
 
30426 tejbeer 668
			Map<Integer, CustomRetailer> customRetailers = fofoIdList.stream().map(x -> customRetailerMap.get(x))
669
					.filter(x -> x != null).collect(Collectors.toList()).stream()
670
					.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
671
 
30330 tejbeer 672
			/*
673
			 * Map<Integer, PartnerCollectionPlanModel> collectionPlans =
674
			 * userWalletRepository .getPartnerWiseTargetCollections(fofoIdList,
675
			 * startDate).stream() .collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
676
			 */
677
 
678
			Map<Integer, PartnerCollectionAchievementModel> collectionAchievementMap = userWalletRepository
679
					.getPartnerWiseCollectionAchievement(fofoIdList, startDate).stream()
30077 tejbeer 680
					.collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
681
 
30330 tejbeer 682
			Map<Integer, PartnerCollectionPlan> todayTarget = partnerCollectionPlanRepository
683
					.selectByLocalDateAndFofoIds(startDate.toLocalDate(), fofoIdList, true).stream()
684
					.collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
685
 
686
			int todayCollectionCount = todayTarget.size();
30348 tejbeer 687
			Map<Integer, PartnerCollectionPlanModel> foundCollectionMap = partnerCollectionService
688
					.getCollectionMap(fofoIdList, startDate);
30330 tejbeer 689
 
30077 tejbeer 690
			Map<Integer, List<PartnerSecondaryPlanModel>> partnerSecondayPlans = orderRepository
30110 tejbeer 691
					.selectPartnerSecondaryGroupByBrand(fofoIdList, startDate.toLocalDate()).stream()
30077 tejbeer 692
					.collect(Collectors.groupingBy(x -> x.getFofoId()));
693
 
694
			LOGGER.info("partnerSecondayPlans {}", partnerSecondayPlans);
695
			for (Entry<Integer, CustomRetailer> customRetailerEntry : customRetailers.entrySet()) {
696
				int fofoId = customRetailerEntry.getKey();
697
				CustomRetailer customRetailer = customRetailerEntry.getValue();
698
				float totalSecondaryPlan = 0;
699
				float totalSecondaryAchivement = 0;
700
 
701
				PartnerTargetAchievementModel ptam = new PartnerTargetAchievementModel();
702
				ptam.setFofoId(fofoId);
703
				ptam.setBusinessName(customRetailer.getBusinessName());
30416 tejbeer 704
				ptam.setMobile(customRetailer.getMobileNumber());
30077 tejbeer 705
 
30087 tejbeer 706
				if (partnerDailyInvestmentMap.get(fofoId) != null) {
707
					ptam.setWalletAmount(partnerDailyInvestmentMap.get(fofoId).getWalletAmount());
708
					ptam.setShortInvestment(partnerDailyInvestmentMap.get(fofoId).getShortInvestment());
709
				}
710
 
30330 tejbeer 711
				if (foundCollectionMap.get(fofoId) != null) {
712
					PartnerCollectionPlanModel collectionPlan = foundCollectionMap.get(fofoId);
713
					PartnerCollectionAchievementModel collectionAchievement = collectionAchievementMap.get(fofoId);
30416 tejbeer 714
					ptam.setRemark(collectionPlan.getRemark());
715
					ptam.setMessage(collectionPlan.getMessage());
716
					ptam.setRemarkTimestamp(collectionPlan.getRemarkTimestamp());
30330 tejbeer 717
					ptam.setRank(collectionPlan.getRank());
30137 tejbeer 718
					Integer authId = collectionPlan.getAuthId();
30330 tejbeer 719
 
30416 tejbeer 720
					Map<Integer, String> rankColorMap = ProfitMandiConstants.Rank_Color_Map;
30330 tejbeer 721
 
30416 tejbeer 722
					ptam.setCollectionColor(rankColorMap.get(collectionPlan.getRank()));
723
 
30087 tejbeer 724
					LOGGER.info("authId" + authId);
30077 tejbeer 725
 
30330 tejbeer 726
					if (collectionPlan.getTargetPlan() != null && collectionPlan.getCommittedDate() != null) {
727
						float targetCollection = 0;
30137 tejbeer 728
 
30451 tejbeer 729
						if (authId != null && authId == authUser.getId())
30330 tejbeer 730
 
30451 tejbeer 731
							if (collectionPlan.getRank() == 2) {
732
								targetCollection = collectionPlan.getTargetPlan() - collectionPlan.getAchievementPlan();
733
							} else {
734
								targetCollection = collectionPlan.getTargetPlan();
735
							}
736
 
30330 tejbeer 737
						if (!collectionPlan.getCommittedDate().isAfter(startDate)) {
738
							totalPartnerTargetCollection += targetCollection;
30087 tejbeer 739
						}
30330 tejbeer 740
						ptam.setCollectionTarget(targetCollection);
741
					}
742
					if (collectionAchievement.getAmount() != null) {
743
						totalPartnerAchievementCollection += collectionAchievement.getAmount();
30087 tejbeer 744
 
30330 tejbeer 745
						ptam.setCollectionAchievement(collectionAchievement.getAmount());
30087 tejbeer 746
					}
747
 
748
					if (authId != null && authId != authUser.getId()) {
749
						ptam.setAuthUser(authRepository.selectById(authId));
750
 
751
					}
752
 
30137 tejbeer 753
					if (collectionPlan.getCommittedDate() != null) {
754
 
755
						ptam.setCollectionCommitmentDate(collectionPlan.getCommittedDate().toLocalDate());
756
					}
30077 tejbeer 757
				}
758
 
30330 tejbeer 759
				// Secondary
760
 
30077 tejbeer 761
				PartnerSecondaryPlanModel otherPartnerSecondaryPlanModel = null;
30087 tejbeer 762
				Map<String, PartnerSecondaryPlanModel> secondaryModelMap = new HashMap<>();
30077 tejbeer 763
				if (partnerSecondayPlans.get(fofoId) != null) {
764
					long otherBrandSecondary = 0;
765
					for (PartnerSecondaryPlanModel pspm : partnerSecondayPlans.get(fofoId)) {
30087 tejbeer 766
						Integer authId = pspm.getAuthId();
30077 tejbeer 767
						if (!brands.contains(pspm.getBrand())) {
30087 tejbeer 768
							if (pspm.getAchievementPlan() != null) {
769
								otherBrandSecondary += pspm.getAchievementPlan();
770
							}
30077 tejbeer 771
						} else {
772
							otherPartnerSecondaryPlanModel = pspm;
773
						}
30087 tejbeer 774
						if (pspm.getTargetPlan() != null) {
775
							totalSecondaryPlan += pspm.getTargetPlan();
776
						}
777
 
778
						if (pspm.getAchievementPlan() != null) {
779
							totalSecondaryAchivement += pspm.getAchievementPlan();
780
						}
30137 tejbeer 781
 
782
						if (pspm.getCommittedDate() != null) {
783
 
784
							ptam.setSecondaryCommitmentDate(pspm.getCommittedDate().toLocalDate());
785
						}
30087 tejbeer 786
						if (authId != null && authId == authUser.getId()) {
787
 
30137 tejbeer 788
							if (pspm.getTargetPlan() != null && pspm.getCommittedDate() != null) {
30087 tejbeer 789
 
30137 tejbeer 790
								if (pspm.getCommittedDate().isEqual(startDate)) {
791
									totalPartnerTargetSecondary += pspm.getTargetPlan();
792
								}
30087 tejbeer 793
							}
794
 
795
							if (pspm.getAchievementPlan() != null) {
796
								totalPartnerAchievementSecondary += pspm.getAchievementPlan();
797
							}
798
 
799
						}
30077 tejbeer 800
					}
801
					if (otherPartnerSecondaryPlanModel != null) {
802
						otherPartnerSecondaryPlanModel.setAchievementPlan(otherBrandSecondary);
803
					}
30087 tejbeer 804
					secondaryModelMap = partnerSecondayPlans.get(fofoId).stream()
30077 tejbeer 805
							.filter(x -> brands.contains(x.getBrand()))
806
							.collect(Collectors.toMap(x -> x.getBrand(), x -> x));
807
 
808
					if (secondaryModelMap.containsKey("Others")) {
809
						PartnerSecondaryPlanModel psp = secondaryModelMap.get("Others");
810
						psp.setAchievementPlan(otherBrandSecondary);
811
					} else {
30087 tejbeer 812
						secondaryModelMap.put("Others", new PartnerSecondaryPlanModel(fofoId, "Others", (long) 0,
30137 tejbeer 813
								otherBrandSecondary, authUser.getId(), null));
30077 tejbeer 814
					}
815
					for (String brand : brands) {
816
						if (!secondaryModelMap.containsKey(brand)) {
30137 tejbeer 817
							secondaryModelMap.put(brand, new PartnerSecondaryPlanModel(fofoId, brand, (long) 0,
818
									(long) 0, authUser.getId(), null));
30077 tejbeer 819
						}
820
					}
821
 
30087 tejbeer 822
					for (Entry<String, PartnerSecondaryPlanModel> secondaryModelEntry : secondaryModelMap.entrySet()) {
823
						Integer authId = secondaryModelEntry.getValue().getAuthId();
824
						if (authId != null && authId != authUser.getId()) {
825
							secondaryModelEntry.getValue().setAuthUser(authRepository.selectById(authId));
826
							ptam.setSecondaryColor("red");
827
						}
828
 
829
					}
830
 
30077 tejbeer 831
					ptam.setPartnerSecondaryModel(secondaryModelMap);
832
					ptam.setTotalSecondaryPlan(totalSecondaryPlan);
30087 tejbeer 833
					ptam.setTotalSecondaryAchievement(totalSecondaryAchivement);
30330 tejbeer 834
					// Secondary
30077 tejbeer 835
 
30087 tejbeer 836
				} else {
837
					for (String brand : brands) {
838
						PartnerSecondaryPlanModel pspm = new PartnerSecondaryPlanModel();
839
						pspm.setAchievementPlan((long) 0);
840
						pspm.setTargetPlan((long) 0);
841
						pspm.setBrand(brand);
842
						pspm.setFofoId(fofoId);
843
						secondaryModelMap.put(brand, pspm);
844
					}
845
					ptam.setPartnerSecondaryModel(secondaryModelMap);
30077 tejbeer 846
				}
847
 
30416 tejbeer 848
				if (!partnerTicketCount.isEmpty()) {
849
					if (partnerTicketCount.get(fofoId) != null) {
850
						ptam.setTicketCount(partnerTicketCount.get(fofoId));
851
					} else {
852
						ptam.setTicketCount(0);
853
 
854
					}
855
				}
856
 
30078 tejbeer 857
				ptams.add(ptam);
858
 
30077 tejbeer 859
			}
860
 
861
			tm.setTotalPartnerTargetCollection(totalPartnerTargetCollection);
862
			tm.setTotalPartnerTargetSecondary(totalPartnerTargetSecondary);
863
			tm.setTotalPartnerSecondary(totalPartnerAchievementSecondary);
864
			tm.setTotalPartnerCollection(totalPartnerAchievementCollection);
30330 tejbeer 865
			tm.setTodayCollectionCount(todayCollectionCount);
30077 tejbeer 866
 
30330 tejbeer 867
			tm.setTargetAchievement(ptams.stream().sorted(Comparator.comparing(PartnerTargetAchievementModel::getRank))
30087 tejbeer 868
					.collect(Collectors.toList()));
869
 
30077 tejbeer 870
		}
871
 
872
		return responseSender.ok(tm);
873
 
874
	}
875
 
876
	@RequestMapping(value = "/target", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
877
	@ApiImplicitParams({
30294 tejbeer 878
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
30077 tejbeer 879
	public ResponseEntity<?> createPartnerTarget(HttpServletRequest request,
30294 tejbeer 880
			@RequestBody PartnerTargetAchievementModel ptam) throws ProfitMandiBusinessException {
30077 tejbeer 881
 
30089 tejbeer 882
		LOGGER.info("ptam" + ptam);
883
 
30087 tejbeer 884
		AuthUser authUser = authRepository.selectByGmailId(ptam.getCreatedBy());
30077 tejbeer 885
 
30137 tejbeer 886
		if (ptam.getCollectionCommitmentDate().isAfter(LocalDate.now())
887
				|| ptam.getCollectionCommitmentDate().isEqual(LocalDate.now())) {
888
			PartnerCollectionPlan partnerCollectionPlan = partnerCollectionPlanRepository
889
					.selectByLocalDate(LocalDate.now(), ptam.getFofoId(), true);
890
			LOGGER.info("pcp" + partnerCollectionPlan);
30077 tejbeer 891
 
30137 tejbeer 892
			if (partnerCollectionPlan == null) {
893
				if (ptam.getCollectionTarget() > 0) {
30087 tejbeer 894
 
30137 tejbeer 895
					partnerCollectionPlan = new PartnerCollectionPlan();
896
					partnerCollectionPlan.setCreateTimestamp(LocalDateTime.now());
897
					partnerCollectionPlan.setAuthId(authUser.getId());
898
					partnerCollectionPlan.setFofoId(ptam.getFofoId());
899
					partnerCollectionPlan.setActive(true);
900
					partnerCollectionPlan.setCollectionPlan(ptam.getCollectionTarget());
901
					partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
902
					partnerCollectionPlan.setCommitedTimestamp(ptam.getCollectionCommitmentDate().atStartOfDay());
903
					partnerCollectionPlanRepository.persist(partnerCollectionPlan);
30416 tejbeer 904
 
30137 tejbeer 905
				}
30087 tejbeer 906
 
30137 tejbeer 907
			} else {
30087 tejbeer 908
 
30137 tejbeer 909
				if (partnerCollectionPlan.getCollectionPlan() != ptam.getCollectionTarget()) {
910
					float totalCollectionPlan = partnerCollectionPlan.getCollectionPlan() + 10000;
911
					if (authUser.getId() == partnerCollectionPlan.getAuthId()) {
30087 tejbeer 912
 
30185 tejbeer 913
						if (authUser.getEmailId().equals("tarun.verma@smartdukaan.com")
914
								|| authUser.getEmailId().equals("rakesh.sonawane@smartdukaan.com")
915
								|| ptam.getCollectionTarget() >= totalCollectionPlan) {
30137 tejbeer 916
							partnerCollectionPlan.setCollectionPlan(ptam.getCollectionTarget());
917
							partnerCollectionPlan.setActive(true);
918
							partnerCollectionPlan
919
									.setCommitedTimestamp(ptam.getCollectionCommitmentDate().atStartOfDay());
920
							partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
921
						} else {
922
							throw new ProfitMandiBusinessException("collection target", "",
923
									"collection target should be more than " + totalCollectionPlan);
924
						}
30087 tejbeer 925
 
926
					} else {
30137 tejbeer 927
 
30185 tejbeer 928
						if (authUser.getEmailId().equals("tarun.verma@smartdukaan.com")
929
								|| authUser.getEmailId().equals("rakesh.sonawane@smartdukaan.com")
930
								|| ptam.getCollectionTarget() >= totalCollectionPlan) {
30137 tejbeer 931
 
932
							partnerCollectionPlan.setActive(false);
933
							partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
934
							partnerCollectionPlan = new PartnerCollectionPlan();
935
							partnerCollectionPlan.setCreateTimestamp(LocalDateTime.now());
936
							partnerCollectionPlan.setAuthId(authUser.getId());
937
							partnerCollectionPlan.setFofoId(ptam.getFofoId());
938
							partnerCollectionPlan.setActive(true);
939
							partnerCollectionPlan
940
									.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
941
							partnerCollectionPlan.setCollectionPlan(ptam.getCollectionTarget());
942
							partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
943
							partnerCollectionPlanRepository.persist(partnerCollectionPlan);
944
						} else {
945
							throw new ProfitMandiBusinessException("collection target", "",
946
									"collection target should be more than " + totalCollectionPlan);
947
						}
30087 tejbeer 948
					}
949
				}
30137 tejbeer 950
 
30146 tejbeer 951
				if ((LocalDate.now().atStartOfDay().equals(ptam.getCollectionCommitmentDate().atStartOfDay())
952
						|| ptam.getCollectionCommitmentDate().atStartOfDay().isAfter(LocalDate.now().atStartOfDay()))
30137 tejbeer 953
						&& partnerCollectionPlan.getCollectionPlan() == ptam.getCollectionTarget()) {
954
					partnerCollectionPlan.setCommitedTimestamp(ptam.getCollectionCommitmentDate().atStartOfDay());
955
					partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
956
				}
30416 tejbeer 957
 
30087 tejbeer 958
			}
30433 tejbeer 959
 
960
			PartnerCollectionRemark pcr = new PartnerCollectionRemark();
961
			pcr.setFofoId(ptam.getFofoId());
962
			pcr.setAuthId(authUser.getId());
963
			pcr.setMessage("Collection plan for" + ptam.getCollectionCommitmentDate());
964
			pcr.setRemark(CollectionRemark.COLLECTION_PLAN);
965
			pcr.setCreateTimestamp(LocalDateTime.now());
966
			partnerCollectionRemarkRepository.persist(pcr);
30137 tejbeer 967
		} else {
968
			throw new ProfitMandiBusinessException("Date", "",
30138 tejbeer 969
					"you can't select the back date " + ptam.getCollectionCommitmentDate());
30077 tejbeer 970
		}
971
 
972
		for (Entry<String, PartnerSecondaryPlanModel> pspm : ptam.getPartnerSecondaryModel().entrySet()) {
30087 tejbeer 973
 
30137 tejbeer 974
			if (ptam.getCollectionCommitmentDate().isAfter(LocalDate.now())
975
					|| ptam.getCollectionCommitmentDate().isEqual(LocalDate.now())) {
976
				PartnerSecondaryPlanModel plan = pspm.getValue();
977
				PartnerSecondaryPlan psp = partnerSecondaryPlanRepository.selectByLocalDateBrand(plan.getBrand(),
978
						LocalDate.now(), ptam.getFofoId(), true);
979
				LOGGER.info("psp" + psp);
30087 tejbeer 980
 
30137 tejbeer 981
				if (psp == null) {
30334 tejbeer 982
					if (plan.getTargetPlan() > 0 && plan.getTargetPlan() != null) {
30087 tejbeer 983
 
30137 tejbeer 984
						psp = new PartnerSecondaryPlan();
985
						psp.setAuthId(authUser.getId());
986
						psp.setBrand(pspm.getKey());
987
						psp.setFofoId(pspm.getValue().getFofoId());
988
						psp.setSecondaryPlan(pspm.getValue().getTargetPlan());
989
						psp.setCreateTimestamp(LocalDateTime.now());
990
						psp.setUpdatedTimestamp(LocalDateTime.now());
991
						psp.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
992
						psp.setActive(true);
993
						partnerSecondaryPlanRepository.persist(psp);
994
					}
30087 tejbeer 995
 
30137 tejbeer 996
				} else {
997
					if (plan.getTargetPlan() != psp.getSecondaryPlan()) {
998
						float totalSecondaryPlan = psp.getSecondaryPlan() + 10000;
999
						if (authUser.getId() == plan.getAuthId()) {
30185 tejbeer 1000
							if (authUser.getEmailId().equals("tarun.verma@smartdukaan.com")
1001
									|| authUser.getEmailId().equals("rakesh.sonawane@smartdukaan.com")
1002
									|| plan.getTargetPlan() >= totalSecondaryPlan) {
30137 tejbeer 1003
								psp.setSecondaryPlan(pspm.getValue().getTargetPlan());
1004
								psp.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
1005
								psp.setUpdatedTimestamp(LocalDateTime.now());
1006
								psp.setActive(true);
1007
							} else {
1008
								throw new ProfitMandiBusinessException("secondary target", "",
1009
										"secondary target should be more than " + totalSecondaryPlan);
1010
							}
30087 tejbeer 1011
 
30137 tejbeer 1012
						} else {
30087 tejbeer 1013
 
30185 tejbeer 1014
							if (authUser.getEmailId().equals("tarun.verma@smartdukaan.com")
1015
									|| authUser.getEmailId().equals("rakesh.sonawane@smartdukaan.com")
1016
									|| plan.getTargetPlan() >= totalSecondaryPlan) {
30087 tejbeer 1017
 
30137 tejbeer 1018
								psp.setUpdatedTimestamp(LocalDateTime.now());
1019
								psp.setActive(false);
1020
								psp = new PartnerSecondaryPlan();
1021
								psp.setAuthId(authUser.getId());
1022
								psp.setBrand(pspm.getKey());
1023
								psp.setFofoId(pspm.getValue().getFofoId());
1024
								psp.setSecondaryPlan(pspm.getValue().getTargetPlan());
1025
								psp.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
1026
								psp.setCreateTimestamp(LocalDateTime.now());
1027
								psp.setUpdatedTimestamp(LocalDateTime.now());
1028
								psp.setActive(true);
1029
								partnerSecondaryPlanRepository.persist(psp);
1030
							} else {
1031
								throw new ProfitMandiBusinessException("secondary target", "",
1032
										"secondary target should be more than " + totalSecondaryPlan);
1033
							}
30087 tejbeer 1034
						}
1035
					}
30137 tejbeer 1036
 
30146 tejbeer 1037
					if ((LocalDate.now().atStartOfDay().equals(ptam.getSecondaryCommitmentDate().atStartOfDay())
1038
							|| ptam.getSecondaryCommitmentDate().atStartOfDay().isAfter(LocalDate.now().atStartOfDay()))
30137 tejbeer 1039
							&& plan.getTargetPlan() == psp.getSecondaryPlan()) {
1040
						psp.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
1041
						psp.setUpdatedTimestamp(LocalDateTime.now());
1042
					}
1043
 
30087 tejbeer 1044
				}
30137 tejbeer 1045
			} else {
1046
				throw new ProfitMandiBusinessException("Date", "",
30138 tejbeer 1047
						"you can't select the back date " + ptam.getSecondaryCommitmentDate());
30077 tejbeer 1048
			}
30137 tejbeer 1049
 
30077 tejbeer 1050
		}
1051
 
1052
		return responseSender.ok(true);
30137 tejbeer 1053
 
30077 tejbeer 1054
	}
1055
 
30416 tejbeer 1056
	@RequestMapping(value = "/viewTickets", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1057
	@ApiImplicitParams({
1058
 
1059
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1060
	public ResponseEntity<?> viewTickets(HttpServletRequest request, @RequestParam int fofoId)
1061
			throws ProfitMandiBusinessException {
1062
		List<Ticket> tickets = ticketRepository.selectAllOpenTicketByRetailer(fofoId);
1063
 
1064
		List<TicketViewModel> viewList = new ArrayList<>();
1065
		for (Ticket ticket : tickets) {
1066
 
1067
			TicketViewModel ticketViewModel = new TicketViewModel();
1068
			ticketViewModel.setId(ticket.getId());
1069
			TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.selectById(ticket.getSubCategoryId());
1070
			TicketCategory ticketCategory = ticketCategoryRepository.selectById(ticketSubCategory.getCategoryId());
1071
 
1072
			ticketViewModel.setCategoryName(ticketCategory.getName());
1073
			ticketViewModel.setSubCategoryName(ticketSubCategory.getName());
1074
			ticketViewModel.setCreatedTimestamp(ticket.getCreateTimestamp());
1075
 
1076
			viewList.add(ticketViewModel);
1077
		}
1078
		return responseSender.ok(viewList);
1079
 
1080
	}
1081
 
1082
	@RequestMapping(value = "/viewRecentTickets", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1083
	@ApiImplicitParams({
1084
 
1085
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1086
	public ResponseEntity<?> viewRecentTickets(HttpServletRequest request, @RequestParam int fofoId)
1087
			throws ProfitMandiBusinessException {
1088
		List<TicketViewModel> viewList = ticketRepository.selectRecentClosedTicket(fofoId,
1089
				LocalDateTime.now().minusDays(20));
1090
 
1091
		return responseSender.ok(viewList);
1092
 
1093
	}
1094
 
1095
	@RequestMapping(value = "/createTicket", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1096
	@ApiImplicitParams({
1097
 
1098
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1099
	public ResponseEntity<?> createTicket(HttpServletRequest request) throws ProfitMandiBusinessException {
1100
		List<TicketCategory> ticketCategories = csService.getAllTicketCategotyFromSubCategory();
1101
		return responseSender.ok(ticketCategories);
1102
	}
1103
 
1104
	@RequestMapping(value = "/getSubCategoriesByCategoryId", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1105
	@ApiImplicitParams({
1106
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1107
 
1108
	public ResponseEntity<?> getSubCategoriesByCategoryId(HttpServletRequest request,
1109
			@RequestParam(name = "categoryId", defaultValue = "0") int categoryId, Model model) {
1110
		List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository.selectAll(categoryId);
1111
		LOGGER.info(ticketSubCategories);
1112
		return responseSender.ok(ticketSubCategories);
1113
	}
1114
 
1115
	@RequestMapping(value = "/createTicket", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
1116
	@ApiImplicitParams({
1117
 
1118
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1119
	public ResponseEntity<?> createTicket(HttpServletRequest request, @RequestParam(name = "categoryId") int categoryId,
1120
			@RequestParam(name = "subCategoryId") int subCategoryId, @RequestParam(name = "message") String message,
1121
			@RequestParam(name = "fofoId") int fofoId) throws Exception {
1122
		List<Ticket> tickets = ticketRepository.selectAllResolvedMarkedTicketByCreator(fofoId);
1123
		if (tickets.size() > 3 || tickets.size() == 3) {
1124
			return responseSender.ok(false);
1125
		} else {
1126
			csService.createTicket(fofoId, categoryId, subCategoryId, message);
1127
 
1128
		}
1129
		return responseSender.ok(true);
1130
	}
1131
 
1132
	@RequestMapping(value = "/getCollectionRemark", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1133
	@ApiImplicitParams({
1134
 
1135
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1136
	public ResponseEntity<?> getCollectionRemark(HttpServletRequest request) throws ProfitMandiBusinessException {
30433 tejbeer 1137
		List<CollectionRemark> remarks = Arrays.asList(CollectionRemark.values()).stream()
1138
				.filter(x -> !x.equals(CollectionRemark.COLLECTION_PLAN)).collect(Collectors.toList());
1139
		return responseSender.ok(remarks);
30416 tejbeer 1140
	}
1141
 
1142
	@RequestMapping(value = "/createPartnerColectionRemark", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
1143
	@ApiImplicitParams({
1144
 
1145
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1146
	public ResponseEntity<?> createPartnerColectionRemark(HttpServletRequest request,
1147
			@RequestBody PartnerCollectionRemarkModel partnerCollectionRemarkModel)
1148
			throws ProfitMandiBusinessException {
1149
		AuthUser authUser = authRepository.selectByGmailId(partnerCollectionRemarkModel.getGmailId());
1150
 
1151
		PartnerCollectionRemark pcr = new PartnerCollectionRemark();
1152
		pcr.setFofoId(partnerCollectionRemarkModel.getFofoId());
1153
		pcr.setAuthId(authUser.getId());
1154
		pcr.setMessage(partnerCollectionRemarkModel.getMessage());
1155
		pcr.setRemark(partnerCollectionRemarkModel.getRemark());
1156
		pcr.setCreateTimestamp(LocalDateTime.now());
1157
		partnerCollectionRemarkRepository.persist(pcr);
1158
		return responseSender.ok(true);
1159
 
1160
	}
30433 tejbeer 1161
 
1162
	@RequestMapping(value = "/uploadFranchiseeVisit", method = RequestMethod.POST)
1163
	public ResponseEntity<?> readCsvFileAndSetLead(HttpServletRequest request, @RequestPart MultipartFile multipartFile)
1164
			throws Throwable {
1165
 
1166
		int id = (int) request.getAttribute("userId");
1167
 
1168
		LOGGER.info("id" + id);
1169
 
1170
		User user = userRepository.selectById(id);
1171
 
1172
		AuthUser authUser = authRepository.selectByEmailOrMobile(user.getEmailId());
1173
 
1174
		String fileName = multipartFile.getName();
1175
		String fileNames = multipartFile.getOriginalFilename();
1176
 
1177
		LOGGER.info("fileName" + fileName);
1178
		LOGGER.info("fileNames" + fileNames);
1179
 
1180
		List<CSVRecord> records = FileUtil.readFile(multipartFile);
1181
 
1182
		for (CSVRecord record : records) {
1183
			FranchiseeVisit franchiseeVisit = new FranchiseeVisit();
1184
			franchiseeVisit.setFofoId(Integer.parseInt(record.get(0)));
1185
			CustomRetailer customRetailer = retailerService.getFofoRetailer(Integer.parseInt(record.get(0)));
1186
 
1187
			franchiseeVisit.setPartnerName(customRetailer.getBusinessName());
1188
			franchiseeVisit.setAgenda(record.get(1));
1189
			franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
1190
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
1191
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
1192
 
1193
			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
1194
			LOGGER.info(record.get(1));
1195
			LocalDate dateTime = LocalDate.parse(record.get(2), formatter);
1196
 
1197
			franchiseeVisit.setSchelduleTimestamp(dateTime.atStartOfDay());
1198
			// change
1199
 
1200
			String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
1201
			franchiseeVisit.setCreatedBy(authUserName);
1202
			franchiseeVisit.setAuthId(authUser.getId());
1203
 
1204
			franchiseeVisitRepository.persist(franchiseeVisit);
1205
 
1206
			return responseSender.ok(true);
1207
		}
1208
 
1209
		return responseSender.ok(true);
1210
 
1211
	}
30077 tejbeer 1212
}