Subversion Repositories SmartDukaan

Rev

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