Subversion Repositories SmartDukaan

Rev

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