Subversion Repositories SmartDukaan

Rev

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

Rev 30923 Rev 30929
Line 2... Line 2...
2
 
2
 
3
import java.math.BigDecimal;
3
import java.math.BigDecimal;
4
import java.math.RoundingMode;
4
import java.math.RoundingMode;
5
import java.time.LocalDate;
5
import java.time.LocalDate;
6
import java.time.LocalDateTime;
6
import java.time.LocalDateTime;
-
 
7
import java.util.ArrayList;
7
import java.util.Arrays;
8
import java.util.Arrays;
8
import java.util.HashMap;
9
import java.util.HashMap;
9
import java.util.List;
10
import java.util.List;
10
import java.util.Map;
11
import java.util.Map;
11
import java.util.Map.Entry;
12
import java.util.Map.Entry;
-
 
13
import java.util.Set;
12
import java.util.stream.Collectors;
14
import java.util.stream.Collectors;
13
 
15
 
14
import javax.servlet.http.HttpServletRequest;
16
import javax.servlet.http.HttpServletRequest;
15
import javax.transaction.Transactional;
17
import javax.transaction.Transactional;
16
 
18
 
Line 20... Line 22...
20
import org.springframework.stereotype.Controller;
22
import org.springframework.stereotype.Controller;
21
import org.springframework.ui.Model;
23
import org.springframework.ui.Model;
22
import org.springframework.web.bind.annotation.RequestBody;
24
import org.springframework.web.bind.annotation.RequestBody;
23
import org.springframework.web.bind.annotation.RequestMapping;
25
import org.springframework.web.bind.annotation.RequestMapping;
24
import org.springframework.web.bind.annotation.RequestMethod;
26
import org.springframework.web.bind.annotation.RequestMethod;
-
 
27
import org.springframework.web.bind.annotation.RequestParam;
25
 
28
 
26
import com.spice.profitmandi.common.enumuration.MessageType;
29
import com.spice.profitmandi.common.enumuration.MessageType;
27
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
30
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
28
import com.spice.profitmandi.common.model.CustomRetailer;
31
import com.spice.profitmandi.common.model.CustomRetailer;
29
import com.spice.profitmandi.common.model.SendNotificationModel;
32
import com.spice.profitmandi.common.model.SendNotificationModel;
Line 31... Line 34...
31
import com.spice.profitmandi.dao.entity.dtr.CreditAccount;
34
import com.spice.profitmandi.dao.entity.dtr.CreditAccount;
32
import com.spice.profitmandi.dao.entity.dtr.CreditStatus;
35
import com.spice.profitmandi.dao.entity.dtr.CreditStatus;
33
import com.spice.profitmandi.dao.entity.fofo.CurrentPartnerDailyInvestment;
36
import com.spice.profitmandi.dao.entity.fofo.CurrentPartnerDailyInvestment;
34
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
37
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
35
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
38
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
-
 
39
import com.spice.profitmandi.dao.entity.transaction.Loan;
36
import com.spice.profitmandi.dao.entity.transaction.SDCreditRequirement;
40
import com.spice.profitmandi.dao.entity.transaction.SDCreditRequirement;
37
import com.spice.profitmandi.dao.entity.transaction.SanctionRequest;
41
import com.spice.profitmandi.dao.entity.transaction.SanctionRequest;
-
 
42
import com.spice.profitmandi.dao.entity.transaction.UserWallet;
38
import com.spice.profitmandi.dao.enumuration.fofo.Gateway;
43
import com.spice.profitmandi.dao.enumuration.fofo.Gateway;
39
import com.spice.profitmandi.dao.enumuration.transaction.CreditRisk;
-
 
40
import com.spice.profitmandi.dao.enumuration.transaction.SanctionStatus;
44
import com.spice.profitmandi.dao.enumuration.transaction.SanctionStatus;
-
 
45
import com.spice.profitmandi.dao.model.SDCreditResponseOut;
41
import com.spice.profitmandi.dao.model.SanctionRequestModel;
46
import com.spice.profitmandi.dao.model.SanctionRequestModel;
42
import com.spice.profitmandi.dao.model.SdCreditRequirementModel;
47
import com.spice.profitmandi.dao.model.SdCreditRequirementModel;
43
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
48
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
44
import com.spice.profitmandi.dao.repository.dtr.CreditAccountRepository;
49
import com.spice.profitmandi.dao.repository.dtr.CreditAccountRepository;
45
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
50
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
46
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
51
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
47
import com.spice.profitmandi.dao.repository.fofo.CurrentPartnerDailyInvestmentRepository;
52
import com.spice.profitmandi.dao.repository.fofo.CurrentPartnerDailyInvestmentRepository;
48
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
53
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
-
 
54
import com.spice.profitmandi.dao.repository.transaction.LoanRepository;
49
import com.spice.profitmandi.dao.repository.transaction.SDCreditRequirementRepository;
55
import com.spice.profitmandi.dao.repository.transaction.SDCreditRequirementRepository;
50
import com.spice.profitmandi.dao.repository.transaction.SanctionRequestRepository;
56
import com.spice.profitmandi.dao.repository.transaction.SanctionRequestRepository;
-
 
57
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
51
import com.spice.profitmandi.service.NotificationService;
58
import com.spice.profitmandi.service.NotificationService;
52
import com.spice.profitmandi.service.transaction.SDCreditService;
59
import com.spice.profitmandi.service.transaction.SDCreditService;
53
import com.spice.profitmandi.service.user.RetailerService;
60
import com.spice.profitmandi.service.user.RetailerService;
54
 
61
 
55
@Controller
62
@Controller
Line 87... Line 94...
87
	private UserRepository userRepository;
94
	private UserRepository userRepository;
88
 
95
 
89
	@Autowired
96
	@Autowired
90
	private CurrentPartnerDailyInvestmentRepository currentPartnerDailyInvestmentRepository;
97
	private CurrentPartnerDailyInvestmentRepository currentPartnerDailyInvestmentRepository;
91
 
98
 
-
 
99
	@Autowired
-
 
100
	private UserWalletRepository userWalletRepository;
-
 
101
 
-
 
102
	@Autowired
-
 
103
	LoanRepository loanRepository;
-
 
104
 
92
	private static final Logger LOGGER = LogManager.getLogger(SDCreditController.class);
105
	private static final Logger LOGGER = LogManager.getLogger(SDCreditController.class);
93
 
106
 
94
	@RequestMapping(value = "/getSDCreditReq", method = RequestMethod.GET)
107
	@RequestMapping(value = "/getSDCreditReq", method = RequestMethod.GET)
95
	public String getSDCreditReq(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
108
	public String getSDCreditReq(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
96
 
109
 
Line 137... Line 150...
137
 
150
 
138
		SDCreditRequirement sdCreditRequirement = sdCreditRequirementRepository
151
		SDCreditRequirement sdCreditRequirement = sdCreditRequirementRepository
139
				.selectByFofoId(sdCreditRequirementModel.getFofoId());
152
				.selectByFofoId(sdCreditRequirementModel.getFofoId());
140
 
153
 
141
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(sdCreditRequirementModel.getFofoId());
154
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(sdCreditRequirementModel.getFofoId());
142
		BigDecimal suggestedAmount = new BigDecimal((fofoStore.getMinimumInvestment() * 0.1));
-
 
143
 
-
 
144
		LOGGER.info("sdCreditRequirement {} ", sdCreditRequirement);
-
 
145
 
-
 
146
		sdCreditRequirement.setSecurityCheck(sdCreditRequirementModel.getSecurityCheck());
155
		sdCreditRequirement.setSecurityCheck(sdCreditRequirementModel.getSecurityCheck());
147
		// sdCreditRequirement.setSecurityCheck(2);
156
		// sdCreditRequirement.setSecurityCheck(2);
148
 
157
 
149
		sdCreditRequirement.setInterestRate(sdCreditRequirementModel.getInterest());
158
		sdCreditRequirement.setInterestRate(sdCreditRequirementModel.getInterest());
150
		sdCreditRequirement.setFreeDays(sdCreditRequirementModel.getFreeDays());
159
		sdCreditRequirement.setFreeDays(sdCreditRequirementModel.getFreeDays());
151
		sdCreditRequirement.setLimit(sdCreditRequirementModel.getLimit());
160
		sdCreditRequirement.setLimit(sdCreditRequirementModel.getLimit());
152
		sdCreditRequirement.setSuggestedLimit(suggestedAmount);
-
 
153
		BigDecimal utilizedLimit = new BigDecimal(sdCreditService.getUtilizationAmount(fofoId));
161
		BigDecimal utilizedLimit = new BigDecimal(sdCreditService.getUtilizationAmount(fofoId));
154
 
162
 
155
		BigDecimal availableLimit = sdCreditRequirement.getLimit().subtract(utilizedLimit);
163
		BigDecimal availableLimit = sdCreditRequirement.getLimit().subtract(utilizedLimit);
156
 
164
 
157
		LOGGER.info("utilizedLimit {} ", utilizedLimit);
165
		LOGGER.info("utilizedLimit {} ", utilizedLimit);
Line 160... Line 168...
160
 
168
 
161
		sdCreditRequirement.setUtilizedAmount(utilizedLimit);
169
		sdCreditRequirement.setUtilizedAmount(utilizedLimit);
162
 
170
 
163
		sdCreditRequirement.setAvailableLimit(availableLimit);
171
		sdCreditRequirement.setAvailableLimit(availableLimit);
164
		sdCreditRequirement.setCreditDays(15);
172
		sdCreditRequirement.setCreditDays(15);
165
		sdCreditRequirement.setRisk(CreditRisk.NO_RISK);
-
 
166
 
-
 
167
		sdCreditRequirement.setUpdateTimestamp(LocalDateTime.now());
173
		sdCreditRequirement.setUpdateTimestamp(LocalDateTime.now());
168
 
174
 
169
		if (sdCreditRequirement.getSecurityCheck() > 0) {
175
		if (sdCreditRequirement.getSecurityCheck() > 0) {
170
 
176
 
171
			CreditAccount creditAccount = creditAccountRepository
177
			CreditAccount creditAccount = creditAccountRepository
Line 309... Line 315...
309
 
315
 
310
		return "sanction-request-row";
316
		return "sanction-request-row";
311
 
317
 
312
	}
318
	}
313
 
319
 
-
 
320
	@RequestMapping(value = "/getLoans", method = RequestMethod.GET)
-
 
321
	public String getLoans(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
-
 
322
		List<Loan> loans = loanRepository.selectAllLoan();
-
 
323
 
-
 
324
		Set<Integer> fofoIds = loans.stream().map(x -> x.getFofoId()).collect(Collectors.toSet());
-
 
325
 
-
 
326
		List<SDCreditRequirement> sdCreditRequirements = sdCreditRequirementRepository
-
 
327
				.selectByFofoIds(new ArrayList<>(fofoIds));
-
 
328
 
-
 
329
		Map<Integer, Long> loanCountMap = loans.stream()
-
 
330
				.collect(Collectors.groupingBy(x -> x.getFofoId(), Collectors.counting()));
-
 
331
 
-
 
332
		Map<Integer, UserWallet> userWalletMap = userWalletRepository.selectByRetailerIds(fofoIds).stream()
-
 
333
				.collect(Collectors.toMap(x -> x.getUserId(), x -> x));
-
 
334
		Map<Integer, CurrentPartnerDailyInvestment> currentPartnerDailyInvestmentMap = currentPartnerDailyInvestmentRepository
-
 
335
				.selectAll().stream().collect(Collectors.toMap(x -> x.getFofoId(), x -> x));
-
 
336
 
-
 
337
		model.addAttribute("userWalletMap", userWalletMap);
-
 
338
 
-
 
339
		model.addAttribute("currentPartnerDailyInvestmentMap", currentPartnerDailyInvestmentMap);
-
 
340
 
-
 
341
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getFofoRetailers(new ArrayList<>(fofoIds));
-
 
342
		model.addAttribute("sdCreditRequirements", sdCreditRequirements);
-
 
343
		model.addAttribute("loanCountMap", loanCountMap);
-
 
344
		model.addAttribute("customRetailerMap", customRetailerMap);
-
 
345
		return "loan-summary";
-
 
346
 
-
 
347
	}
-
 
348
 
-
 
349
	@RequestMapping(value = "/getLoanSummary", method = RequestMethod.GET)
-
 
350
	public String getLoanSummary(HttpServletRequest request, @RequestParam int fofoId, Model model)
-
 
351
			throws ProfitMandiBusinessException {
-
 
352
 
-
 
353
		SDCreditResponseOut sdCreditResponseOut = sdCreditService.sdDirectService(fofoId);
-
 
354
		CustomRetailer customRetailer = retailerService.getFofoRetailer(fofoId);
-
 
355
 
-
 
356
		model.addAttribute("customRetailer", customRetailer);
-
 
357
		model.addAttribute("loanSummary", sdCreditResponseOut.getLoans());
-
 
358
 
-
 
359
		return "loan-summary-detail";
-
 
360
 
-
 
361
	}
-
 
362
 
314
}
363
}
315
364