Subversion Repositories SmartDukaan

Rev

Rev 30078 | Rev 30089 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
25899 tejbeer 1
package com.spice.profitmandi.web.controller;
2
 
29434 amit.gupta 3
import java.time.LocalDate;
25899 tejbeer 4
import java.time.LocalDateTime;
29446 amit.gupta 5
import java.time.LocalTime;
25952 tejbeer 6
import java.util.ArrayList;
29434 amit.gupta 7
import java.util.Arrays;
30087 tejbeer 8
import java.util.Comparator;
9
import java.util.HashMap;
25899 tejbeer 10
import java.util.List;
25952 tejbeer 11
import java.util.Map;
30077 tejbeer 12
import java.util.Map.Entry;
25952 tejbeer 13
import java.util.Set;
28935 tejbeer 14
import java.util.stream.Collectors;
25899 tejbeer 15
 
16
import javax.servlet.http.HttpServletRequest;
17
 
18
import org.apache.logging.log4j.LogManager;
19
import org.apache.logging.log4j.Logger;
20
import org.springframework.beans.factory.annotation.Autowired;
21
import org.springframework.format.annotation.DateTimeFormat;
22
import org.springframework.http.MediaType;
23
import org.springframework.http.ResponseEntity;
24
import org.springframework.stereotype.Controller;
25
import org.springframework.transaction.annotation.Transactional;
28935 tejbeer 26
import org.springframework.ui.Model;
25899 tejbeer 27
import org.springframework.web.bind.annotation.RequestBody;
28
import org.springframework.web.bind.annotation.RequestMapping;
29
import org.springframework.web.bind.annotation.RequestMethod;
30
import org.springframework.web.bind.annotation.RequestParam;
31
 
32
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
25952 tejbeer 33
import com.spice.profitmandi.common.model.CustomRetailer;
27117 tejbeer 34
import com.spice.profitmandi.common.model.ProfitMandiConstants;
30087 tejbeer 35
import com.spice.profitmandi.common.services.mandii.TransactionSummaryResponseOut;
25899 tejbeer 36
import com.spice.profitmandi.common.web.util.ResponseSender;
37
import com.spice.profitmandi.dao.entity.auth.AuthUser;
30077 tejbeer 38
import com.spice.profitmandi.dao.entity.auth.PartnerCollectionPlan;
39
import com.spice.profitmandi.dao.entity.auth.PartnerSecondaryPlan;
25899 tejbeer 40
import com.spice.profitmandi.dao.entity.dtr.User;
25952 tejbeer 41
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
28935 tejbeer 42
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
30087 tejbeer 43
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
28935 tejbeer 44
import com.spice.profitmandi.dao.entity.fofo.PartnerOnBoardingPanel;
25952 tejbeer 45
import com.spice.profitmandi.dao.entity.user.FranchiseeActivity;
46
import com.spice.profitmandi.dao.entity.user.FranchiseeVisit;
25899 tejbeer 47
import com.spice.profitmandi.dao.entity.user.Lead;
48
import com.spice.profitmandi.dao.entity.user.LeadActivity;
25952 tejbeer 49
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeActivityStatus;
50
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeVisitStatus;
25899 tejbeer 51
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
28935 tejbeer 52
import com.spice.profitmandi.dao.enumuration.dtr.StoreTimeline;
25979 tejbeer 53
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
28935 tejbeer 54
import com.spice.profitmandi.dao.model.OnBoardingTimelineModel;
30077 tejbeer 55
import com.spice.profitmandi.dao.model.PartnerCollectionPlanModel;
56
import com.spice.profitmandi.dao.model.PartnerSecondaryPlanModel;
57
import com.spice.profitmandi.dao.model.PartnerTargetAchievementModel;
58
import com.spice.profitmandi.dao.model.TargetModel;
28935 tejbeer 59
import com.spice.profitmandi.dao.model.UserCart;
25899 tejbeer 60
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
30077 tejbeer 61
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionPlanRepository;
62
import com.spice.profitmandi.dao.repository.auth.PartnerSecondaryPlanRepository;
25952 tejbeer 63
import com.spice.profitmandi.dao.repository.cs.CsService;
30077 tejbeer 64
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
28935 tejbeer 65
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
25952 tejbeer 66
import com.spice.profitmandi.dao.repository.dtr.FranchiseeActivityRepository;
67
import com.spice.profitmandi.dao.repository.dtr.FranchiseeVisitRepository;
25899 tejbeer 68
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
69
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
28935 tejbeer 70
import com.spice.profitmandi.dao.repository.dtr.PartnerOnBoardingPanelRepository;
25952 tejbeer 71
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
25899 tejbeer 72
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
30087 tejbeer 73
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
30077 tejbeer 74
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
75
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
25952 tejbeer 76
import com.spice.profitmandi.service.user.RetailerService;
28935 tejbeer 77
import com.spice.profitmandi.service.user.StoreTimelineTatService;
25952 tejbeer 78
import com.spice.profitmandi.web.req.CreateFranchiseeRequest;
79
import com.spice.profitmandi.web.res.Partner;
25899 tejbeer 80
 
81
import io.swagger.annotations.ApiImplicitParam;
82
import io.swagger.annotations.ApiImplicitParams;
83
 
84
@Controller
85
@Transactional(rollbackFor = Throwable.class)
86
public class LeadController {
87
	private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
88
	@Autowired
89
	private ResponseSender<?> responseSender;
90
 
91
	@Autowired
92
	private AuthRepository authRepository;
93
 
94
	@Autowired
95
	private LeadRepository leadRepository;
96
 
97
	@Autowired
25952 tejbeer 98
	private CsService csService;
99
 
100
	@Autowired
101
	private UserRepository userRepository;
102
 
103
	@Autowired
104
	private UserAccountRepository userAccountRepository;
105
 
106
	@Autowired
107
	private com.spice.profitmandi.dao.repository.user.UserRepository userUserRepository;
108
 
109
	@Autowired
110
	private RetailerService retailerService;
111
 
112
	@Autowired
25899 tejbeer 113
	private LeadActivityRepository leadActivityRepository;
114
 
25952 tejbeer 115
	@Autowired
116
	private FranchiseeVisitRepository franchiseeVisitRepository;
117
 
118
	@Autowired
119
	private FranchiseeActivityRepository franchiseeActivityRepository;
120
 
28935 tejbeer 121
	@Autowired
122
	private PartnerOnBoardingPanelRepository partnerOnBoardingPanelRepository;
123
 
124
	@Autowired
125
	private FofoStoreRepository fofoStoreRepository;
126
 
127
	@Autowired
128
	private StoreTimelineTatService storeTimelineTatService;
129
 
25899 tejbeer 130
	@RequestMapping(value = "/lead", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
131
	@ApiImplicitParams({
132
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
133
	public ResponseEntity<?> LeadUser(HttpServletRequest request,
134
			@RequestBody CreateRefferalRequest createRefferalRequest) throws Exception {
135
		Lead lead = new Lead();
136
		lead.setFirstName(createRefferalRequest.getFirstName());
137
		lead.setLastName(createRefferalRequest.getLastName());
138
		lead.setLeadMobile(createRefferalRequest.getMobile());
139
		lead.setState(createRefferalRequest.getState());
140
		lead.setCity(createRefferalRequest.getCity());
141
		lead.setAddress(createRefferalRequest.getAddress());
142
		lead.setCreatedTimestamp(LocalDateTime.now());
143
		lead.setUpdatedTimestamp(LocalDateTime.now());
144
		lead.setStatus(createRefferalRequest.getStatus());
25979 tejbeer 145
		lead.setSource(createRefferalRequest.getSource());
28201 tejbeer 146
		lead.setNotinterestedReason(createRefferalRequest.getReason());
26244 tejbeer 147
		if (createRefferalRequest.getColorCheck() == true) {
148
			lead.setColor("Green");
149
		} else {
150
			lead.setColor("Yellow");
151
		}
25900 amit.gupta 152
		AuthUser authUser = authRepository.selectByGmailId(createRefferalRequest.getReffereeEmail());
153
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
154
		lead.setCreatedBy(authUserName);
155
		lead.setAuthId(authUser.getId());
25981 tejbeer 156
		lead.setAssignTo(authUser.getId());
25899 tejbeer 157
 
158
		leadRepository.persist(lead);
159
		LeadActivity leadActivity = new LeadActivity();
160
		leadActivity.setLeadId(lead.getId());
161
		leadActivity.setRemark(createRefferalRequest.getRemark());
162
 
163
		if (createRefferalRequest.getStatus().equals(LeadStatus.followUp)) {
164
			leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
26958 tejbeer 165
			leadActivity.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
27025 tejbeer 166
			lead.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
25899 tejbeer 167
		} else {
168
			leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 169
			leadActivity.setClosureTimestamp(null);
27025 tejbeer 170
			lead.setClosureTimestamp(null);
25899 tejbeer 171
		}
172
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
173
		leadActivityRepository.persist(leadActivity);
174
 
175
		return responseSender.ok(true);
176
	}
177
 
178
	@RequestMapping(value = "/lead-description", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
179
	@ApiImplicitParams({
180
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
181
	public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId,
29331 tejbeer 182
			@RequestParam(name = "status") LeadStatus status) throws ProfitMandiBusinessException {
25899 tejbeer 183
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
29434 amit.gupta 184
		List<Lead> leads = null;
185
		if (status.equals(LeadStatus.followUp)) {
30077 tejbeer 186
			leads = leadRepository.selectLeadsScheduledBetweenDate(Arrays.asList(authUser.getId()),
187
					LocalDate.now().atStartOfDay().minusDays(30), LocalDate.now().plusDays(3).atTime(LocalTime.MAX));
29434 amit.gupta 188
		} else {
189
			leads = leadRepository.selectByAssignAuthIdAndStatus(authUser.getId(), status);
190
		}
25979 tejbeer 191
 
25899 tejbeer 192
		return responseSender.ok(leads);
193
 
194
	}
195
 
196
	@RequestMapping(value = "/getlead", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
197
	@ApiImplicitParams({
198
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
199
	public ResponseEntity<?> getLead(HttpServletRequest request, @RequestParam(name = "id") int id)
200
			throws ProfitMandiBusinessException {
201
 
202
		List<LeadActivity> leadActivities = leadActivityRepository.selectBYLeadId(id);
29317 tejbeer 203
		Lead lead = leadRepository.selectById(id);
204
		lead.setLeadActivities(leadActivities);
205
		return responseSender.ok(lead);
25899 tejbeer 206
 
207
	}
208
 
25948 amit.gupta 209
	@RequestMapping(value = "/leadUpdate", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
25899 tejbeer 210
	@ApiImplicitParams({
211
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
212
	public ResponseEntity<?> leadUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
26244 tejbeer 213
			@RequestParam(name = "status") LeadStatus status, @RequestParam(name = "colorCheck") Boolean colorCheck,
28201 tejbeer 214
			@RequestParam(name = "remark") String remark, @RequestParam(name = "reason") String reason,
26958 tejbeer 215
			@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp,
216
			@RequestParam(name = "closureTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime closureTimestamp)
25899 tejbeer 217
			throws ProfitMandiBusinessException {
218
 
219
		Lead lead = leadRepository.selectById(id);
220
 
221
		LeadActivity leadActivity = new LeadActivity();
26250 tejbeer 222
		lead.setStatus(status);
28201 tejbeer 223
		lead.setNotinterestedReason(reason);
26250 tejbeer 224
		leadActivity.setRemark(remark);
225
		leadActivity.setLeadId(id);
226
		leadActivity.setCreatedTimestamp(LocalDateTime.now());
227
		leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 228
		leadActivity.setClosureTimestamp(null);
26250 tejbeer 229
		lead.setUpdatedTimestamp(LocalDateTime.now());
230
		if (colorCheck == true) {
231
			lead.setColor("Green");
232
		} else {
233
			lead.setColor("Yellow");
234
		}
235
		if (status == LeadStatus.followUp) {
25899 tejbeer 236
 
237
			leadActivity.setSchelduleTimestamp(schelduleTimestamp);
26958 tejbeer 238
			leadActivity.setClosureTimestamp(closureTimestamp);
27025 tejbeer 239
			lead.setClosureTimestamp(closureTimestamp);
26250 tejbeer 240
 
25899 tejbeer 241
		} else {
26250 tejbeer 242
 
25899 tejbeer 243
			leadActivity.setSchelduleTimestamp(null);
26958 tejbeer 244
			leadActivity.setClosureTimestamp(null);
27025 tejbeer 245
			lead.setClosureTimestamp(null);
26244 tejbeer 246
 
25899 tejbeer 247
		}
26250 tejbeer 248
		leadActivityRepository.persist(leadActivity);
25899 tejbeer 249
		return responseSender.ok(true);
250
 
251
	}
25952 tejbeer 252
 
27117 tejbeer 253
	@RequestMapping(value = ProfitMandiConstants.URL_NEW_LEAD, method = RequestMethod.POST)
254
	public ResponseEntity<?> newLead(HttpServletRequest request,
27597 amit.gupta 255
			@RequestBody CreateRefferalRequest createRefferalRequest) throws ProfitMandiBusinessException {
27117 tejbeer 256
		LOGGER.info("requested url : " + request.getRequestURL().toString());
257
		Lead lead = new Lead();
258
		lead.setAddress(createRefferalRequest.getCity());
27625 tejbeer 259
		Long.parseLong(createRefferalRequest.getMobile());
28201 tejbeer 260
		if (createRefferalRequest.getMobile().length() != 10) {
261
			throw new ProfitMandiBusinessException("Mobile Number", createRefferalRequest.getMobile(),
262
					"Number should be of 10 digits");
27597 amit.gupta 263
		}
27117 tejbeer 264
		lead.setLeadMobile(createRefferalRequest.getMobile());
265
		lead.setCity(createRefferalRequest.getCity());
266
		lead.setState(createRefferalRequest.getState());
267
		lead.setLastName(createRefferalRequest.getLastName());
268
		if (lead.getState().equals("Uttar Pradesh")) {
29276 amit.gupta 269
			lead.setAssignTo(53);
27117 tejbeer 270
		} else if (lead.getState().equals("Haryana")) {
29276 amit.gupta 271
			lead.setAssignTo(53);
27117 tejbeer 272
		} else if (lead.getState().equals("Delhi")) {
29276 amit.gupta 273
			lead.setAssignTo(53);
27117 tejbeer 274
		} else {
28201 tejbeer 275
			// Assign to sm
27992 amit.gupta 276
			lead.setAssignTo(53);
28201 tejbeer 277
			// Assign to neha
278
			// lead.setAssignTo(1);
27117 tejbeer 279
		}
280
		lead.setAuthId(lead.getAssignTo());
281
		lead.setCreatedBy("daily-sync");
282
		lead.setSource("SD-WEB");
283
		lead.setFirstName(createRefferalRequest.getFirstName());
284
		lead.setStatus(LeadStatus.followUp);
285
		lead.setColor("yellow");
286
		lead.setCreatedTimestamp(LocalDateTime.now());
287
		lead.setUpdatedTimestamp(LocalDateTime.now());
288
		leadRepository.persist(lead);
289
 
290
		return responseSender.ok(true);
291
 
292
	}
293
 
25952 tejbeer 294
	@RequestMapping(value = "/getPartnersList", method = RequestMethod.GET)
295
	@ApiImplicitParams({
296
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
297
	public ResponseEntity<?> getPartners(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId)
298
			throws ProfitMandiBusinessException {
299
 
25973 tejbeer 300
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
25952 tejbeer 301
 
302
		Map<String, Set<String>> storeGuyMap = csService.getAuthUserPartnerEmailMapping();
303
 
30077 tejbeer 304
		Set<String> emails = storeGuyMap.get("ankit.bhatia@smartdukaan.com");
25952 tejbeer 305
		LOGGER.info("emails" + emails);
306
		List<User> users = userRepository.selectAllByEmailIds(new ArrayList<>(emails));
307
		List<Partner> partners = new ArrayList<>();
308
		for (User user : users) {
309
 
310
			UserAccount uc = userAccountRepository.selectSaholicByUserId(user.getId());
311
			com.spice.profitmandi.dao.entity.user.User userInfo = userUserRepository.selectById(uc.getAccountKey());
312
			CustomRetailer customRetailer = retailerService.getFofoRetailer(userInfo.getId());
313
 
314
			Partner partner = new Partner();
315
			partner.setBusinessName(customRetailer.getBusinessName());
316
			partner.setPartnerId(customRetailer.getPartnerId());
317
			partner.setCartId(customRetailer.getCartId());
318
			partner.setEmail(customRetailer.getEmail());
319
			partner.setGstNumber(customRetailer.getGstNumber());
320
			partner.setDisplayName(customRetailer.getDisplayName());
321
			partner.setCity(customRetailer.getAddress().getCity());
322
			partner.setUserId(user.getId());
323
			partners.add(partner);
324
		}
325
		LOGGER.info("partners" + partners);
326
		return responseSender.ok(partners);
327
	}
328
 
329
	@RequestMapping(value = "/franchise-first-visit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
330
	@ApiImplicitParams({
331
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
332
	public ResponseEntity<?> FranchiseFirstVisit(HttpServletRequest request,
333
			@RequestBody CreateFranchiseeRequest createFranchiseeRequest) throws Exception {
334
 
335
		FranchiseeVisit franchiseeVisit = new FranchiseeVisit();
336
		franchiseeVisit.setFofoId(createFranchiseeRequest.getFofoId());
337
		CustomRetailer customRetailer = retailerService.getFofoRetailer(createFranchiseeRequest.getFofoId());
338
 
339
		franchiseeVisit.setPartnerName(customRetailer.getBusinessName());
340
		franchiseeVisit.setAgenda(createFranchiseeRequest.getAgenda());
341
		franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
342
		franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
343
		franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
344
		franchiseeVisit.setSchelduleTimestamp(createFranchiseeRequest.getFirstSchelduleTimestamp());
345
		// change
25973 tejbeer 346
		AuthUser authUser = authRepository.selectByGmailId(createFranchiseeRequest.getCreatedBy());
25952 tejbeer 347
 
348
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
349
		franchiseeVisit.setCreatedBy(authUserName);
350
		franchiseeVisit.setAuthId(authUser.getId());
351
 
352
		franchiseeVisitRepository.persist(franchiseeVisit);
353
 
354
		return responseSender.ok(true);
355
	}
356
 
357
	@RequestMapping(value = "/franchise-visit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
358
	@ApiImplicitParams({
359
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
360
	public ResponseEntity<?> FranchiseVisit(HttpServletRequest request,
361
			@RequestBody CreateFranchiseeRequest createFranchiseeRequest) throws Exception {
362
 
363
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(createFranchiseeRequest.getId());
364
		franchiseeVisit.setFofoId(createFranchiseeRequest.getFofoId());
365
		CustomRetailer customRetailer = retailerService.getFofoRetailer(createFranchiseeRequest.getFofoId());
366
 
367
		franchiseeVisit.setPartnerName(customRetailer.getBusinessName());
368
		franchiseeVisit.setAgenda(createFranchiseeRequest.getAgenda());
369
		franchiseeVisit.setPartnerRemark(createFranchiseeRequest.getPartnerRemark());
370
		franchiseeVisit.setOutsideVisibity(createFranchiseeRequest.getOutsideVisibity());
371
		franchiseeVisit.setInstoreVisibility(createFranchiseeRequest.getInstoreVisibility());
372
		franchiseeVisit.setOutsideStock(createFranchiseeRequest.getOutsideStock());
373
		franchiseeVisit.setSystemKnowledge(createFranchiseeRequest.getSystemKnowledge());
374
		franchiseeVisit.setWorkingDevice(createFranchiseeRequest.getWorkingDevice());
375
		franchiseeVisit.setWorkingPrinter(createFranchiseeRequest.getWorkingPrinter());
376
		franchiseeVisit.setCarryBags(createFranchiseeRequest.getCarryBags());
377
		franchiseeVisit.setSmartdukaanTshirt(createFranchiseeRequest.getSmartdukaanTshirt());
378
		franchiseeVisit.setLatestDummies(createFranchiseeRequest.getLatestDummies());
379
		franchiseeVisit.setInvestment(createFranchiseeRequest.getInvestment());
380
		franchiseeVisit.setMtd(createFranchiseeRequest.getMtd());
381
		franchiseeVisit.setHygiene(createFranchiseeRequest.getHygiene());
382
		franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
383
		franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
384
		if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
385
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
386
		} else {
387
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
388
		}
389
 
390
		// AuthUser authUser =
391
		// authRepository.selectByGmailId(createFranchiseeRequest.getCreatedBy());
392
		// change
25973 tejbeer 393
		AuthUser authUser = authRepository.selectByGmailId(createFranchiseeRequest.getCreatedBy());
25952 tejbeer 394
 
395
		String authUserName = authUser.getFirstName() + " " + authUser.getLastName();
396
		franchiseeVisit.setCreatedBy(authUserName);
397
		franchiseeVisit.setAuthId(authUser.getId());
398
 
399
		franchiseeVisitRepository.persist(franchiseeVisit);
400
 
401
		FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
402
		franchiseeActivity.setAction(createFranchiseeRequest.getAction());
403
		franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
404
		franchiseeActivity.setResolution(createFranchiseeRequest.getResolution());
405
		if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
406
			franchiseeActivity.setSchelduleTimestamp(createFranchiseeRequest.getSchelduleTimestamp());
407
		} else {
408
			franchiseeActivity.setSchelduleTimestamp(null);
409
		}
410
		franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
411
		franchiseeActivityRepository.persist(franchiseeActivity);
412
 
413
		franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
414
		return responseSender.ok(true);
415
	}
416
 
417
	@RequestMapping(value = "/getFranchiseVisit", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
418
	@ApiImplicitParams({
419
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
420
	public ResponseEntity<?> getFranchiseVisit(HttpServletRequest request,
421
			@RequestParam(name = "gmailId") String gmailId, @RequestParam(name = "status") FranchiseeVisitStatus status,
422
			@RequestParam(name = "offset", defaultValue = "0") int offset,
423
			@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
25973 tejbeer 424
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
25952 tejbeer 425
 
426
		List<FranchiseeVisit> franchiseeVisits = franchiseeVisitRepository.selectByAuthIdAndStatus(authUser.getId(),
427
				status, offset, limit);
428
 
429
		for (FranchiseeVisit fv : franchiseeVisits) {
430
			if (fv.getFranchiseActivityId() != 0) {
431
				FranchiseeActivity fA = franchiseeActivityRepository.selectById(fv.getFranchiseActivityId());
432
				fv.setFranchiseeActivity(fA);
433
			}
434
		}
435
 
436
		return responseSender.ok(franchiseeVisits);
437
 
438
	}
439
 
440
	@RequestMapping(value = "/getFranchiseActivity", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
441
	@ApiImplicitParams({
442
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
443
	public ResponseEntity<?> getFranchiseActivity(HttpServletRequest request, @RequestParam(name = "id") int id)
444
			throws ProfitMandiBusinessException {
445
 
446
		List<FranchiseeActivity> franchiseeActivities = franchiseeActivityRepository.selectByFranchiseeVisitId(id);
447
 
448
		return responseSender.ok(franchiseeActivities);
449
 
450
	}
451
 
452
	@RequestMapping(value = "/getFranchiseeInfo", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
453
	@ApiImplicitParams({
454
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
455
	public ResponseEntity<?> getFranchiseeInfo(HttpServletRequest request, @RequestParam(name = "id") int id)
456
			throws ProfitMandiBusinessException {
457
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
458
 
459
		return responseSender.ok(franchiseeVisit);
460
 
461
	}
462
 
463
	@RequestMapping(value = "/franchise-visit-update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
464
	@ApiImplicitParams({
465
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
466
	public ResponseEntity<?> franchiseVisitUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
467
			@RequestParam(name = "action") FranchiseeActivityStatus action,
468
			@RequestParam(name = "resolution") String resolution,
469
			@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp)
470
			throws ProfitMandiBusinessException {
471
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
472
 
473
		FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
474
 
475
		if (action == FranchiseeActivityStatus.FOLLOWUP) {
476
			franchiseeActivity.setResolution(resolution);
477
			franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
478
			franchiseeActivity.setAction(action);
479
			franchiseeActivity.setSchelduleTimestamp(schelduleTimestamp);
480
			franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
481
			franchiseeActivityRepository.persist(franchiseeActivity);
482
			franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
483
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
484
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
485
			franchiseeVisitRepository.persist(franchiseeVisit);
486
 
487
		} else {
488
			franchiseeActivity.setResolution(resolution);
489
			franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
490
			franchiseeActivity.setAction(action);
491
			franchiseeActivity.setSchelduleTimestamp(null);
492
			franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
493
			franchiseeActivityRepository.persist(franchiseeActivity);
494
			franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
495
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
496
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
497
			franchiseeVisitRepository.persist(franchiseeVisit);
498
 
499
		}
500
 
501
		return responseSender.ok(true);
502
 
503
	}
28935 tejbeer 504
 
505
	@RequestMapping(value = "/onBoardingTimelineStatus", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
506
	@ApiImplicitParams({
507
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
508
	public ResponseEntity<?> onBoardingTimelineStatus(HttpServletRequest request, Model model)
509
			throws ProfitMandiBusinessException {
510
		int userId = (int) request.getAttribute("userId");
511
		UserCart uc = userAccountRepository.getUserCart(userId);
512
		FofoStore fs = fofoStoreRepository.selectByRetailerId(uc.getUserId());
513
		PartnerOnBoardingPanel partnerOnBoardingPanel = partnerOnBoardingPanelRepository.selectByCode(fs.getCode());
514
		Map<StoreTimeline, OnBoardingTimelineModel> timelineStatus = null;
515
		LOGGER.info("partnerOnBoardingPanel" + partnerOnBoardingPanel);
516
		if (partnerOnBoardingPanel != null) {
517
 
518
			timelineStatus = storeTimelineTatService.getTimeline(partnerOnBoardingPanel.getId());
519
		}
520
		List<OnBoardingTimelineModel> onBoardingModel = new ArrayList<>();
521
		if (timelineStatus != null) {
522
			onBoardingModel = timelineStatus.values().stream().skip(2).map(x -> x).collect(Collectors.toList());
523
		}
524
		return responseSender.ok(onBoardingModel);
525
 
526
	}
28982 tejbeer 527
 
528
	@RequestMapping(value = "/onBoardingTimelineVisibility", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
529
	@ApiImplicitParams({
530
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
531
	public ResponseEntity<?> onBoardingTimelineVisibility(HttpServletRequest request, Model model)
532
			throws ProfitMandiBusinessException {
533
		int userId = (int) request.getAttribute("userId");
534
		UserCart uc = userAccountRepository.getUserCart(userId);
535
 
536
		FofoStore fs = fofoStoreRepository.selectByRetailerId(uc.getUserId());
537
		PartnerOnBoardingPanel partnerOnBoardingPanel = partnerOnBoardingPanelRepository.selectByCode(fs.getCode());
538
		boolean status = true;
539
		if (partnerOnBoardingPanel != null) {
540
 
541
			status = storeTimelineTatService.getTimelineCompleted(partnerOnBoardingPanel.getId());
542
		}
543
 
28983 tejbeer 544
		LOGGER.info("status" + status);
545
 
28982 tejbeer 546
		return responseSender.ok(status);
547
 
548
	}
30077 tejbeer 549
 
550
	@Autowired
551
	private OrderRepository orderRepository;
552
 
553
	@Autowired
554
	private PositionRepository positionRepository;
555
 
556
	@Autowired
557
	private UserWalletRepository userWalletRepository;
558
 
559
	@Autowired
560
	private PartnerCollectionPlanRepository partnerCollectionPlanRepository;
561
 
562
	@Autowired
563
	private PartnerSecondaryPlanRepository partnerSecondaryPlanRepository;
564
 
30087 tejbeer 565
	@Autowired
566
	private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
567
 
30077 tejbeer 568
	@RequestMapping(value = "/getPartnerTarget", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
569
	@ApiImplicitParams({
570
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
571
	public ResponseEntity<?> getPartnerTarget(HttpServletRequest request,
30087 tejbeer 572
			@RequestParam(name = "gmailId") String gmailId, @RequestParam String dayValue)
573
			throws ProfitMandiBusinessException {
30077 tejbeer 574
 
575
		AuthUser authUser = authRepository.selectByGmailId(gmailId);
576
 
577
		Map<String, Set<Integer>> storeGuyMap = csService.getAuthUserPartnerIdMapping();
578
 
30087 tejbeer 579
		Set<Integer> fofoIds = storeGuyMap.get(authUser.getEmailId());
30077 tejbeer 580
 
30078 tejbeer 581
		LOGGER.info("fofoIds" + fofoIds);
582
 
30077 tejbeer 583
		List<String> brands = Arrays.asList("Vivo", "Samsung", "Oppo", "Itel", "Others");
584
		float totalPartnerTargetSecondary = 0;
585
		float totalPartnerTargetCollection = 0;
586
		float totalPartnerAchievementSecondary = 0;
587
		float totalPartnerAchievementCollection = 0;
588
		TargetModel tm = new TargetModel();
30087 tejbeer 589
		Map<Integer, PartnerDailyInvestment> partnerDailyInvestmentMap = new HashMap<>();
30077 tejbeer 590
 
591
		List<PartnerTargetAchievementModel> ptams = new ArrayList<>();
592
 
593
		if (fofoIds.size() > 0 && fofoIds != null) {
30087 tejbeer 594
			List<Integer> fofoIdl = new ArrayList<>(fofoIds);
595
			List<Integer> fofoIdList = fofoStoreRepository.selectByRetailerIds(fofoIdl).stream()
596
					.filter(x -> !x.isInternal()).map(x -> x.getId()).collect(Collectors.toList());
30077 tejbeer 597
 
598
			LocalDateTime startDate = LocalDate.now().atStartOfDay();
30087 tejbeer 599
			LocalDateTime endDate = LocalDate.now().atTime(LocalTime.MAX);
30077 tejbeer 600
 
30087 tejbeer 601
			if (dayValue.equals("previous")) {
602
				startDate = LocalDate.now().minusDays(1).atStartOfDay();
603
				endDate = LocalDate.now().minusDays(1).atTime(LocalTime.MAX);
604
			}
605
 
606
			List<PartnerDailyInvestment> partnerDailyInvestments = partnerDailyInvestmentRepository
607
					.selectAll(fofoIdList, startDate.minusDays(3).toLocalDate());
608
			if (!partnerDailyInvestments.isEmpty()) {
609
				partnerDailyInvestmentMap = partnerDailyInvestments.stream()
610
						.collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
611
			}
612
 
30077 tejbeer 613
			Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(fofoIdList);
614
 
615
			Map<Integer, PartnerCollectionPlanModel> collectionPlans = userWalletRepository
30087 tejbeer 616
					.getPartnerWiseTargetCollections(fofoIdList, startDate, endDate).stream()
30077 tejbeer 617
					.collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
618
 
619
			LOGGER.info("collectionPlans {}", collectionPlans);
620
 
621
			Map<Integer, List<PartnerSecondaryPlanModel>> partnerSecondayPlans = orderRepository
30087 tejbeer 622
					.selectPartnerSecondaryGroupByBrand(fofoIdList, startDate, endDate).stream()
30077 tejbeer 623
					.collect(Collectors.groupingBy(x -> x.getFofoId()));
624
 
625
			LOGGER.info("partnerSecondayPlans {}", partnerSecondayPlans);
626
			for (Entry<Integer, CustomRetailer> customRetailerEntry : customRetailers.entrySet()) {
627
				int fofoId = customRetailerEntry.getKey();
628
				CustomRetailer customRetailer = customRetailerEntry.getValue();
629
				float totalSecondaryPlan = 0;
630
				float totalSecondaryAchivement = 0;
631
 
632
				PartnerTargetAchievementModel ptam = new PartnerTargetAchievementModel();
633
				ptam.setFofoId(fofoId);
634
				ptam.setBusinessName(customRetailer.getBusinessName());
635
 
30087 tejbeer 636
				if (partnerDailyInvestmentMap.get(fofoId) != null) {
637
					ptam.setWalletAmount(partnerDailyInvestmentMap.get(fofoId).getWalletAmount());
638
					ptam.setShortInvestment(partnerDailyInvestmentMap.get(fofoId).getShortInvestment());
639
				}
640
 
30077 tejbeer 641
				if (collectionPlans.get(fofoId) != null) {
30087 tejbeer 642
					Integer authId = collectionPlans.get(fofoId).getAuthId();
643
					LOGGER.info("authId" + authId);
644
					if (authId != null && authId == authUser.getId()) {
30077 tejbeer 645
 
30087 tejbeer 646
						if (collectionPlans.get(fofoId).getTargetPlan() != null) {
647
							totalPartnerTargetCollection += collectionPlans.get(fofoId).getTargetPlan();
648
						}
649
						if (collectionPlans.get(fofoId).getAchievementPlan() != null) {
650
							totalPartnerAchievementCollection += collectionPlans.get(fofoId).getAchievementPlan();
651
						}
652
 
653
					}
654
 
655
					if (authId != null && authId != authUser.getId()) {
656
						ptam.setAuthUser(authRepository.selectById(authId));
657
						ptam.setCollectionColor("red");
658
					}
659
					if (collectionPlans.get(fofoId).getTargetPlan() != null) {
660
 
661
						ptam.setCollectionTarget(collectionPlans.get(fofoId).getTargetPlan());
662
					}
663
 
664
					if (collectionPlans.get(fofoId).getAchievementPlan() != null) {
665
						ptam.setCollectionAchievement(collectionPlans.get(fofoId).getAchievementPlan());
666
					}
30077 tejbeer 667
				}
668
 
669
				PartnerSecondaryPlanModel otherPartnerSecondaryPlanModel = null;
30087 tejbeer 670
				Map<String, PartnerSecondaryPlanModel> secondaryModelMap = new HashMap<>();
30077 tejbeer 671
				if (partnerSecondayPlans.get(fofoId) != null) {
30087 tejbeer 672
 
30077 tejbeer 673
					long otherBrandSecondary = 0;
674
					for (PartnerSecondaryPlanModel pspm : partnerSecondayPlans.get(fofoId)) {
30087 tejbeer 675
 
676
						Integer authId = pspm.getAuthId();
677
 
30077 tejbeer 678
						if (!brands.contains(pspm.getBrand())) {
30087 tejbeer 679
							if (pspm.getAchievementPlan() != null) {
680
								otherBrandSecondary += pspm.getAchievementPlan();
681
							}
30077 tejbeer 682
						} else {
683
							otherPartnerSecondaryPlanModel = pspm;
684
						}
30087 tejbeer 685
 
686
						if (pspm.getTargetPlan() != null) {
687
 
688
							totalSecondaryPlan += pspm.getTargetPlan();
689
						}
690
 
691
						if (pspm.getAchievementPlan() != null) {
692
							totalSecondaryAchivement += pspm.getAchievementPlan();
693
						}
694
						if (authId != null && authId == authUser.getId()) {
695
 
696
							if (pspm.getTargetPlan() != null) {
697
 
698
								totalPartnerTargetSecondary += pspm.getTargetPlan();
699
							}
700
 
701
							if (pspm.getAchievementPlan() != null) {
702
								totalPartnerAchievementSecondary += pspm.getAchievementPlan();
703
							}
704
 
705
						}
30077 tejbeer 706
					}
707
					if (otherPartnerSecondaryPlanModel != null) {
708
						otherPartnerSecondaryPlanModel.setAchievementPlan(otherBrandSecondary);
709
					}
30087 tejbeer 710
					secondaryModelMap = partnerSecondayPlans.get(fofoId).stream()
30077 tejbeer 711
							.filter(x -> brands.contains(x.getBrand()))
712
							.collect(Collectors.toMap(x -> x.getBrand(), x -> x));
713
 
714
					if (secondaryModelMap.containsKey("Others")) {
715
						PartnerSecondaryPlanModel psp = secondaryModelMap.get("Others");
716
						psp.setAchievementPlan(otherBrandSecondary);
717
					} else {
30087 tejbeer 718
						secondaryModelMap.put("Others", new PartnerSecondaryPlanModel(fofoId, "Others", (long) 0,
719
								otherBrandSecondary, authUser.getId()));
30077 tejbeer 720
					}
721
					for (String brand : brands) {
722
 
723
						if (!secondaryModelMap.containsKey(brand)) {
30087 tejbeer 724
							secondaryModelMap.put(brand,
725
									new PartnerSecondaryPlanModel(fofoId, brand, (long) 0, (long) 0, authUser.getId()));
30077 tejbeer 726
						}
727
 
728
					}
729
 
30087 tejbeer 730
					for (Entry<String, PartnerSecondaryPlanModel> secondaryModelEntry : secondaryModelMap.entrySet()) {
731
 
732
						Integer authId = secondaryModelEntry.getValue().getAuthId();
733
 
734
						if (authId != null && authId != authUser.getId()) {
735
 
736
							secondaryModelEntry.getValue().setAuthUser(authRepository.selectById(authId));
737
 
738
							ptam.setSecondaryColor("red");
739
						}
740
 
741
					}
742
 
30077 tejbeer 743
					ptam.setPartnerSecondaryModel(secondaryModelMap);
744
					ptam.setTotalSecondaryPlan(totalSecondaryPlan);
745
 
30087 tejbeer 746
					ptam.setTotalSecondaryAchievement(totalSecondaryAchivement);
30077 tejbeer 747
 
30087 tejbeer 748
				} else {
749
					for (String brand : brands) {
750
						PartnerSecondaryPlanModel pspm = new PartnerSecondaryPlanModel();
751
						pspm.setAchievementPlan((long) 0);
752
						pspm.setTargetPlan((long) 0);
753
						pspm.setBrand(brand);
754
						pspm.setFofoId(fofoId);
755
						secondaryModelMap.put(brand, pspm);
30077 tejbeer 756
 
30087 tejbeer 757
					}
30077 tejbeer 758
 
30087 tejbeer 759
					ptam.setPartnerSecondaryModel(secondaryModelMap);
760
 
30077 tejbeer 761
				}
762
 
30078 tejbeer 763
				ptams.add(ptam);
764
 
30077 tejbeer 765
			}
766
 
767
			tm.setTotalPartnerTargetCollection(totalPartnerTargetCollection);
768
			tm.setTotalPartnerTargetSecondary(totalPartnerTargetSecondary);
769
			tm.setTotalPartnerSecondary(totalPartnerAchievementSecondary);
770
			tm.setTotalPartnerCollection(totalPartnerAchievementCollection);
771
 
30087 tejbeer 772
			tm.setTargetAchievement(ptams.stream()
773
					.sorted(Comparator.comparing(PartnerTargetAchievementModel::getShortInvestment).reversed())
774
					.collect(Collectors.toList()));
775
 
30077 tejbeer 776
		}
777
 
778
		return responseSender.ok(tm);
779
 
780
	}
781
 
782
	@RequestMapping(value = "/target", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
783
	@ApiImplicitParams({
784
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
785
	public ResponseEntity<?> createPartnerTarget(HttpServletRequest request,
786
			@RequestBody PartnerTargetAchievementModel ptam) throws ProfitMandiBusinessException {
787
 
30087 tejbeer 788
		AuthUser authUser = authRepository.selectByGmailId(ptam.getCreatedBy());
30077 tejbeer 789
 
30087 tejbeer 790
		PartnerCollectionPlan partnerCollectionPlan = partnerCollectionPlanRepository.selectByLocalDate(LocalDate.now(),
791
				ptam.getFofoId(), true);
792
		LOGGER.info("pcp" + partnerCollectionPlan);
30077 tejbeer 793
 
30087 tejbeer 794
		if (partnerCollectionPlan == null) {
30077 tejbeer 795
			if (ptam.getCollectionTarget() > 0) {
30087 tejbeer 796
 
797
				partnerCollectionPlan = new PartnerCollectionPlan();
798
				partnerCollectionPlan.setCreateTimestamp(LocalDateTime.now());
30077 tejbeer 799
				partnerCollectionPlan.setAuthId(authUser.getId());
800
				partnerCollectionPlan.setFofoId(ptam.getFofoId());
30087 tejbeer 801
				partnerCollectionPlan.setActive(true);
30077 tejbeer 802
				partnerCollectionPlan.setCollectionPlan(ptam.getCollectionTarget());
803
				partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
804
				partnerCollectionPlanRepository.persist(partnerCollectionPlan);
805
			}
30087 tejbeer 806
 
807
		} else {
808
			if (partnerCollectionPlan.getCollectionPlan() != ptam.getCollectionTarget()) {
809
				float totalCollectionPlan = partnerCollectionPlan.getCollectionPlan() + 10000;
810
				if (authUser.getId() == partnerCollectionPlan.getAuthId()) {
811
					if (ptam.getCollectionTarget() >= totalCollectionPlan) {
812
						partnerCollectionPlan.setCollectionPlan(ptam.getCollectionTarget());
813
						partnerCollectionPlan.setActive(true);
814
						partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
815
					} else {
816
						throw new ProfitMandiBusinessException("collection target", "",
817
								"collection target should be more than " + totalCollectionPlan);
818
					}
819
 
820
				} else {
821
 
822
					if (ptam.getCollectionTarget() >= totalCollectionPlan) {
823
 
824
						partnerCollectionPlan.setActive(false);
825
						partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
826
						partnerCollectionPlan = new PartnerCollectionPlan();
827
						partnerCollectionPlan.setCreateTimestamp(LocalDateTime.now());
828
						partnerCollectionPlan.setAuthId(authUser.getId());
829
						partnerCollectionPlan.setFofoId(ptam.getFofoId());
830
						partnerCollectionPlan.setActive(true);
831
						partnerCollectionPlan.setCollectionPlan(ptam.getCollectionTarget());
832
						partnerCollectionPlan.setUpdatedTimestamp(LocalDateTime.now());
833
						partnerCollectionPlanRepository.persist(partnerCollectionPlan);
834
					} else {
835
						throw new ProfitMandiBusinessException("collection target", "",
836
								"collection target should be more than " + totalCollectionPlan);
837
					}
838
				}
839
			}
30077 tejbeer 840
		}
841
 
842
		for (Entry<String, PartnerSecondaryPlanModel> pspm : ptam.getPartnerSecondaryModel().entrySet()) {
30087 tejbeer 843
			PartnerSecondaryPlanModel plan = pspm.getValue();
844
			PartnerSecondaryPlan psp = partnerSecondaryPlanRepository.selectByLocalDateBrand(plan.getBrand(),
845
					LocalDate.now(), ptam.getFofoId(), true);
846
			LOGGER.info("psp" + psp);
847
 
848
			if (psp == null) {
849
				if (plan.getTargetPlan() > 0) {
850
 
30077 tejbeer 851
					psp = new PartnerSecondaryPlan();
30087 tejbeer 852
					psp.setAuthId(authUser.getId());
853
					psp.setBrand(pspm.getKey());
854
					psp.setFofoId(pspm.getValue().getFofoId());
855
					psp.setSecondaryPlan(pspm.getValue().getTargetPlan());
856
					psp.setCreateTimestamp(LocalDateTime.now());
857
					psp.setUpdatedTimestamp(LocalDateTime.now());
858
					psp.setActive(true);
859
					partnerSecondaryPlanRepository.persist(psp);
860
				}
861
 
862
			} else {
863
				if (plan.getTargetPlan() != psp.getSecondaryPlan()) {
864
					float totalSecondaryPlan = psp.getSecondaryPlan() + 10000;
865
					if (authUser.getId() == plan.getAuthId()) {
866
						if (plan.getTargetPlan() >= totalSecondaryPlan) {
867
							psp.setSecondaryPlan(pspm.getValue().getTargetPlan());
868
							psp.setUpdatedTimestamp(LocalDateTime.now());
869
							psp.setActive(true);
870
						} else {
871
							throw new ProfitMandiBusinessException("secondary target", "",
872
									"secondary target should be more than " + totalSecondaryPlan);
873
						}
874
 
875
					} else {
876
 
877
						if (plan.getTargetPlan() >= totalSecondaryPlan) {
878
 
879
							psp.setUpdatedTimestamp(LocalDateTime.now());
880
							psp.setActive(false);
881
 
882
							psp = new PartnerSecondaryPlan();
883
							psp.setAuthId(authUser.getId());
884
							psp.setBrand(pspm.getKey());
885
							psp.setFofoId(pspm.getValue().getFofoId());
886
							psp.setSecondaryPlan(pspm.getValue().getTargetPlan());
887
							psp.setCreateTimestamp(LocalDateTime.now());
888
							psp.setUpdatedTimestamp(LocalDateTime.now());
889
							psp.setActive(true);
890
							partnerSecondaryPlanRepository.persist(psp);
891
						} else {
892
							throw new ProfitMandiBusinessException("secondary target", "",
893
									"secondary target should be more than " + totalSecondaryPlan);
894
						}
895
					}
896
				}
30077 tejbeer 897
			}
898
		}
899
 
900
		return responseSender.ok(true);
901
	}
902
 
903
}