Subversion Repositories SmartDukaan

Rev

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