Subversion Repositories SmartDukaan

Rev

Rev 30452 | Rev 30460 | 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);
30348 tejbeer 627
		Map<String, Set<Integer>> storeGuyMap = csService.getAuthUserPartnerIdMapping();
628
		Set<Integer> fofoIds = storeGuyMap.get(authUser.getEmailId());
629
		List<String> brands = Arrays.asList("Vivo", "Samsung", "Oppo", "Itel", "Almost New", "Others");
30078 tejbeer 630
 
30077 tejbeer 631
		float totalPartnerTargetSecondary = 0;
632
		float totalPartnerTargetCollection = 0;
633
		float totalPartnerAchievementSecondary = 0;
634
		float totalPartnerAchievementCollection = 0;
635
		TargetModel tm = new TargetModel();
30087 tejbeer 636
		Map<Integer, PartnerDailyInvestment> partnerDailyInvestmentMap = new HashMap<>();
30416 tejbeer 637
		Map<Integer, Long> partnerTicketCount = ticketRepository.selectAllOpenTicketsGroupByRetailer();
638
 
639
		LOGGER.info("partnerTicketCount {}", partnerTicketCount);
640
 
30077 tejbeer 641
		List<PartnerTargetAchievementModel> ptams = new ArrayList<>();
642
 
643
		if (fofoIds.size() > 0 && fofoIds != null) {
30087 tejbeer 644
			List<Integer> fofoIdl = new ArrayList<>(fofoIds);
645
			List<Integer> fofoIdList = fofoStoreRepository.selectByRetailerIds(fofoIdl).stream()
646
					.filter(x -> !x.isInternal()).map(x -> x.getId()).collect(Collectors.toList());
30077 tejbeer 647
 
648
			LocalDateTime startDate = LocalDate.now().atStartOfDay();
649
 
30087 tejbeer 650
			if (dayValue.equals("previous")) {
651
				startDate = LocalDate.now().minusDays(1).atStartOfDay();
30138 tejbeer 652
 
30087 tejbeer 653
			}
654
 
655
			List<PartnerDailyInvestment> partnerDailyInvestments = partnerDailyInvestmentRepository
30149 tejbeer 656
					.selectAll(fofoIdList, startDate.toLocalDate().minusDays(1));
30453 tejbeer 657
 
30087 tejbeer 658
			if (!partnerDailyInvestments.isEmpty()) {
659
				partnerDailyInvestmentMap = partnerDailyInvestments.stream()
660
						.collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
661
			}
662
 
30426 tejbeer 663
			Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
30077 tejbeer 664
 
30426 tejbeer 665
			Map<Integer, CustomRetailer> customRetailers = fofoIdList.stream().map(x -> customRetailerMap.get(x))
666
					.filter(x -> x != null).collect(Collectors.toList()).stream()
667
					.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
668
 
30330 tejbeer 669
			Map<Integer, PartnerCollectionAchievementModel> collectionAchievementMap = userWalletRepository
670
					.getPartnerWiseCollectionAchievement(fofoIdList, startDate).stream()
30077 tejbeer 671
					.collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
672
 
30453 tejbeer 673
			List<Integer> remarkIds = partnerCollectionRemarkRepository.selectMaxRemarkId(fofoIdList);
30330 tejbeer 674
 
30453 tejbeer 675
			LOGGER.info("remarkIds {}", remarkIds);
676
 
677
			long todayCollectionCount = 0;
678
			if (!remarkIds.isEmpty()) {
679
				todayCollectionCount = partnerCollectionRemarkRepository
680
						.selectByAuthIdAndIds(authUser.getId(), remarkIds).stream()
681
						.filter(x -> x.getCreateTimestamp().toLocalDate().equals(LocalDate.now()))
682
						.collect(Collectors.counting());
683
 
684
			}
685
 
30348 tejbeer 686
			Map<Integer, PartnerCollectionPlanModel> foundCollectionMap = partnerCollectionService
687
					.getCollectionMap(fofoIdList, startDate);
30330 tejbeer 688
 
30077 tejbeer 689
			Map<Integer, List<PartnerSecondaryPlanModel>> partnerSecondayPlans = orderRepository
30110 tejbeer 690
					.selectPartnerSecondaryGroupByBrand(fofoIdList, startDate.toLocalDate()).stream()
30077 tejbeer 691
					.collect(Collectors.groupingBy(x -> x.getFofoId()));
692
 
693
			LOGGER.info("partnerSecondayPlans {}", partnerSecondayPlans);
694
			for (Entry<Integer, CustomRetailer> customRetailerEntry : customRetailers.entrySet()) {
695
				int fofoId = customRetailerEntry.getKey();
696
				CustomRetailer customRetailer = customRetailerEntry.getValue();
697
				float totalSecondaryPlan = 0;
698
				float totalSecondaryAchivement = 0;
699
 
700
				PartnerTargetAchievementModel ptam = new PartnerTargetAchievementModel();
701
				ptam.setFofoId(fofoId);
702
				ptam.setBusinessName(customRetailer.getBusinessName());
30416 tejbeer 703
				ptam.setMobile(customRetailer.getMobileNumber());
30077 tejbeer 704
 
30087 tejbeer 705
				if (partnerDailyInvestmentMap.get(fofoId) != null) {
706
					ptam.setWalletAmount(partnerDailyInvestmentMap.get(fofoId).getWalletAmount());
707
					ptam.setShortInvestment(partnerDailyInvestmentMap.get(fofoId).getShortInvestment());
708
				}
709
 
30330 tejbeer 710
				if (foundCollectionMap.get(fofoId) != null) {
711
					PartnerCollectionPlanModel collectionPlan = foundCollectionMap.get(fofoId);
712
					PartnerCollectionAchievementModel collectionAchievement = collectionAchievementMap.get(fofoId);
30416 tejbeer 713
					ptam.setRemark(collectionPlan.getRemark());
714
					ptam.setMessage(collectionPlan.getMessage());
715
					ptam.setRemarkTimestamp(collectionPlan.getRemarkTimestamp());
30330 tejbeer 716
					ptam.setRank(collectionPlan.getRank());
30137 tejbeer 717
					Integer authId = collectionPlan.getAuthId();
30330 tejbeer 718
 
30416 tejbeer 719
					Map<Integer, String> rankColorMap = ProfitMandiConstants.Rank_Color_Map;
30330 tejbeer 720
 
30416 tejbeer 721
					ptam.setCollectionColor(rankColorMap.get(collectionPlan.getRank()));
722
 
30087 tejbeer 723
					LOGGER.info("authId" + authId);
30077 tejbeer 724
 
30330 tejbeer 725
					if (collectionPlan.getTargetPlan() != null && collectionPlan.getCommittedDate() != null) {
726
						float targetCollection = 0;
30137 tejbeer 727
 
30452 tejbeer 728
						if (collectionPlan.getRank() == 2) {
729
							targetCollection = collectionPlan.getTargetPlan() - collectionPlan.getAchievementPlan();
730
						} else {
731
							targetCollection = collectionPlan.getTargetPlan();
732
						}
30330 tejbeer 733
 
30452 tejbeer 734
						if (authId != null && authId == authUser.getId()) {
735
 
736
							if (!collectionPlan.getCommittedDate().isAfter(startDate)) {
737
								totalPartnerTargetCollection += targetCollection;
30451 tejbeer 738
							}
30452 tejbeer 739
						}
30451 tejbeer 740
 
30330 tejbeer 741
						ptam.setCollectionTarget(targetCollection);
742
					}
743
					if (collectionAchievement.getAmount() != null) {
30453 tejbeer 744
						if (authId != null && authId == authUser.getId()) {
30087 tejbeer 745
 
30453 tejbeer 746
							totalPartnerAchievementCollection += collectionAchievement.getAmount();
747
						}
30330 tejbeer 748
						ptam.setCollectionAchievement(collectionAchievement.getAmount());
30087 tejbeer 749
					}
750
 
751
					if (authId != null && authId != authUser.getId()) {
752
						ptam.setAuthUser(authRepository.selectById(authId));
753
 
754
					}
755
 
30137 tejbeer 756
					if (collectionPlan.getCommittedDate() != null) {
757
 
758
						ptam.setCollectionCommitmentDate(collectionPlan.getCommittedDate().toLocalDate());
759
					}
30077 tejbeer 760
				}
761
 
30330 tejbeer 762
				// Secondary
763
 
30077 tejbeer 764
				PartnerSecondaryPlanModel otherPartnerSecondaryPlanModel = null;
30087 tejbeer 765
				Map<String, PartnerSecondaryPlanModel> secondaryModelMap = new HashMap<>();
30077 tejbeer 766
				if (partnerSecondayPlans.get(fofoId) != null) {
767
					long otherBrandSecondary = 0;
768
					for (PartnerSecondaryPlanModel pspm : partnerSecondayPlans.get(fofoId)) {
30087 tejbeer 769
						Integer authId = pspm.getAuthId();
30077 tejbeer 770
						if (!brands.contains(pspm.getBrand())) {
30087 tejbeer 771
							if (pspm.getAchievementPlan() != null) {
772
								otherBrandSecondary += pspm.getAchievementPlan();
773
							}
30077 tejbeer 774
						} else {
775
							otherPartnerSecondaryPlanModel = pspm;
776
						}
30087 tejbeer 777
						if (pspm.getTargetPlan() != null) {
778
							totalSecondaryPlan += pspm.getTargetPlan();
779
						}
780
 
781
						if (pspm.getAchievementPlan() != null) {
782
							totalSecondaryAchivement += pspm.getAchievementPlan();
783
						}
30137 tejbeer 784
 
785
						if (pspm.getCommittedDate() != null) {
786
 
787
							ptam.setSecondaryCommitmentDate(pspm.getCommittedDate().toLocalDate());
788
						}
30087 tejbeer 789
						if (authId != null && authId == authUser.getId()) {
790
 
30137 tejbeer 791
							if (pspm.getTargetPlan() != null && pspm.getCommittedDate() != null) {
30087 tejbeer 792
 
30137 tejbeer 793
								if (pspm.getCommittedDate().isEqual(startDate)) {
794
									totalPartnerTargetSecondary += pspm.getTargetPlan();
795
								}
30087 tejbeer 796
							}
797
 
798
							if (pspm.getAchievementPlan() != null) {
799
								totalPartnerAchievementSecondary += pspm.getAchievementPlan();
800
							}
801
 
802
						}
30077 tejbeer 803
					}
804
					if (otherPartnerSecondaryPlanModel != null) {
805
						otherPartnerSecondaryPlanModel.setAchievementPlan(otherBrandSecondary);
806
					}
30087 tejbeer 807
					secondaryModelMap = partnerSecondayPlans.get(fofoId).stream()
30077 tejbeer 808
							.filter(x -> brands.contains(x.getBrand()))
809
							.collect(Collectors.toMap(x -> x.getBrand(), x -> x));
810
 
811
					if (secondaryModelMap.containsKey("Others")) {
812
						PartnerSecondaryPlanModel psp = secondaryModelMap.get("Others");
813
						psp.setAchievementPlan(otherBrandSecondary);
814
					} else {
30087 tejbeer 815
						secondaryModelMap.put("Others", new PartnerSecondaryPlanModel(fofoId, "Others", (long) 0,
30137 tejbeer 816
								otherBrandSecondary, authUser.getId(), null));
30077 tejbeer 817
					}
818
					for (String brand : brands) {
819
						if (!secondaryModelMap.containsKey(brand)) {
30137 tejbeer 820
							secondaryModelMap.put(brand, new PartnerSecondaryPlanModel(fofoId, brand, (long) 0,
821
									(long) 0, authUser.getId(), null));
30077 tejbeer 822
						}
823
					}
824
 
30087 tejbeer 825
					for (Entry<String, PartnerSecondaryPlanModel> secondaryModelEntry : secondaryModelMap.entrySet()) {
826
						Integer authId = secondaryModelEntry.getValue().getAuthId();
827
						if (authId != null && authId != authUser.getId()) {
828
							secondaryModelEntry.getValue().setAuthUser(authRepository.selectById(authId));
829
							ptam.setSecondaryColor("red");
830
						}
831
 
832
					}
833
 
30077 tejbeer 834
					ptam.setPartnerSecondaryModel(secondaryModelMap);
835
					ptam.setTotalSecondaryPlan(totalSecondaryPlan);
30087 tejbeer 836
					ptam.setTotalSecondaryAchievement(totalSecondaryAchivement);
30330 tejbeer 837
					// Secondary
30077 tejbeer 838
 
30087 tejbeer 839
				} else {
840
					for (String brand : brands) {
841
						PartnerSecondaryPlanModel pspm = new PartnerSecondaryPlanModel();
842
						pspm.setAchievementPlan((long) 0);
843
						pspm.setTargetPlan((long) 0);
844
						pspm.setBrand(brand);
845
						pspm.setFofoId(fofoId);
846
						secondaryModelMap.put(brand, pspm);
847
					}
848
					ptam.setPartnerSecondaryModel(secondaryModelMap);
30077 tejbeer 849
				}
850
 
30416 tejbeer 851
				if (!partnerTicketCount.isEmpty()) {
852
					if (partnerTicketCount.get(fofoId) != null) {
853
						ptam.setTicketCount(partnerTicketCount.get(fofoId));
854
					} else {
855
						ptam.setTicketCount(0);
856
 
857
					}
858
				}
859
 
30078 tejbeer 860
				ptams.add(ptam);
861
 
30077 tejbeer 862
			}
863
 
864
			tm.setTotalPartnerTargetCollection(totalPartnerTargetCollection);
865
			tm.setTotalPartnerTargetSecondary(totalPartnerTargetSecondary);
866
			tm.setTotalPartnerSecondary(totalPartnerAchievementSecondary);
867
			tm.setTotalPartnerCollection(totalPartnerAchievementCollection);
30453 tejbeer 868
			tm.setTodayCollectionCount((int) todayCollectionCount);
30077 tejbeer 869
 
30330 tejbeer 870
			tm.setTargetAchievement(ptams.stream().sorted(Comparator.comparing(PartnerTargetAchievementModel::getRank))
30087 tejbeer 871
					.collect(Collectors.toList()));
872
 
30077 tejbeer 873
		}
874
 
875
		return responseSender.ok(tm);
876
 
877
	}
878
 
879
	@RequestMapping(value = "/target", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
880
	@ApiImplicitParams({
30294 tejbeer 881
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
30077 tejbeer 882
	public ResponseEntity<?> createPartnerTarget(HttpServletRequest request,
30294 tejbeer 883
			@RequestBody PartnerTargetAchievementModel ptam) throws ProfitMandiBusinessException {
30077 tejbeer 884
 
30089 tejbeer 885
		LOGGER.info("ptam" + ptam);
886
 
30087 tejbeer 887
		AuthUser authUser = authRepository.selectByGmailId(ptam.getCreatedBy());
30077 tejbeer 888
 
30137 tejbeer 889
		if (ptam.getCollectionCommitmentDate().isAfter(LocalDate.now())
890
				|| ptam.getCollectionCommitmentDate().isEqual(LocalDate.now())) {
891
			PartnerCollectionPlan partnerCollectionPlan = partnerCollectionPlanRepository
892
					.selectByLocalDate(LocalDate.now(), ptam.getFofoId(), true);
893
			LOGGER.info("pcp" + partnerCollectionPlan);
30077 tejbeer 894
 
30137 tejbeer 895
			if (partnerCollectionPlan == null) {
896
				if (ptam.getCollectionTarget() > 0) {
30087 tejbeer 897
 
30137 tejbeer 898
					partnerCollectionPlan = new PartnerCollectionPlan();
899
					partnerCollectionPlan.setCreateTimestamp(LocalDateTime.now());
900
					partnerCollectionPlan.setAuthId(authUser.getId());
901
					partnerCollectionPlan.setFofoId(ptam.getFofoId());
902
					partnerCollectionPlan.setActive(true);
903
					partnerCollectionPlan.setCollectionPlan(ptam.getCollectionTarget());
904
					partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
905
					partnerCollectionPlan.setCommitedTimestamp(ptam.getCollectionCommitmentDate().atStartOfDay());
906
					partnerCollectionPlanRepository.persist(partnerCollectionPlan);
30416 tejbeer 907
 
30137 tejbeer 908
				}
30087 tejbeer 909
 
30137 tejbeer 910
			} else {
30087 tejbeer 911
 
30137 tejbeer 912
				if (partnerCollectionPlan.getCollectionPlan() != ptam.getCollectionTarget()) {
913
					float totalCollectionPlan = partnerCollectionPlan.getCollectionPlan() + 10000;
914
					if (authUser.getId() == partnerCollectionPlan.getAuthId()) {
30087 tejbeer 915
 
30185 tejbeer 916
						if (authUser.getEmailId().equals("tarun.verma@smartdukaan.com")
917
								|| authUser.getEmailId().equals("rakesh.sonawane@smartdukaan.com")
918
								|| ptam.getCollectionTarget() >= totalCollectionPlan) {
30137 tejbeer 919
							partnerCollectionPlan.setCollectionPlan(ptam.getCollectionTarget());
920
							partnerCollectionPlan.setActive(true);
921
							partnerCollectionPlan
922
									.setCommitedTimestamp(ptam.getCollectionCommitmentDate().atStartOfDay());
923
							partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
924
						} else {
925
							throw new ProfitMandiBusinessException("collection target", "",
926
									"collection target should be more than " + totalCollectionPlan);
927
						}
30087 tejbeer 928
 
929
					} else {
30137 tejbeer 930
 
30185 tejbeer 931
						if (authUser.getEmailId().equals("tarun.verma@smartdukaan.com")
932
								|| authUser.getEmailId().equals("rakesh.sonawane@smartdukaan.com")
933
								|| ptam.getCollectionTarget() >= totalCollectionPlan) {
30137 tejbeer 934
 
935
							partnerCollectionPlan.setActive(false);
936
							partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
937
							partnerCollectionPlan = new PartnerCollectionPlan();
938
							partnerCollectionPlan.setCreateTimestamp(LocalDateTime.now());
939
							partnerCollectionPlan.setAuthId(authUser.getId());
940
							partnerCollectionPlan.setFofoId(ptam.getFofoId());
941
							partnerCollectionPlan.setActive(true);
942
							partnerCollectionPlan
943
									.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
944
							partnerCollectionPlan.setCollectionPlan(ptam.getCollectionTarget());
945
							partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
946
							partnerCollectionPlanRepository.persist(partnerCollectionPlan);
947
						} else {
948
							throw new ProfitMandiBusinessException("collection target", "",
949
									"collection target should be more than " + totalCollectionPlan);
950
						}
30087 tejbeer 951
					}
952
				}
30137 tejbeer 953
 
30146 tejbeer 954
				if ((LocalDate.now().atStartOfDay().equals(ptam.getCollectionCommitmentDate().atStartOfDay())
955
						|| ptam.getCollectionCommitmentDate().atStartOfDay().isAfter(LocalDate.now().atStartOfDay()))
30137 tejbeer 956
						&& partnerCollectionPlan.getCollectionPlan() == ptam.getCollectionTarget()) {
957
					partnerCollectionPlan.setCommitedTimestamp(ptam.getCollectionCommitmentDate().atStartOfDay());
958
					partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
959
				}
30416 tejbeer 960
 
30087 tejbeer 961
			}
30433 tejbeer 962
 
963
			PartnerCollectionRemark pcr = new PartnerCollectionRemark();
964
			pcr.setFofoId(ptam.getFofoId());
965
			pcr.setAuthId(authUser.getId());
966
			pcr.setMessage("Collection plan for" + ptam.getCollectionCommitmentDate());
967
			pcr.setRemark(CollectionRemark.COLLECTION_PLAN);
968
			pcr.setCreateTimestamp(LocalDateTime.now());
969
			partnerCollectionRemarkRepository.persist(pcr);
30137 tejbeer 970
		} else {
971
			throw new ProfitMandiBusinessException("Date", "",
30138 tejbeer 972
					"you can't select the back date " + ptam.getCollectionCommitmentDate());
30077 tejbeer 973
		}
974
 
975
		for (Entry<String, PartnerSecondaryPlanModel> pspm : ptam.getPartnerSecondaryModel().entrySet()) {
30087 tejbeer 976
 
30137 tejbeer 977
			if (ptam.getCollectionCommitmentDate().isAfter(LocalDate.now())
978
					|| ptam.getCollectionCommitmentDate().isEqual(LocalDate.now())) {
979
				PartnerSecondaryPlanModel plan = pspm.getValue();
980
				PartnerSecondaryPlan psp = partnerSecondaryPlanRepository.selectByLocalDateBrand(plan.getBrand(),
981
						LocalDate.now(), ptam.getFofoId(), true);
982
				LOGGER.info("psp" + psp);
30087 tejbeer 983
 
30137 tejbeer 984
				if (psp == null) {
30334 tejbeer 985
					if (plan.getTargetPlan() > 0 && plan.getTargetPlan() != null) {
30087 tejbeer 986
 
30137 tejbeer 987
						psp = new PartnerSecondaryPlan();
988
						psp.setAuthId(authUser.getId());
989
						psp.setBrand(pspm.getKey());
990
						psp.setFofoId(pspm.getValue().getFofoId());
991
						psp.setSecondaryPlan(pspm.getValue().getTargetPlan());
992
						psp.setCreateTimestamp(LocalDateTime.now());
993
						psp.setUpdatedTimestamp(LocalDateTime.now());
994
						psp.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
995
						psp.setActive(true);
996
						partnerSecondaryPlanRepository.persist(psp);
997
					}
30087 tejbeer 998
 
30137 tejbeer 999
				} else {
1000
					if (plan.getTargetPlan() != psp.getSecondaryPlan()) {
1001
						float totalSecondaryPlan = psp.getSecondaryPlan() + 10000;
1002
						if (authUser.getId() == plan.getAuthId()) {
30185 tejbeer 1003
							if (authUser.getEmailId().equals("tarun.verma@smartdukaan.com")
1004
									|| authUser.getEmailId().equals("rakesh.sonawane@smartdukaan.com")
1005
									|| plan.getTargetPlan() >= totalSecondaryPlan) {
30137 tejbeer 1006
								psp.setSecondaryPlan(pspm.getValue().getTargetPlan());
1007
								psp.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
1008
								psp.setUpdatedTimestamp(LocalDateTime.now());
1009
								psp.setActive(true);
1010
							} else {
1011
								throw new ProfitMandiBusinessException("secondary target", "",
1012
										"secondary target should be more than " + totalSecondaryPlan);
1013
							}
30087 tejbeer 1014
 
30137 tejbeer 1015
						} else {
30087 tejbeer 1016
 
30185 tejbeer 1017
							if (authUser.getEmailId().equals("tarun.verma@smartdukaan.com")
1018
									|| authUser.getEmailId().equals("rakesh.sonawane@smartdukaan.com")
1019
									|| plan.getTargetPlan() >= totalSecondaryPlan) {
30087 tejbeer 1020
 
30137 tejbeer 1021
								psp.setUpdatedTimestamp(LocalDateTime.now());
1022
								psp.setActive(false);
1023
								psp = new PartnerSecondaryPlan();
1024
								psp.setAuthId(authUser.getId());
1025
								psp.setBrand(pspm.getKey());
1026
								psp.setFofoId(pspm.getValue().getFofoId());
1027
								psp.setSecondaryPlan(pspm.getValue().getTargetPlan());
1028
								psp.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
1029
								psp.setCreateTimestamp(LocalDateTime.now());
1030
								psp.setUpdatedTimestamp(LocalDateTime.now());
1031
								psp.setActive(true);
1032
								partnerSecondaryPlanRepository.persist(psp);
1033
							} else {
1034
								throw new ProfitMandiBusinessException("secondary target", "",
1035
										"secondary target should be more than " + totalSecondaryPlan);
1036
							}
30087 tejbeer 1037
						}
1038
					}
30137 tejbeer 1039
 
30146 tejbeer 1040
					if ((LocalDate.now().atStartOfDay().equals(ptam.getSecondaryCommitmentDate().atStartOfDay())
1041
							|| ptam.getSecondaryCommitmentDate().atStartOfDay().isAfter(LocalDate.now().atStartOfDay()))
30137 tejbeer 1042
							&& plan.getTargetPlan() == psp.getSecondaryPlan()) {
1043
						psp.setCommitedTimestamp(ptam.getSecondaryCommitmentDate().atStartOfDay());
1044
						psp.setUpdatedTimestamp(LocalDateTime.now());
1045
					}
1046
 
30087 tejbeer 1047
				}
30137 tejbeer 1048
			} else {
1049
				throw new ProfitMandiBusinessException("Date", "",
30138 tejbeer 1050
						"you can't select the back date " + ptam.getSecondaryCommitmentDate());
30077 tejbeer 1051
			}
30137 tejbeer 1052
 
30077 tejbeer 1053
		}
1054
 
1055
		return responseSender.ok(true);
30137 tejbeer 1056
 
30077 tejbeer 1057
	}
1058
 
30416 tejbeer 1059
	@RequestMapping(value = "/viewTickets", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1060
	@ApiImplicitParams({
1061
 
1062
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1063
	public ResponseEntity<?> viewTickets(HttpServletRequest request, @RequestParam int fofoId)
1064
			throws ProfitMandiBusinessException {
1065
		List<Ticket> tickets = ticketRepository.selectAllOpenTicketByRetailer(fofoId);
1066
 
1067
		List<TicketViewModel> viewList = new ArrayList<>();
1068
		for (Ticket ticket : tickets) {
1069
 
1070
			TicketViewModel ticketViewModel = new TicketViewModel();
1071
			ticketViewModel.setId(ticket.getId());
1072
			TicketSubCategory ticketSubCategory = ticketSubCategoryRepository.selectById(ticket.getSubCategoryId());
1073
			TicketCategory ticketCategory = ticketCategoryRepository.selectById(ticketSubCategory.getCategoryId());
1074
 
1075
			ticketViewModel.setCategoryName(ticketCategory.getName());
1076
			ticketViewModel.setSubCategoryName(ticketSubCategory.getName());
1077
			ticketViewModel.setCreatedTimestamp(ticket.getCreateTimestamp());
1078
 
1079
			viewList.add(ticketViewModel);
1080
		}
1081
		return responseSender.ok(viewList);
1082
 
1083
	}
1084
 
1085
	@RequestMapping(value = "/viewRecentTickets", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1086
	@ApiImplicitParams({
1087
 
1088
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1089
	public ResponseEntity<?> viewRecentTickets(HttpServletRequest request, @RequestParam int fofoId)
1090
			throws ProfitMandiBusinessException {
1091
		List<TicketViewModel> viewList = ticketRepository.selectRecentClosedTicket(fofoId,
1092
				LocalDateTime.now().minusDays(20));
1093
 
1094
		return responseSender.ok(viewList);
1095
 
1096
	}
1097
 
1098
	@RequestMapping(value = "/createTicket", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1099
	@ApiImplicitParams({
1100
 
1101
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1102
	public ResponseEntity<?> createTicket(HttpServletRequest request) throws ProfitMandiBusinessException {
1103
		List<TicketCategory> ticketCategories = csService.getAllTicketCategotyFromSubCategory();
1104
		return responseSender.ok(ticketCategories);
1105
	}
1106
 
1107
	@RequestMapping(value = "/getSubCategoriesByCategoryId", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1108
	@ApiImplicitParams({
1109
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1110
 
1111
	public ResponseEntity<?> getSubCategoriesByCategoryId(HttpServletRequest request,
1112
			@RequestParam(name = "categoryId", defaultValue = "0") int categoryId, Model model) {
1113
		List<TicketSubCategory> ticketSubCategories = ticketSubCategoryRepository.selectAll(categoryId);
1114
		LOGGER.info(ticketSubCategories);
1115
		return responseSender.ok(ticketSubCategories);
1116
	}
1117
 
1118
	@RequestMapping(value = "/createTicket", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
1119
	@ApiImplicitParams({
1120
 
1121
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1122
	public ResponseEntity<?> createTicket(HttpServletRequest request, @RequestParam(name = "categoryId") int categoryId,
1123
			@RequestParam(name = "subCategoryId") int subCategoryId, @RequestParam(name = "message") String message,
1124
			@RequestParam(name = "fofoId") int fofoId) throws Exception {
1125
		List<Ticket> tickets = ticketRepository.selectAllResolvedMarkedTicketByCreator(fofoId);
1126
		if (tickets.size() > 3 || tickets.size() == 3) {
1127
			return responseSender.ok(false);
1128
		} else {
1129
			csService.createTicket(fofoId, categoryId, subCategoryId, message);
1130
 
1131
		}
1132
		return responseSender.ok(true);
1133
	}
1134
 
1135
	@RequestMapping(value = "/getCollectionRemark", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
1136
	@ApiImplicitParams({
1137
 
1138
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1139
	public ResponseEntity<?> getCollectionRemark(HttpServletRequest request) throws ProfitMandiBusinessException {
30433 tejbeer 1140
		List<CollectionRemark> remarks = Arrays.asList(CollectionRemark.values()).stream()
1141
				.filter(x -> !x.equals(CollectionRemark.COLLECTION_PLAN)).collect(Collectors.toList());
1142
		return responseSender.ok(remarks);
30416 tejbeer 1143
	}
1144
 
1145
	@RequestMapping(value = "/createPartnerColectionRemark", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
1146
	@ApiImplicitParams({
1147
 
1148
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
1149
	public ResponseEntity<?> createPartnerColectionRemark(HttpServletRequest request,
1150
			@RequestBody PartnerCollectionRemarkModel partnerCollectionRemarkModel)
1151
			throws ProfitMandiBusinessException {
1152
		AuthUser authUser = authRepository.selectByGmailId(partnerCollectionRemarkModel.getGmailId());
1153
 
1154
		PartnerCollectionRemark pcr = new PartnerCollectionRemark();
1155
		pcr.setFofoId(partnerCollectionRemarkModel.getFofoId());
1156
		pcr.setAuthId(authUser.getId());
1157
		pcr.setMessage(partnerCollectionRemarkModel.getMessage());
1158
		pcr.setRemark(partnerCollectionRemarkModel.getRemark());
1159
		pcr.setCreateTimestamp(LocalDateTime.now());
1160
		partnerCollectionRemarkRepository.persist(pcr);
1161
		return responseSender.ok(true);
1162
 
1163
	}
30433 tejbeer 1164
 
1165
	@RequestMapping(value = "/uploadFranchiseeVisit", method = RequestMethod.POST)
1166
	public ResponseEntity<?> readCsvFileAndSetLead(HttpServletRequest request, @RequestPart MultipartFile multipartFile)
1167
			throws Throwable {
1168
 
1169
		int id = (int) request.getAttribute("userId");
1170
 
1171
		LOGGER.info("id" + id);
1172
 
1173
		User user = userRepository.selectById(id);
1174
 
1175
		AuthUser authUser = authRepository.selectByEmailOrMobile(user.getEmailId());
1176
 
1177
		String fileName = multipartFile.getName();
1178
		String fileNames = multipartFile.getOriginalFilename();
1179
 
1180
		LOGGER.info("fileName" + fileName);
1181
		LOGGER.info("fileNames" + fileNames);
1182
 
1183
		List<CSVRecord> records = FileUtil.readFile(multipartFile);
1184
 
1185
		for (CSVRecord record : records) {
1186
			FranchiseeVisit franchiseeVisit = new FranchiseeVisit();
1187
			franchiseeVisit.setFofoId(Integer.parseInt(record.get(0)));
1188
			CustomRetailer customRetailer = retailerService.getFofoRetailer(Integer.parseInt(record.get(0)));
1189
 
1190
			franchiseeVisit.setPartnerName(customRetailer.getBusinessName());
1191
			franchiseeVisit.setAgenda(record.get(1));
1192
			franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
1193
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
1194
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
1195
 
1196
			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
1197
			LOGGER.info(record.get(1));
1198
			LocalDate dateTime = LocalDate.parse(record.get(2), formatter);
1199
 
1200
			franchiseeVisit.setSchelduleTimestamp(dateTime.atStartOfDay());
1201
			// change
1202
 
1203
			String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
1204
			franchiseeVisit.setCreatedBy(authUserName);
1205
			franchiseeVisit.setAuthId(authUser.getId());
1206
 
1207
			franchiseeVisitRepository.persist(franchiseeVisit);
1208
 
1209
			return responseSender.ok(true);
1210
		}
1211
 
1212
		return responseSender.ok(true);
1213
 
1214
	}
30077 tejbeer 1215
}