Subversion Repositories SmartDukaan

Rev

Rev 25484 | Rev 25490 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 25484 Rev 25488
Line 1... Line 1...
1
package com.spice.profitmandi.web.controller;
1
package com.spice.profitmandi.web.controller;
2
 
2
 
3
import java.io.IOException;
3
import java.io.IOException;
-
 
4
import java.time.LocalDate;
4
import java.time.LocalDateTime;
5
import java.time.LocalDateTime;
-
 
6
import java.time.YearMonth;
5
import java.util.ArrayList;
7
import java.util.ArrayList;
6
import java.util.Arrays;
8
import java.util.Arrays;
7
import java.util.Base64;
9
import java.util.Base64;
8
import java.util.HashMap;
10
import java.util.HashMap;
9
import java.util.HashSet;
11
import java.util.HashSet;
10
import java.util.List;
12
import java.util.List;
11
import java.util.Map;
13
import java.util.Map;
12
import java.util.Set;
14
import java.util.Set;
-
 
15
import java.util.stream.Collectors;
13
 
16
 
14
import javax.servlet.http.HttpServletRequest;
17
import javax.servlet.http.HttpServletRequest;
15
 
18
 
16
import org.apache.http.client.ClientProtocolException;
19
import org.apache.http.client.ClientProtocolException;
17
import org.apache.logging.log4j.LogManager;
20
import org.apache.logging.log4j.LogManager;
Line 44... Line 47...
44
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
47
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
45
import com.spice.profitmandi.dao.entity.dtr.UserRole;
48
import com.spice.profitmandi.dao.entity.dtr.UserRole;
46
import com.spice.profitmandi.dao.entity.user.Address;
49
import com.spice.profitmandi.dao.entity.user.Address;
47
import com.spice.profitmandi.dao.entity.user.Promoter;
50
import com.spice.profitmandi.dao.entity.user.Promoter;
48
import com.spice.profitmandi.dao.entity.user.Refferal;
51
import com.spice.profitmandi.dao.entity.user.Refferal;
-
 
52
import com.spice.profitmandi.dao.enumuration.dtr.RefferalStatus;
49
import com.spice.profitmandi.dao.enumuration.dtr.RoleType;
53
import com.spice.profitmandi.dao.enumuration.dtr.RoleType;
-
 
54
import com.spice.profitmandi.dao.model.DateRangeModel;
50
import com.spice.profitmandi.dao.model.UserCart;
55
import com.spice.profitmandi.dao.model.UserCart;
51
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
56
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
52
import com.spice.profitmandi.dao.repository.dtr.RefferalRepository;
57
import com.spice.profitmandi.dao.repository.dtr.RefferalRepository;
53
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
58
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
54
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
59
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
Line 62... Line 67...
62
import com.spice.profitmandi.service.user.RetailerService;
67
import com.spice.profitmandi.service.user.RetailerService;
63
import com.spice.profitmandi.service.user.UserService;
68
import com.spice.profitmandi.service.user.UserService;
64
import com.spice.profitmandi.web.enumuration.UserStatus;
69
import com.spice.profitmandi.web.enumuration.UserStatus;
65
import com.spice.profitmandi.web.processor.GoogleLoginProcessor;
70
import com.spice.profitmandi.web.processor.GoogleLoginProcessor;
66
import com.spice.profitmandi.web.req.CreateRefferalRequest;
71
import com.spice.profitmandi.web.req.CreateRefferalRequest;
-
 
72
import com.spice.profitmandi.web.req.RefferalEarning;
-
 
73
import com.spice.profitmandi.web.req.RefferalEarningModel;
67
import com.spice.profitmandi.web.req.UserRequest;
74
import com.spice.profitmandi.web.req.UserRequest;
-
 
75
import com.spice.profitmandi.web.res.MyRechargesResponse;
68
import com.spice.profitmandi.web.res.Partner;
76
import com.spice.profitmandi.web.res.Partner;
69
 
77
 
70
import io.swagger.annotations.ApiImplicitParam;
78
import io.swagger.annotations.ApiImplicitParam;
71
import io.swagger.annotations.ApiImplicitParams;
79
import io.swagger.annotations.ApiImplicitParams;
72
 
80
 
Line 677... Line 685...
677
		}
685
		}
678
 
686
 
679
		refferalRepository.persist(refferal);
687
		refferalRepository.persist(refferal);
680
		return responseSender.ok(true);
688
		return responseSender.ok(true);
681
	}
689
	}
-
 
690
 
-
 
691
	@RequestMapping(value = "/user/refferalAmount", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
-
 
692
	@ApiImplicitParams({
-
 
693
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
-
 
694
	public ResponseEntity<?> RefferalAmount(HttpServletRequest request, @RequestParam String refereeEmail)
-
 
695
			throws Exception {
-
 
696
		LocalDateTime ldt = LocalDate.now().atStartOfDay().withDayOfMonth(16);
-
 
697
		DateRangeModel drm = new DateRangeModel();
-
 
698
		List<RefferalEarningModel> refferAmountModel = new ArrayList<RefferalEarningModel>();
-
 
699
		RefferalEarningModel rfm = new RefferalEarningModel();
-
 
700
		long currentMonthEstimaterefferal = 0;
-
 
701
		long currentMonthConfirmedrefferal = 0;
-
 
702
		if (LocalDateTime.now().isBefore(ldt)) {
-
 
703
			List<Refferal> allPendingRefferalBeforeCurrentMonth = refferalRepository
-
 
704
					.selectByEmailIdAndStatusAndbeforeCurrentMonth(refereeEmail, RefferalStatus.pending);
-
 
705
			drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(16));
-
 
706
			drm.setEndDate(LocalDateTime.now().withDayOfMonth(1));
-
 
707
 
-
 
708
			List<Refferal> previousMonthapprovedRefferalAfterSixteen = refferalRepository
-
 
709
					.selectByEmailIdAndStatusAndDateRange(refereeEmail, RefferalStatus.approved, drm);
-
 
710
			List<Refferal> previousMonthtransferredRefferalAfterSixteen = refferalRepository
-
 
711
					.selectByEmailIdAndStatusAndDateRange(refereeEmail, RefferalStatus.transferred, drm);
-
 
712
 
-
 
713
			drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(1));
-
 
714
			drm.setEndDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(16));
-
 
715
 
-
 
716
			List<Refferal> previousMonthapprovedRefferalbeforeSixteen = refferalRepository
-
 
717
					.selectByEmailIdAndStatusAndDateRanges(refereeEmail, RefferalStatus.approved, drm);
-
 
718
			List<Refferal> previousMonthtransferredRefferalbeforeSixteen = refferalRepository
-
 
719
					.selectByEmailIdAndStatusAndDateRanges(refereeEmail, RefferalStatus.transferred, drm);
-
 
720
			long pendingRefferalBeforeCurrentMonth = allPendingRefferalBeforeCurrentMonth.size();
-
 
721
			long previousapprovedRefferalAfterSixteen = previousMonthapprovedRefferalAfterSixteen.size();
-
 
722
			long previoustransferredRefferalAfterSixteen = previousMonthtransferredRefferalAfterSixteen.size();
-
 
723
			long previousapprovedRefferalbeforeSixteen = previousMonthapprovedRefferalbeforeSixteen.size();
-
 
724
			long previoustransferredRefferalbeforeSixteen = previousMonthtransferredRefferalbeforeSixteen.size();
-
 
725
			long previousMonthEstimateRefferal = pendingRefferalBeforeCurrentMonth
-
 
726
					+ previousapprovedRefferalAfterSixteen + previousapprovedRefferalbeforeSixteen;
-
 
727
			long previousMonthConfirmedRefferal = previousapprovedRefferalAfterSixteen
-
 
728
					+ previoustransferredRefferalAfterSixteen + previousapprovedRefferalbeforeSixteen
-
 
729
					+ previoustransferredRefferalbeforeSixteen;
-
 
730
			rfm = new RefferalEarningModel();
-
 
731
			rfm.setPendingRefferal(pendingRefferalBeforeCurrentMonth);
-
 
732
			rfm.setApprovedRefferal(previousMonthConfirmedRefferal);
-
 
733
			rfm = refferAmountEarning(previousMonthEstimateRefferal, previousMonthConfirmedRefferal,
-
 
734
					YearMonth.now().minusMonths(1));
-
 
735
			refferAmountModel.add(rfm);
-
 
736
			LOGGER.info("previousMonthPendingApprovedRefferal" + previousMonthEstimateRefferal);
-
 
737
			LOGGER.info("previousMonthApprovedTransfferedRefferal" + previousMonthConfirmedRefferal);
-
 
738
 
-
 
739
			List<Refferal> pendingofCurrentMonth = refferalRepository.selectByEmailIdAndStatusAndDatesBetweenTimestamp(
-
 
740
					refereeEmail, RefferalStatus.pending, YearMonth.now());
-
 
741
			List<Refferal> approvedofCurrentMonth = refferalRepository.selectByEmailIdAndStatusAndDatesBetweenTimestamp(
-
 
742
					refereeEmail, RefferalStatus.approved, YearMonth.now());
-
 
743
			List<Refferal> transferredofCurrentMonth = refferalRepository
-
 
744
					.selectByEmailIdAndStatusAndDatesBetweenTimestamp(refereeEmail, RefferalStatus.transferred,
-
 
745
							YearMonth.now());
-
 
746
 
-
 
747
			currentMonthEstimaterefferal = pendingofCurrentMonth.size() + approvedofCurrentMonth.size();
-
 
748
			currentMonthConfirmedrefferal = approvedofCurrentMonth.size() + transferredofCurrentMonth.size();
-
 
749
			rfm = new RefferalEarningModel();
-
 
750
			rfm.setPendingRefferal(pendingofCurrentMonth.size());
-
 
751
			rfm.setApprovedRefferal(currentMonthConfirmedrefferal);
-
 
752
			rfm = refferAmountEarning(currentMonthEstimaterefferal, currentMonthConfirmedrefferal, YearMonth.now());
-
 
753
 
-
 
754
			refferAmountModel.add(rfm);
-
 
755
 
-
 
756
		} else if (LocalDateTime.now().isAfter(ldt)) {
-
 
757
			drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(1));
-
 
758
			drm.setEndDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(1));
-
 
759
 
-
 
760
			List<Refferal> previousMonthapprovedRefferalbeforeSixteen = refferalRepository
-
 
761
					.selectByEmailIdAndStatusAndDateRanges(refereeEmail, RefferalStatus.approved, drm);
-
 
762
			List<Refferal> previousMonthtransferredRefferalbeforeSixteen = refferalRepository
-
 
763
					.selectByEmailIdAndStatusAndDateRanges(refereeEmail, RefferalStatus.transferred, drm);
-
 
764
 
-
 
765
			drm.setStartDate(LocalDateTime.now().minusMonths(1).withDayOfMonth(16));
-
 
766
			drm.setEndDate(LocalDateTime.now().withDayOfMonth(16));
-
 
767
 
-
 
768
			List<Refferal> previousAndcurrentMonthapprovedRefferal = refferalRepository
-
 
769
					.selectByEmailIdAndStatusAndDateRange(refereeEmail, RefferalStatus.approved, drm);
-
 
770
 
-
 
771
			LocalDateTime currentMonthdate = LocalDateTime.now().withDayOfMonth(1);
-
 
772
 
-
 
773
			List<Refferal> preCurrMonthapproved = previousAndcurrentMonthapprovedRefferal.stream()
-
 
774
					.filter(x -> x.getCreatedTimestamp().isBefore(currentMonthdate)).collect(Collectors.toList());
-
 
775
			List<Refferal> previousAndcurrentMonthtransferredRefferal = refferalRepository
-
 
776
					.selectByEmailIdAndStatusAndDateRange(refereeEmail, RefferalStatus.transferred, drm);
-
 
777
			List<Refferal> preCurrMonthtransferred = previousAndcurrentMonthtransferredRefferal.stream()
-
 
778
					.filter(x -> x.getCreatedTimestamp().isBefore(currentMonthdate)).collect(Collectors.toList());
-
 
779
 
-
 
780
			long approvedRefferal = previousMonthapprovedRefferalbeforeSixteen.size()
-
 
781
					+ previousMonthtransferredRefferalbeforeSixteen.size() + preCurrMonthapproved.size()
-
 
782
					+ preCurrMonthtransferred.size();
-
 
783
			rfm = new RefferalEarningModel();
-
 
784
			if (approvedRefferal <= 4) {
-
 
785
				rfm.setActualEarning(approvedRefferal * 5000);
-
 
786
			} else if (approvedRefferal >= 5 && approvedRefferal <= 9) {
-
 
787
				rfm.setActualEarning(approvedRefferal * 10000);
-
 
788
			} else if (approvedRefferal > 10) {
-
 
789
				rfm.setActualEarning(approvedRefferal * 200000);
-
 
790
			}
-
 
791
			rfm.setYearMonth(YearMonth.now().minusMonths(1));
-
 
792
            rfm.setApprovedRefferal(approvedRefferal);
-
 
793
			refferAmountModel.add(rfm);
-
 
794
			List<Refferal> allpendingRefferal = refferalRepository.selectByEmailIdAndStatus(refereeEmail,
-
 
795
					RefferalStatus.pending);
-
 
796
			LOGGER.info("allpendingRefferal" + allpendingRefferal);
-
 
797
 
-
 
798
			drm.setStartDate(LocalDateTime.now().withDayOfMonth(16));
-
 
799
			drm.setEndDate(LocalDateTime.now().plusMonths(1).withDayOfMonth(1));
-
 
800
 
-
 
801
			List<Refferal> currentMonthapprovedRefferalAfterSixteen = refferalRepository
-
 
802
					.selectByEmailIdAndStatusAndDateRange(refereeEmail, RefferalStatus.approved, drm);
-
 
803
			List<Refferal> currentMonthtransferredRefferalAfterSixteen = refferalRepository
-
 
804
					.selectByEmailIdAndStatusAndDateRange(refereeEmail, RefferalStatus.transferred, drm);
-
 
805
			LOGGER.info("currentMonthapprovedRefferalAfterSixteen" + currentMonthapprovedRefferalAfterSixteen);
-
 
806
			drm.setStartDate(LocalDateTime.now().withDayOfMonth(1));
-
 
807
			drm.setEndDate(LocalDateTime.now().withDayOfMonth(16));
-
 
808
 
-
 
809
			List<Refferal> currentMonthapprovedRefferalbeforeSixteen = refferalRepository
-
 
810
					.selectByEmailIdAndStatusAndDateRanges(refereeEmail, RefferalStatus.approved, drm);
-
 
811
			List<Refferal> currentMonthtransferredRefferalbeforeSixteen = refferalRepository
-
 
812
					.selectByEmailIdAndStatusAndDateRanges(refereeEmail, RefferalStatus.transferred, drm);
-
 
813
			LOGGER.info("currentMonthapprovedRefferalbeforeSixteen" + currentMonthapprovedRefferalbeforeSixteen);
-
 
814
 
-
 
815
			currentMonthEstimaterefferal = allpendingRefferal.size() + currentMonthapprovedRefferalAfterSixteen.size()
-
 
816
					+ currentMonthapprovedRefferalbeforeSixteen.size();
-
 
817
			currentMonthConfirmedrefferal = currentMonthapprovedRefferalAfterSixteen.size()
-
 
818
					+ currentMonthtransferredRefferalAfterSixteen.size()
-
 
819
					+ currentMonthapprovedRefferalbeforeSixteen.size()
-
 
820
					+ currentMonthtransferredRefferalbeforeSixteen.size();
-
 
821
			rfm = new RefferalEarningModel();
-
 
822
			rfm.setPendingRefferal(allpendingRefferal.size());
-
 
823
			rfm.setApprovedRefferal(currentMonthConfirmedrefferal);
-
 
824
			rfm = refferAmountEarning(currentMonthEstimaterefferal, currentMonthConfirmedrefferal, YearMonth.now());
-
 
825
			refferAmountModel.add(rfm);
-
 
826
			LOGGER.info("currentMonthpendingApprovedrefferal" + currentMonthEstimaterefferal);
-
 
827
 
-
 
828
			LOGGER.info("currentMonthapprovedTransferredrefferal" + currentMonthConfirmedrefferal);
-
 
829
 
-
 
830
		}
-
 
831
		RefferalEarning re = new RefferalEarning();
-
 
832
		re.setTimestamp(LocalDateTime.now());
-
 
833
		re.setRefferalEarningModel(refferAmountModel);
-
 
834
		return responseSender.ok(re);
-
 
835
	}
-
 
836
 
-
 
837
	private RefferalEarningModel refferAmountEarning(long estimateRefferalValue, long confirmedRefferalValue,
-
 
838
			YearMonth yearMonth) {
-
 
839
		RefferalEarningModel rfm = new RefferalEarningModel();
-
 
840
		rfm.setYearMonth(yearMonth);
-
 
841
		if (estimateRefferalValue <= 4) {
-
 
842
			rfm.setMaximumEarning(estimateRefferalValue * 5000);
-
 
843
		} else if (estimateRefferalValue >= 5 && estimateRefferalValue <= 9) {
-
 
844
			rfm.setMaximumEarning(estimateRefferalValue * 10000);
-
 
845
		} else if (estimateRefferalValue > 10) {
-
 
846
			rfm.setMaximumEarning(200000);
-
 
847
		}
-
 
848
 
-
 
849
		if (confirmedRefferalValue <= 4) {
-
 
850
			rfm.setMinimumEarning(confirmedRefferalValue * 5000);
-
 
851
		} else if (confirmedRefferalValue >= 5 && confirmedRefferalValue <= 9) {
-
 
852
			rfm.setMinimumEarning(confirmedRefferalValue * 10000);
-
 
853
		} else if (confirmedRefferalValue > 10) {
-
 
854
			rfm.setMinimumEarning(200000);
-
 
855
		}
-
 
856
		return rfm;
-
 
857
	}
-
 
858
 
682
}
859
}