Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
25496 tejbeer 1
package com.spice.profitmandi.web.controller;
2
 
26766 tejbeer 3
import java.text.MessageFormat;
25496 tejbeer 4
import java.time.LocalDateTime;
5
import java.util.ArrayList;
6
import java.util.List;
7
import java.util.Map;
25587 tejbeer 8
import java.util.function.Function;
9
import java.util.stream.Collector;
25496 tejbeer 10
import java.util.stream.Collectors;
11
 
26766 tejbeer 12
import javax.mail.internet.InternetAddress;
13
import javax.mail.internet.MimeMessage;
25496 tejbeer 14
import javax.servlet.http.HttpServletRequest;
15
 
16
import org.apache.logging.log4j.LogManager;
17
import org.apache.logging.log4j.Logger;
18
import org.json.JSONObject;
19
import org.springframework.beans.factory.annotation.Autowired;
26766 tejbeer 20
import org.springframework.mail.javamail.JavaMailSender;
21
import org.springframework.mail.javamail.MimeMessageHelper;
25496 tejbeer 22
import org.springframework.stereotype.Controller;
23
import org.springframework.transaction.annotation.Transactional;
24
import org.springframework.ui.Model;
25
import org.springframework.web.bind.annotation.RequestMapping;
26
import org.springframework.web.bind.annotation.RequestMethod;
27
import org.springframework.web.bind.annotation.RequestParam;
28
 
29
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
30
import com.spice.profitmandi.common.model.CustomRetailer;
26792 tejbeer 31
import com.spice.profitmandi.common.model.FocusedModelShortageModel;
25496 tejbeer 32
import com.spice.profitmandi.dao.entity.user.Refferal;
33
import com.spice.profitmandi.dao.entity.user.RefferalMonthlyAmount;
34
import com.spice.profitmandi.dao.entity.user.User;
35
import com.spice.profitmandi.dao.enumuration.dtr.RefferalStatus;
36
import com.spice.profitmandi.dao.model.DateRangeModel;
37
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
38
import com.spice.profitmandi.dao.repository.dtr.RefferalMonthlyAmountRepository;
39
import com.spice.profitmandi.dao.repository.dtr.RefferalRepository;
40
import com.spice.profitmandi.dao.repository.user.UserRepository;
41
import com.spice.profitmandi.service.user.RetailerService;
42
import com.spice.profitmandi.service.wallet.WalletService;
43
import com.spice.profitmandi.web.util.MVCResponseSender;
44
 
45
import in.shop2020.model.v1.order.WalletReferenceType;
46
 
47
@Controller
48
@Transactional(rollbackFor = Throwable.class)
49
public class RefferalController {
50
 
51
	@Autowired
52
	private RefferalRepository refferalRepository;
53
 
54
	@Autowired
55
	private MVCResponseSender mvcResponseSender;
56
 
57
	@Autowired
58
	private FofoStoreRepository fofoStoreRepository;
59
 
60
	@Autowired
61
	private RetailerService retailerService;
62
 
63
	@Autowired
64
	private WalletService walletService;
65
 
66
	@Autowired
67
	private RefferalMonthlyAmountRepository refferalMonthlyAmountRepository;
68
 
69
	@Autowired
70
	private UserRepository userRepository;
71
 
26766 tejbeer 72
	@Autowired
73
	JavaMailSender mailSender;
74
 
25496 tejbeer 75
	private static final Logger LOGGER = LogManager.getLogger(RefferalRepository.class);
76
 
77
	@RequestMapping(value = "/getRefferalsRequest", method = RequestMethod.GET)
78
	public String getRefferalsRequest(HttpServletRequest request,
79
			@RequestParam(name = "offset", defaultValue = "0") int offset,
80
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
81
			throws ProfitMandiBusinessException {
82
 
83
		List<Refferal> refferals = null;
84
		long size = 0;
85
		refferals = refferalRepository.selectAllRefferalByStatus(offset, limit, RefferalStatus.pending);
86
		LOGGER.info("refferals" + refferals);
87
		size = refferalRepository.selectCountByStatus(RefferalStatus.pending);
88
		if (!refferals.isEmpty()) {
89
 
90
			model.addAttribute("refferals", refferals);
91
			model.addAttribute("start", offset + 1);
92
			model.addAttribute("rStatus", "pending");
93
 
94
			model.addAttribute("size", size);
95
			model.addAttribute("url", "/getPaginatedRefferalsRequest");
96
 
97
			if (refferals.size() < limit) {
98
				model.addAttribute("end", offset + refferals.size());
99
			} else {
100
				model.addAttribute("end", offset + limit);
101
			}
102
 
103
		} else {
104
 
105
			model.addAttribute("refferals", refferals);
106
			model.addAttribute("size", size);
107
 
108
		}
109
 
110
		return "refferal";
111
	}
112
 
113
	@RequestMapping(value = "/getPaginatedRefferalsRequest", method = RequestMethod.GET)
114
	public String getPaginatedRefferalsRequest(HttpServletRequest request,
115
			@RequestParam(name = "offset", defaultValue = "0") int offset,
116
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws Exception {
117
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
118
		List<Refferal> refferals = null;
119
		refferals = refferalRepository.selectAllRefferalByStatus(offset, limit, RefferalStatus.pending);
120
		LOGGER.info("refferals" + refferals);
121
		if (!refferals.isEmpty()) {
122
 
123
			model.addAttribute("refferals", refferals);
124
			model.addAttribute("rStatus", "pending");
125
			model.addAttribute("url", "/getPaginatedRefferalsRequest");
126
 
127
		} else {
128
			model.addAttribute("refferals", refferals);
129
 
130
		}
131
 
132
		return "refferal-paginated";
133
	}
134
 
25587 tejbeer 135
	@RequestMapping(value = "/getValidateRefferals", method = RequestMethod.GET)
136
	public String getValidateRefferals(HttpServletRequest request,
137
			@RequestParam(name = "offset", defaultValue = "0") int offset,
138
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
139
			throws ProfitMandiBusinessException {
140
 
141
		List<Refferal> refferals = null;
142
		long size = 0;
143
		refferals = refferalRepository.selectAllRefferalByStatus(offset, limit, RefferalStatus.validate);
144
		LOGGER.info("refferals" + refferals);
145
		size = refferalRepository.selectCountByStatus(RefferalStatus.validate);
146
		if (!refferals.isEmpty()) {
147
 
148
			model.addAttribute("refferals", refferals);
149
			model.addAttribute("start", offset + 1);
150
			model.addAttribute("rStatus", "validate");
151
 
152
			model.addAttribute("size", size);
153
			model.addAttribute("url", "/getPaginatedValidateRefferals");
154
 
155
			if (refferals.size() < limit) {
156
				model.addAttribute("end", offset + refferals.size());
157
			} else {
158
				model.addAttribute("end", offset + limit);
159
			}
160
 
161
		} else {
162
 
163
			model.addAttribute("refferals", refferals);
164
			model.addAttribute("size", size);
165
 
166
		}
167
 
168
		return "refferal";
169
	}
170
 
171
	@RequestMapping(value = "/getPaginatedValidateRefferals", method = RequestMethod.GET)
172
	public String getPaginatedValidateRefferals(HttpServletRequest request,
173
			@RequestParam(name = "offset", defaultValue = "0") int offset,
174
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws Exception {
175
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
176
		List<Refferal> refferals = null;
177
		refferals = refferalRepository.selectAllRefferalByStatus(offset, limit, RefferalStatus.validate);
178
		LOGGER.info("refferals" + refferals);
179
		if (!refferals.isEmpty()) {
180
 
181
			model.addAttribute("refferals", refferals);
182
			model.addAttribute("rStatus", "validate");
183
			model.addAttribute("url", "/getPaginatedValidateRefferals");
184
 
185
		} else {
186
			model.addAttribute("refferals", refferals);
187
 
188
		}
189
 
190
		return "refferal-paginated";
191
	}
192
 
193
	@RequestMapping(value = "/validateRefferal", method = RequestMethod.PUT)
194
	public String validateRefferal(HttpServletRequest request,
195
			@RequestParam(name = "refferalId", defaultValue = "0") int refferalId, Model model) throws Exception {
196
 
197
		Refferal refferal = refferalRepository.selectById(refferalId);
198
 
199
		if (refferal.getStatus().equals(RefferalStatus.pending)) {
200
			refferal.setStatus(RefferalStatus.validate);
201
			refferal.setUpdatedTimestamp(LocalDateTime.now());
202
			refferalRepository.persist(refferal);
203
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
204
 
26792 tejbeer 205
			String subject = "Referral Approval Request for " + refferal.getRefereeEmail();
206
 
207
			String messageText = this.getMessageForReferral(refferal);
208
			MimeMessage message = mailSender.createMimeMessage();
209
			MimeMessageHelper helper = new MimeMessageHelper(message, true);
210
			String[] email = { "tarun.verma@smartdukaan.com", "tejbeer.kaur@shop2020.in" };
211
			helper.setSubject(subject);
212
			helper.setText(messageText, true);
213
			helper.setTo(email);
214
			InternetAddress senderAddress = new InternetAddress("noreply@smartdukaan.com", "Smartdukaan Alerts");
215
			helper.setFrom(senderAddress);
216
			mailSender.send(message);
217
 
25587 tejbeer 218
		} else {
219
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
220
 
221
		}
222
 
223
		return "response";
224
	}
225
 
26792 tejbeer 226
	private String getMessageForReferral(Refferal referral) {
227
 
228
		StringBuilder sb = new StringBuilder();
229
		sb.append("<html><body><p>Alert</p><p> Referral Requests:-</p>"
230
				+ "<br/><table style='border:1px solid black ;padding: 5px';>");
231
		sb.append("<tbody>\n" + "	    				<tr>\n"
232
				+ "	    					<th style='border:1px solid black;padding: 5px'>RefereeName</th>\n"
233
				+ "	    					<th style='border:1px solid black;padding: 5px'>Referee Email</th>\n"
234
				+ "	    					<th style='border:1px solid black;padding: 5px'>Referral Name</th>\n"
235
				+ "	    					<th style='border:1px solid black;padding: 5px'>Refferal Mobile</th>\n"
236
				+ "	    					<th style='border:1px solid black;padding: 5px'>city</th>\n"
237
				+ "	    					<th style='border:1px solid black;padding: 5px'>state</th>\n"
238
				+ "	    				</tr>");
239
 
240
		sb.append("<tr>");
241
		sb.append("<td style='border:1px solid black;padding: 5px'>" + referral.getRefereeName() + "</td>");
242
 
243
		sb.append("<td style='border:1px solid black;padding: 5px'>" + referral.getRefereeEmail() + "</td>");
244
		sb.append("<td style='border:1px solid black;padding: 5px'>" + referral.getFirstName() + "</td>");
245
		sb.append("<td style='border:1px solid black;padding: 5px'>" + referral.getMobile() + "</td>");
246
		sb.append("<td style='border:1px solid black;padding: 5px'>" + referral.getCity() + "</td>");
247
		sb.append("<td style='border:1px solid black;padding: 5px'>" + referral.getState() + "</td>");
248
 
249
		sb.append("</tr>");
250
 
251
		sb.append("</tbody></table></body></html>");
252
 
253
		return sb.toString();
254
	}
255
 
25496 tejbeer 256
	@RequestMapping(value = "/approveRefferal", method = RequestMethod.PUT)
257
	public String approveRefferal(HttpServletRequest request,
258
			@RequestParam(name = "refferalId", defaultValue = "0") int refferalId, Model model) throws Exception {
259
 
260
		Refferal refferal = refferalRepository.selectById(refferalId);
261
 
25587 tejbeer 262
		if (refferal.getStatus().equals(RefferalStatus.validate)) {
25496 tejbeer 263
			refferal.setStatus(RefferalStatus.approved);
264
			refferal.setUpdatedTimestamp(LocalDateTime.now());
265
			refferal.setApprovedTimestamp(LocalDateTime.now());
266
			refferalRepository.persist(refferal);
26766 tejbeer 267
 
26792 tejbeer 268
			String subject = "Referral Request Approved for " + refferal.getRefereeEmail();
269
			String messageText = this.getMessageForReferral(refferal);
26766 tejbeer 270
 
271
			this.sendMailWithAttachments(subject, messageText);
25496 tejbeer 272
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
273
 
274
		} else {
275
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
276
 
277
		}
278
 
279
		return "response";
280
	}
281
 
26766 tejbeer 282
	private void sendMailWithAttachments(String subject, String messageText) throws Exception {
283
		MimeMessage message = mailSender.createMimeMessage();
284
		MimeMessageHelper helper = new MimeMessageHelper(message, true);
26792 tejbeer 285
		String[] email = { "neeraj.gupta@smartdukaan.com" };
26766 tejbeer 286
		helper.setSubject(subject);
26792 tejbeer 287
		helper.setText(messageText, true);
26766 tejbeer 288
		helper.setTo(email);
289
		InternetAddress senderAddress = new InternetAddress("noreply@smartdukaan.com", "Smartdukaan Alerts");
290
		helper.setFrom(senderAddress);
291
		mailSender.send(message);
292
 
293
	}
294
 
25496 tejbeer 295
	@RequestMapping(value = "/rejectRefferal", method = RequestMethod.PUT)
296
	public String rejectRefferal(HttpServletRequest request,
25645 tejbeer 297
			@RequestParam(name = "refferalId", defaultValue = "0") int refferalId, @RequestParam String rejectionReason,
298
			Model model) throws Exception {
25496 tejbeer 299
		Refferal refferal = refferalRepository.selectById(refferalId);
300
 
301
		if (refferal.getStatus().equals(RefferalStatus.pending)) {
302
			refferal.setStatus(RefferalStatus.rejected);
25645 tejbeer 303
			refferal.setRejectedReason(rejectionReason);
25496 tejbeer 304
			refferal.setUpdatedTimestamp(LocalDateTime.now());
305
			refferalRepository.persist(refferal);
306
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
307
 
308
		} else {
309
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
310
 
311
		}
312
 
313
		return "response";
314
	}
315
 
316
	@RequestMapping(value = "/approvedRefferals", method = RequestMethod.GET)
317
	public String approvedRefferals(HttpServletRequest request, Model model) throws Exception {
26766 tejbeer 318
 
26792 tejbeer 319
		Map<String, Long> pastApprovedCountMap = null;
320
		List<Refferal> pastrefferal = null;
321
 
25496 tejbeer 322
		DateRangeModel drm = new DateRangeModel();
323
		drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(1));
324
		drm.setEndDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(16));
25587 tejbeer 325
 
25496 tejbeer 326
		List<Refferal> previousMonthapprovedRefferal = refferalRepository
25587 tejbeer 327
				.selectByStatusAndDateRanges(RefferalStatus.approved, drm);
328
 
25496 tejbeer 329
		drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(16));
330
		drm.setEndDate(LocalDateTime.now().withDayOfMonth(16));
331
		LocalDateTime currentMonthdate = LocalDateTime.now().withDayOfMonth(1);
25587 tejbeer 332
 
333
		List<Refferal> preCurrMonthapproved = refferalRepository
334
				.selectByStatusAndDateRange(RefferalStatus.approved, drm).stream()
25496 tejbeer 335
				.filter(x -> x.getCreatedTimestamp().isBefore(currentMonthdate)).collect(Collectors.toList());
25587 tejbeer 336
		preCurrMonthapproved.addAll(previousMonthapprovedRefferal);
25496 tejbeer 337
 
26792 tejbeer 338
		LOGGER.info("preCurrMonthapproved" + preCurrMonthapproved);
339
 
25587 tejbeer 340
		Map<String, Long> preApproved = preCurrMonthapproved.stream()
341
				.collect(Collectors.groupingBy(Refferal::getRefereeEmail, Collectors.counting()));
25496 tejbeer 342
 
343
		drm.setStartDate(LocalDateTime.now().minusMonths(2).withDayOfMonth(1));
344
		drm.setEndDate(LocalDateTime.now().minusMonths(2).withDayOfMonth(16));
25587 tejbeer 345
 
346
		LocalDateTime previousMonthdate = LocalDateTime.now().minusMonths(1).withDayOfMonth(1);
347
		List<Refferal> oldMonthapprovedRefferal = refferalRepository
348
				.selectByStatusAndDateRanges(RefferalStatus.approved, drm);
349
 
25496 tejbeer 350
		drm.setStartDate(LocalDateTime.now().minusMonths(2).withDayOfMonth(16));
351
		drm.setEndDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(16));
352
 
25587 tejbeer 353
		List<Refferal> oldPreMonthapproved = refferalRepository.selectByStatusAndDateRange(RefferalStatus.approved, drm)
354
				.stream().filter(x -> x.getCreatedTimestamp().isBefore(previousMonthdate)).collect(Collectors.toList());
25496 tejbeer 355
 
25587 tejbeer 356
		oldPreMonthapproved.addAll(oldMonthapprovedRefferal);
26792 tejbeer 357
		LOGGER.info("oldPreMonthapproved" + oldPreMonthapproved);
25496 tejbeer 358
 
25587 tejbeer 359
		Map<String, Long> oldApproved = oldPreMonthapproved.stream()
360
				.collect(Collectors.groupingBy(Refferal::getRefereeEmail, Collectors.counting()));
361
		LOGGER.info("preApproved" + preApproved);
362
 
26766 tejbeer 363
		if (preApproved.isEmpty() && oldApproved.isEmpty()) {
26792 tejbeer 364
 
365
			pastrefferal = refferalRepository.selectByStatus(RefferalStatus.approved);
366
			pastApprovedCountMap = pastrefferal.stream()
26766 tejbeer 367
					.collect(Collectors.groupingBy(Refferal::getRefereeEmail, Collectors.counting()));
368
		}
369
 
26792 tejbeer 370
		LOGGER.info("refferal" + pastrefferal);
25587 tejbeer 371
		LOGGER.info("oldApproved" + oldApproved);
26792 tejbeer 372
		LOGGER.info("pastApproved" + pastApprovedCountMap);
25496 tejbeer 373
		model.addAttribute("oldMonth", LocalDateTime.now().minusMonths(2).getMonth());
25587 tejbeer 374
		model.addAttribute("oldApproved", oldApproved);
26792 tejbeer 375
		model.addAttribute("oldPreMonthapproved", oldPreMonthapproved);
25496 tejbeer 376
		model.addAttribute("previousMonth", LocalDateTime.now().minusMonths(1).getMonth());
26792 tejbeer 377
		model.addAttribute("pastApproved", pastApprovedCountMap);
378
		model.addAttribute("pastrefferal", pastrefferal);
25587 tejbeer 379
		model.addAttribute("preApproved", preApproved);
26792 tejbeer 380
		model.addAttribute("preCurrMonthapproved", preCurrMonthapproved);
25587 tejbeer 381
 
382
		return "refferal-approve";
25496 tejbeer 383
	}
384
 
385
	@RequestMapping(value = "/addMoneyToWallet", method = RequestMethod.POST)
386
	public String addMoneyToWallet(HttpServletRequest request, @RequestParam String refereeEmail,
387
			@RequestParam int count, @RequestParam int amount, @RequestParam String month, Model model)
388
			throws Exception {
389
 
390
		User user = userRepository.selectByEmailId(refereeEmail);
391
		if (user != null) {
392
			RefferalMonthlyAmount rfm = new RefferalMonthlyAmount();
393
			rfm.setAmount(amount);
394
			rfm.setCount(count);
25587 tejbeer 395
			rfm.setRefereeEmail(user.getEmailId());
25496 tejbeer 396
			rfm.setCreatedTimstamp(LocalDateTime.now());
397
			refferalMonthlyAmountRepository.persist(rfm);
26792 tejbeer 398
			walletService.addAmountToWallet(user.getId(), rfm.getId(), WalletReferenceType.REFERRAL_INCENTIVES,
26498 amit.gupta 399
					count + "referral of" + month + "Month", amount, LocalDateTime.now());
25496 tejbeer 400
 
401
			DateRangeModel drm = new DateRangeModel();
402
			drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(1));
403
			drm.setEndDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(16));
404
			List<Refferal> previousMonthapprovedRefferal = refferalRepository
25587 tejbeer 405
					.selectByEmailIdAndStatusAndDateRanges(user.getEmailId(), RefferalStatus.approved, drm);
25496 tejbeer 406
			drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(16));
407
			drm.setEndDate(LocalDateTime.now().withDayOfMonth(16));
408
			List<Refferal> previousAndcurrentMonthapprovedRefferal = refferalRepository
25587 tejbeer 409
					.selectByEmailIdAndStatusAndDateRange(user.getEmailId(), RefferalStatus.approved, drm);
25496 tejbeer 410
			LocalDateTime currentMonthdate = LocalDateTime.now().withDayOfMonth(1);
411
			List<Refferal> preCurrMonthapproved = previousAndcurrentMonthapprovedRefferal.stream()
412
					.filter(x -> x.getCreatedTimestamp().isBefore(currentMonthdate)).collect(Collectors.toList());
413
			List<Refferal> approvedRefferals = new ArrayList<>(previousMonthapprovedRefferal);
414
			approvedRefferals.addAll(preCurrMonthapproved);
415
 
26766 tejbeer 416
			if (approvedRefferals.isEmpty()) {
417
				List<Refferal> pastApproved = refferalRepository.selectByStatusAndEmailId(RefferalStatus.approved,
418
						user.getEmailId());
419
				approvedRefferals.addAll(pastApproved);
420
			}
25496 tejbeer 421
			for (Refferal refferl : approvedRefferals) {
422
				refferl.setStatus(RefferalStatus.transferred);
423
				refferl.setUpdatedTimestamp(LocalDateTime.now());
424
			}
425
 
426
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
427
		} else {
428
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
429
		}
430
		return "response";
431
	}
432
 
433
	@RequestMapping(value = "/addMoneyToWalletPreviousMonth", method = RequestMethod.POST)
434
	public String addMoneyToWalletPrevious(HttpServletRequest request, @RequestParam String refereeEmail,
435
			@RequestParam int count, @RequestParam int amount, @RequestParam String month, Model model)
436
			throws Exception {
437
 
438
		User user = userRepository.selectByEmailId(refereeEmail);
439
		if (user != null) {
440
			RefferalMonthlyAmount rfm = new RefferalMonthlyAmount();
441
			rfm.setAmount(amount);
442
			rfm.setCount(count);
25587 tejbeer 443
			rfm.setRefereeEmail(user.getEmailId());
25496 tejbeer 444
			rfm.setCreatedTimstamp(LocalDateTime.now());
445
			refferalMonthlyAmountRepository.persist(rfm);
446
			walletService.addAmountToWallet(user.getId(), rfm.getId(), WalletReferenceType.CASHBACK,
26498 amit.gupta 447
					count + "referral of" + month + "Month", amount, LocalDateTime.now());
25496 tejbeer 448
 
449
			DateRangeModel drm = new DateRangeModel();
450
			drm.setStartDate(LocalDateTime.now().minusMonths(2).withDayOfMonth(1));
451
			drm.setEndDate(LocalDateTime.now().minusMonths(2).withDayOfMonth(16));
452
			List<Refferal> oldMonthapprovedRefferal = refferalRepository
25587 tejbeer 453
					.selectByEmailIdAndStatusAndDateRanges(user.getEmailId(), RefferalStatus.approved, drm);
454
			LOGGER.info("oldMonthapprovedRefferal" + oldMonthapprovedRefferal);
455
 
25496 tejbeer 456
			drm.setStartDate(LocalDateTime.now().minusMonths(2).withDayOfMonth(16));
457
			drm.setEndDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(16));
458
			List<Refferal> oldAndpreviousMonthapprovedRefferal = refferalRepository
25587 tejbeer 459
					.selectByEmailIdAndStatusAndDateRange(user.getEmailId(), RefferalStatus.approved, drm);
25496 tejbeer 460
			LocalDateTime previousMonthdate = LocalDateTime.now().minusMonths(1).withDayOfMonth(1);
461
			List<Refferal> oldPreMonthapproved = oldAndpreviousMonthapprovedRefferal.stream()
462
					.filter(x -> x.getCreatedTimestamp().isBefore(previousMonthdate)).collect(Collectors.toList());
463
 
25587 tejbeer 464
			oldPreMonthapproved.addAll(oldMonthapprovedRefferal);
25496 tejbeer 465
 
25587 tejbeer 466
			LOGGER.info("oldPreMonthapproved" + oldPreMonthapproved);
467
			for (Refferal refferl : oldPreMonthapproved) {
25496 tejbeer 468
				refferl.setStatus(RefferalStatus.transferred);
469
				refferl.setUpdatedTimestamp(LocalDateTime.now());
470
			}
471
 
472
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
473
		} else {
474
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
475
		}
476
		return "response";
477
	}
478
 
479
	@RequestMapping(value = "/getTransferredRefferals", method = RequestMethod.GET)
480
	public String getTransferredRefferals(HttpServletRequest request,
481
			@RequestParam(name = "offset", defaultValue = "0") int offset,
482
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
483
			throws ProfitMandiBusinessException {
484
 
485
		List<Refferal> refferals = null;
486
		long size = 0;
487
		refferals = refferalRepository.selectAllRefferalByStatus(offset, limit, RefferalStatus.transferred);
488
		LOGGER.info("refferals" + refferals);
489
		size = refferalRepository.selectCountByStatus(RefferalStatus.transferred);
490
		if (!refferals.isEmpty()) {
491
 
492
			model.addAttribute("refferals", refferals);
493
			model.addAttribute("start", offset + 1);
494
			model.addAttribute("size", size);
495
			model.addAttribute("url", "/getPaginatedTransferredRefferals");
496
 
497
			if (refferals.size() < limit) {
498
				model.addAttribute("end", offset + refferals.size());
499
			} else {
500
				model.addAttribute("end", offset + limit);
501
			}
502
 
503
		} else {
504
 
505
			model.addAttribute("refferals", refferals);
506
			model.addAttribute("size", size);
507
 
508
		}
509
 
510
		return "refferal";
511
	}
512
 
513
	@RequestMapping(value = "/getPaginatedTransferredRefferals", method = RequestMethod.GET)
514
	public String getPaginatedTransferredRefferals(HttpServletRequest request,
515
			@RequestParam(name = "offset", defaultValue = "0") int offset,
516
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws Exception {
517
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
518
		List<Refferal> refferals = null;
519
		refferals = refferalRepository.selectAllRefferalByStatus(offset, limit, RefferalStatus.transferred);
520
		LOGGER.info("refferals" + refferals);
521
		if (!refferals.isEmpty()) {
522
 
523
			model.addAttribute("refferals", refferals);
524
			model.addAttribute("url", "/getPaginatedTransferredRefferals");
525
 
526
		} else {
527
			model.addAttribute("refferals", refferals);
528
 
529
		}
530
 
531
		return "refferal-paginated";
532
	}
533
}