| 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 |
}
|