Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
23505 ashik.ali 1
package com.spice.profitmandi.web.controller;
2
 
23528 ashik.ali 3
import java.util.ArrayList;
23505 ashik.ali 4
import java.util.HashMap;
5
import java.util.HashSet;
6
import java.util.List;
7
import java.util.Map;
8
import java.util.Set;
9
 
10
import javax.servlet.http.HttpServletRequest;
11
 
23575 ashik.ali 12
import org.slf4j.Logger;
13
import org.slf4j.LoggerFactory;
23505 ashik.ali 14
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.beans.factory.annotation.Value;
16
import org.springframework.stereotype.Controller;
17
import org.springframework.transaction.annotation.Transactional;
18
import org.springframework.ui.Model;
19
import org.springframework.web.bind.annotation.RequestBody;
20
import org.springframework.web.bind.annotation.RequestMapping;
21
import org.springframework.web.bind.annotation.RequestMethod;
22
import org.springframework.web.bind.annotation.RequestParam;
23
 
24
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
25
import com.spice.profitmandi.common.model.OperatorType;
26
import com.spice.profitmandi.common.model.ProfitMandiConstants;
23528 ashik.ali 27
import com.spice.profitmandi.common.model.RechargeCommissionRequest;
28
import com.spice.profitmandi.common.model.RechargeCredential;
23505 ashik.ali 29
import com.spice.profitmandi.common.model.RechargeRequest;
23528 ashik.ali 30
import com.spice.profitmandi.dao.entity.dtr.RechargeCommission;
23505 ashik.ali 31
import com.spice.profitmandi.dao.entity.dtr.RechargeOperator;
23575 ashik.ali 32
import com.spice.profitmandi.dao.entity.dtr.RechargeProvider;
23505 ashik.ali 33
import com.spice.profitmandi.dao.entity.dtr.RechargeTransaction;
23548 ashik.ali 34
import com.spice.profitmandi.dao.entity.fofo.PaymentOption;
23505 ashik.ali 35
import com.spice.profitmandi.dao.enumuration.dtr.RechargeType;
23528 ashik.ali 36
import com.spice.profitmandi.dao.repository.dtr.RechargeCommissionRepository;
23505 ashik.ali 37
import com.spice.profitmandi.dao.repository.dtr.RechargeOperatorRepository;
23575 ashik.ali 38
import com.spice.profitmandi.dao.repository.dtr.RechargeProviderRepository;
23505 ashik.ali 39
import com.spice.profitmandi.dao.repository.dtr.RechargeTransactionRepository;
23548 ashik.ali 40
import com.spice.profitmandi.dao.repository.fofo.FofoPartnerPaymentOptionRepository;
41
import com.spice.profitmandi.dao.repository.fofo.PaymentOptionRepository;
23505 ashik.ali 42
import com.spice.profitmandi.service.recharge.RechargeService;
43
import com.spice.profitmandi.web.model.LoginDetails;
44
import com.spice.profitmandi.web.util.CookiesProcessor;
45
 
46
@Controller
47
@Transactional(rollbackFor=Throwable.class)
48
public class RechargeController {
49
 
23575 ashik.ali 50
	private static final Logger LOGGER = LoggerFactory.getLogger(RechargeController.class);
23505 ashik.ali 51
 
23575 ashik.ali 52
	@Value("${oxigen.recharge.transaction.url}")
53
	private String oxigenRechargeTransactionUrl;
23528 ashik.ali 54
 
23575 ashik.ali 55
	@Value("${oxigen.recharge.enquiry.url}")
56
	private String oxigenRechargeEnquiryUrl;
23505 ashik.ali 57
 
23575 ashik.ali 58
	@Value("${oxigen.recharge.auth.key}")
59
	private String oxigenRechargeAuthKey;
23528 ashik.ali 60
 
23575 ashik.ali 61
	@Value("${oxigen.recharge.validation.url}")
62
	private String oxigenRechargeValidationUrl;
23505 ashik.ali 63
 
23575 ashik.ali 64
	@Value("${oxigen.recharge.validation.auth.key}")
65
	private String oxigenRechargeValidationAuthKey;
23528 ashik.ali 66
 
23575 ashik.ali 67
	@Value("${think.walnut.digital.recharge.transaction.mobile.url}")
68
	private String thinkWalnutDigitalRechargeTransactionMobileUrl;
23505 ashik.ali 69
 
23575 ashik.ali 70
	@Value("${think.walnut.digital.recharge.transaction.mobile.username}")
71
	private String thinkWalnutDigitalRechargeTransactionMobileUserName;
23528 ashik.ali 72
 
23575 ashik.ali 73
	@Value("${think.walnut.digital.recharge.transaction.mobile.password}")
74
	private String thinkWalnutDigitalRechargeTransactionMobilePassword;
23528 ashik.ali 75
 
23575 ashik.ali 76
	@Value("${think.walnut.digital.recharge.transaction.dth.url}")
77
	private String thinkWalnutDigitalRechargeTransactionDthUrl;
23528 ashik.ali 78
 
23575 ashik.ali 79
	@Value("${think.walnut.digital.recharge.transaction.dth.username}")
80
	private String thinkWalnutDigitalRechargeTransactionDthUserName;
23528 ashik.ali 81
 
23575 ashik.ali 82
	@Value("${think.walnut.digital.recharge.transaction.dth.password}")
83
	private String thinkWalnutDigitalRechargeTransactionDthPassword;
23559 ashik.ali 84
 
23575 ashik.ali 85
	@Value("${think.walnut.digital.recharge.enquiry.url}")
86
	private String thinkWalnutDigitalRechargeEnquiryUrl;
23505 ashik.ali 87
 
23575 ashik.ali 88
	@Value("${think.walnut.digital.recharge.enquiry.username}")
89
	private String thinkWalnutDigitalRechargeEnquiryUserName;
90
 
91
	@Value("${think.walnut.digital.recharge.enquiry.password}")
92
	private String thinkWalnutDigitalRechargeEnquiryPassword;
93
 
94
	@Value("${think.walnut.digital.recharge.auth.key}")
95
	private String thinkWalnutDigitalRechargeAuthKey;
96
 
23505 ashik.ali 97
	@Autowired
98
	private RechargeService rechargeService;
99
 
100
	@Autowired
101
	private RechargeOperatorRepository rechargeOperatorRepository;
102
 
103
	@Autowired
23575 ashik.ali 104
	private RechargeProviderRepository rechargeProviderRepository;
105
 
106
	@Autowired
23505 ashik.ali 107
	private RechargeTransactionRepository rechargeTransactionRepository;
108
 
109
	@Autowired
23528 ashik.ali 110
	private RechargeCommissionRepository rechargeCommissionRepository;
111
 
112
	@Autowired
23548 ashik.ali 113
	private PaymentOptionRepository paymentOptionRepository;
114
 
115
	@Autowired
116
	private FofoPartnerPaymentOptionRepository fofoPartnerPaymentOptionRepository;
117
 
118
	@Autowired
23505 ashik.ali 119
	private CookiesProcessor cookiesProcessor;
120
 
121
	@RequestMapping(value = "/createRecharge", method = RequestMethod.GET)
23548 ashik.ali 122
	public String createRecharge(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.RECHARGE_TYPE) String rechargeTypeString, Model model) throws ProfitMandiBusinessException{
23505 ashik.ali 123
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
124
		//model.addAttribute("rechargeTypes", RechargeType.values());
23548 ashik.ali 125
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23505 ashik.ali 126
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
127
		List<RechargeOperator> rechargeOperators = null;
128
		if(rechargeType == RechargeType.MOBILE) {
129
			model.addAttribute("operatorTypes", OperatorType.values());
130
			rechargeOperators = rechargeOperatorRepository.selectAllByOperatorType(OperatorType.PREPAID);
131
		}else {
132
			rechargeOperators = rechargeOperatorRepository.selectAllByRechargeType(rechargeType);
133
		}
23548 ashik.ali 134
 
135
		List<Integer> paymentOptionIds = fofoPartnerPaymentOptionRepository.selectPaymentOptionIdsByFofoId(loginDetails.getFofoId());
136
		List<PaymentOption> paymentOptions = paymentOptionRepository.selectByIds(new HashSet<>(paymentOptionIds));
137
		model.addAttribute("paymentOptions", paymentOptions);
23505 ashik.ali 138
		model.addAttribute("rechargeOperators", rechargeOperators);
139
		return "create-recharge";
140
	}
141
 
23528 ashik.ali 142
	private Map<Integer, String> rechargeTransactionsToRechargeOperatorIdNameMap(List<RechargeTransaction> rechargeTransactions){
23505 ashik.ali 143
		Map<Integer, String> rechargeOperatorIdrechargeOperatorNameMap = new HashMap<>();
144
		if(rechargeTransactions.isEmpty()) {
145
			return rechargeOperatorIdrechargeOperatorNameMap;
146
		}
147
		Set<Integer> operatorIds = new HashSet<>();
148
		for(RechargeTransaction rechargeTransaction : rechargeTransactions) {
149
			operatorIds.add(rechargeTransaction.getOperatorId());
150
		}
151
 
152
		List<RechargeOperator> rechargeOperators = rechargeOperatorRepository.selectAllByIds(operatorIds);
153
		for(RechargeOperator rechargeOperator : rechargeOperators) {
154
			rechargeOperatorIdrechargeOperatorNameMap.put(rechargeOperator.getId(), rechargeOperator.getName());
155
		}
156
		return rechargeOperatorIdrechargeOperatorNameMap;
157
	}
158
 
23528 ashik.ali 159
	private Map<Integer, RechargeOperator> rechargeCommissionsOperatorIdRechargeOperatorMap(List<RechargeCommission> rechargeCommissions){
160
		Map<Integer, RechargeOperator> rechargeOperatorIdNameMap = new HashMap<>();
161
		if(rechargeCommissions.isEmpty()) {
162
			return rechargeOperatorIdNameMap;
163
		}
164
		Set<Integer> operatorIds = new HashSet<>();
165
		for(RechargeCommission rechargeCommission : rechargeCommissions) {
166
			operatorIds.add(rechargeCommission.getOperatorId());
167
		}
168
 
169
		List<RechargeOperator> rechargeOperators = rechargeOperatorRepository.selectAllByIds(operatorIds);
170
		for(RechargeOperator rechargeOperator : rechargeOperators) {
171
			rechargeOperatorIdNameMap.put(rechargeOperator.getId(), rechargeOperator);
172
		}
173
		return rechargeOperatorIdNameMap;
174
	}
175
 
23575 ashik.ali 176
	private Map<Integer, String> rechargeCommissionsProviderIdNameMap(List<RechargeCommission> rechargeCommissions){
177
		Map<Integer, String> rechargeProviderIdNameMap = new HashMap<>();
178
		if(rechargeCommissions.isEmpty()) {
179
			return rechargeProviderIdNameMap;
180
		}
181
		Set<Integer> providerIds = new HashSet<>();
182
		for(RechargeCommission rechargeCommission : rechargeCommissions) {
183
			providerIds.add(rechargeCommission.getProviderId());
184
		}
185
 
186
		List<RechargeProvider> rechargeProviders = rechargeProviderRepository.selectAllByIds(providerIds);
187
		for(RechargeProvider rechargeProvider : rechargeProviders) {
188
			rechargeProviderIdNameMap.put(rechargeProvider.getId(), rechargeProvider.getName());
189
		}
190
		return rechargeProviderIdNameMap;
191
	}
192
 
23505 ashik.ali 193
	@RequestMapping(value = "/createRecharge", method = RequestMethod.POST)
194
	public String createRecharge(HttpServletRequest request, @RequestBody RechargeRequest rechargeRequest, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
23528 ashik.ali 195
		LOGGER.info("Recharge request body {}", rechargeRequest);
23505 ashik.ali 196
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23575 ashik.ali 197
 
23559 ashik.ali 198
		RechargeCredential rechargeTransactionMobileCredential = new RechargeCredential();
23575 ashik.ali 199
		rechargeTransactionMobileCredential.setRechargeUrl(thinkWalnutDigitalRechargeTransactionMobileUrl);
200
		rechargeTransactionMobileCredential.setRechargeUserName(thinkWalnutDigitalRechargeTransactionMobileUserName);
201
		rechargeTransactionMobileCredential.setRechargePassword(thinkWalnutDigitalRechargeTransactionMobilePassword);
202
		rechargeTransactionMobileCredential.setRechargeAuthKey(thinkWalnutDigitalRechargeAuthKey);
23528 ashik.ali 203
 
23559 ashik.ali 204
		RechargeCredential rechargeTransactionDthCredential = new RechargeCredential();
23575 ashik.ali 205
		rechargeTransactionDthCredential.setRechargeUrl(thinkWalnutDigitalRechargeTransactionDthUrl);
206
		rechargeTransactionDthCredential.setRechargeUserName(thinkWalnutDigitalRechargeTransactionDthUserName);
207
		rechargeTransactionDthCredential.setRechargePassword(thinkWalnutDigitalRechargeTransactionDthPassword);
208
		rechargeTransactionDthCredential.setRechargeAuthKey(thinkWalnutDigitalRechargeAuthKey);
23528 ashik.ali 209
 
23575 ashik.ali 210
		rechargeService.doRecharge(oxigenRechargeTransactionUrl, oxigenRechargeAuthKey, oxigenRechargeValidationUrl,
211
				oxigenRechargeValidationAuthKey, rechargeTransactionMobileCredential, rechargeTransactionDthCredential, loginDetails.getFofoId(), rechargeRequest);
23505 ashik.ali 212
		RechargeType rechargeType = RechargeType.valueOf(rechargeRequest.getRechargeType());
213
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
214
		long size = rechargeTransactionRepository.selectCountByRetailerIdAndType(loginDetails.getFofoId(), rechargeType);
23528 ashik.ali 215
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeTransactionsToRechargeOperatorIdNameMap(rechargeTransactions);
23505 ashik.ali 216
		model.addAttribute("rechargeTransactions", rechargeTransactions);
217
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
218
		model.addAttribute("start", offset + 1);
219
		model.addAttribute("size", size);
220
		if (rechargeTransactions.size() < limit){
221
			model.addAttribute("end", offset + rechargeTransactions.size());
222
		}else{
223
			model.addAttribute("end", offset + limit);
224
		}
225
		if(RechargeType.valueOf(rechargeRequest.getRechargeType()) == RechargeType.MOBILE) {
226
			return "mobile-recharges";
227
		}else {
228
			return "dth-recharges";
229
		}
230
	}
231
 
232
	@RequestMapping(value = "/checkStatus", method = RequestMethod.GET)
233
	public String checkStatus(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.REQUEST_ID) String requestId, @RequestParam(name = ProfitMandiConstants.RECHARGE_TYPE) String rechargeTypeString, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
234
		LOGGER.info("RequestId [{}], rechargeType [{}]", requestId, rechargeTypeString);
235
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23575 ashik.ali 236
		RechargeCredential thinkWalnutDigitalRechargeEnquiryCredential = new RechargeCredential();
237
		thinkWalnutDigitalRechargeEnquiryCredential.setRechargeUrl(thinkWalnutDigitalRechargeEnquiryUrl);
238
		thinkWalnutDigitalRechargeEnquiryCredential.setRechargeUserName(thinkWalnutDigitalRechargeEnquiryUserName);
239
		thinkWalnutDigitalRechargeEnquiryCredential.setRechargePassword(thinkWalnutDigitalRechargeEnquiryPassword);
240
		thinkWalnutDigitalRechargeEnquiryCredential.setRechargeAuthKey(thinkWalnutDigitalRechargeAuthKey);
241
		rechargeService.checkStatus(oxigenRechargeEnquiryUrl, oxigenRechargeAuthKey, thinkWalnutDigitalRechargeEnquiryCredential, loginDetails.getFofoId(), requestId);
23505 ashik.ali 242
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
243
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
244
		//long size = rechargeTransactionRepository.selectCountByRetailerId(loginDetails.getFofoId());
23528 ashik.ali 245
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeTransactionsToRechargeOperatorIdNameMap(rechargeTransactions);
23505 ashik.ali 246
		model.addAttribute("rechargeTransactions", rechargeTransactions);
247
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
248
 
249
		if(RechargeType.valueOf(rechargeTypeString) == RechargeType.MOBILE) {
250
			return "mobile-recharges-paginated";
251
		}else {
252
			return "dth-recharges-paginated";
253
		}
254
	}
255
 
256
	@RequestMapping(value = "/getRecharges", method = RequestMethod.GET)
257
	public String getRecharges(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.RECHARGE_TYPE) String rechargeTypeString, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
258
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
259
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
260
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
261
		long size = rechargeTransactionRepository.selectCountByRetailerIdAndType(loginDetails.getFofoId(), rechargeType);
23528 ashik.ali 262
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeTransactionsToRechargeOperatorIdNameMap(rechargeTransactions);
23505 ashik.ali 263
		model.addAttribute("rechargeTransactions", rechargeTransactions);
264
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
265
		model.addAttribute("start", offset + 1);
266
		model.addAttribute("size", size);
267
		if (rechargeTransactions.size() < limit){
268
			model.addAttribute("end", offset + rechargeTransactions.size());
269
		}else{
270
			model.addAttribute("end", offset + limit);
271
		}
272
		if(RechargeType.valueOf(rechargeTypeString) == RechargeType.MOBILE) {
273
			return "mobile-recharges";
274
		}else {
275
			return "dth-recharges";
276
		}
277
	}
278
 
279
	@RequestMapping(value = "/getPaginatedRecharges", method = RequestMethod.GET)
280
	public String getPaginatedRecharges(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.RECHARGE_TYPE) String rechargeTypeString, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
281
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
282
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
283
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
23528 ashik.ali 284
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeTransactionsToRechargeOperatorIdNameMap(rechargeTransactions);
23505 ashik.ali 285
		model.addAttribute("rechargeTransactions", rechargeTransactions);
286
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
287
		if(RechargeType.valueOf(rechargeTypeString) == RechargeType.MOBILE) {
288
			return "mobile-recharges-paginated";
289
		}else {
290
			return "dth-recharges-paginated";
291
		}
292
	}
293
 
23528 ashik.ali 294
	@RequestMapping(value = "/getRechargeOperators", method = RequestMethod.GET)
295
	public String getRechargeOperators(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.OPERATOR_TYPE) String operatorTypeString, Model model){
23505 ashik.ali 296
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
297
		//model.addAttribute("rechargeTypes", RechargeType.values());
298
		OperatorType operatorType = OperatorType.valueOf(operatorTypeString);
299
		List<RechargeOperator> rechargeOperators = rechargeOperatorRepository.selectAllByOperatorType(operatorType);
300
		model.addAttribute("rechargeOperators", rechargeOperators);
301
		return "recharge-operators";
302
	}
303
 
23528 ashik.ali 304
	@RequestMapping(value = "/getRechargeCommissionOperators", method = RequestMethod.GET)
305
	public String getRechargeCommissionOperators(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.OPERATOR_TYPE) String operatorTypeString, Model model) throws ProfitMandiBusinessException{
306
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
307
		//model.addAttribute("rechargeTypes", RechargeType.values());
308
		OperatorType operatorType = OperatorType.valueOf(operatorTypeString);
309
		List<RechargeOperator> rechargeOperators = rechargeOperatorRepository.selectAllByOperatorType(operatorType);
310
		List<Integer> rechargeOperatorIds = rechargeCommissionRepository.selectAllOperatorIds();
311
		if(!rechargeOperatorIds.isEmpty()) {
312
			rechargeOperators = this.filterRechargeOperators(rechargeOperators, rechargeOperatorIds);
313
			if(rechargeOperators.isEmpty()) {
314
				throw new ProfitMandiBusinessException(ProfitMandiConstants.OPERATOR_TYPE, operatorType, "RCHRG_1003");
315
			}
316
		}
317
		model.addAttribute("rechargeOperators", rechargeOperators);
318
		return "recharge-operators";
319
	}
23505 ashik.ali 320
 
23528 ashik.ali 321
	@RequestMapping(value = "/createRechargeCommission", method = RequestMethod.GET)
322
	public String createRechargeCommission(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.RECHARGE_TYPE) String rechargeTypeString, Model model) throws ProfitMandiBusinessException{
323
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
324
		//model.addAttribute("rechargeTypes", RechargeType.values());
325
 
326
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
327
		List<RechargeOperator> rechargeOperators = null;
328
		if(rechargeType == RechargeType.MOBILE) {
329
			model.addAttribute("operatorTypes", OperatorType.values());
330
			rechargeOperators = rechargeOperatorRepository.selectAllByOperatorType(OperatorType.PREPAID);
331
		}else {
332
			rechargeOperators = rechargeOperatorRepository.selectAllByRechargeType(rechargeType);
333
		}
334
		List<Integer> rechargeOperatorIds = rechargeCommissionRepository.selectAllOperatorIds();
335
		if(!rechargeOperatorIds.isEmpty()) {
336
			rechargeOperators = this.filterRechargeOperators(rechargeOperators, rechargeOperatorIds);
337
			if(rechargeOperators.isEmpty()) {
338
				throw new ProfitMandiBusinessException(ProfitMandiConstants.RECHARGE_TYPE, rechargeType, "RCHRG_1003");
339
			}
340
		}
341
		model.addAttribute("rechargeOperators", rechargeOperators);
342
		return "create-recharge-commission";
343
	}
344
 
345
	private List<RechargeOperator> filterRechargeOperators(List<RechargeOperator> rechargeOperators, List<Integer> rechargeOperatorIds){
346
		List<RechargeOperator> filteredRechargeOperators = new ArrayList<>();
347
		for(RechargeOperator rechargeOperator : rechargeOperators) {
348
			if(!rechargeOperatorIds.contains(rechargeOperator.getId())) {
349
				filteredRechargeOperators.add(rechargeOperator);
350
			}
351
		}
352
		return filteredRechargeOperators;
353
	}
354
 
355
	@RequestMapping(value = "/createRechargeCommission", method = RequestMethod.POST)
356
	public String createRechargeCommission(HttpServletRequest request, @RequestBody RechargeCommissionRequest rechargeCommissionRequest, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
357
		rechargeService.createRechargeCommission(rechargeCommissionRequest);
358
		List<RechargeCommission> rechargeCommissions = rechargeCommissionRepository.selectAllPaginated(offset, limit);
359
		long size = rechargeCommissionRepository.selectAllCount();
360
		Map<Integer, RechargeOperator> rechargeOperatorIdRechargeOperatorMap = this.rechargeCommissionsOperatorIdRechargeOperatorMap(rechargeCommissions);
23575 ashik.ali 361
		Map<Integer, String> rechargeProviderIdNameMap = this.rechargeCommissionsProviderIdNameMap(rechargeCommissions);
23528 ashik.ali 362
		model.addAttribute("rechargeCommissions", rechargeCommissions);
363
		model.addAttribute("rechargeOperatorIdRechargeOperatorMap", rechargeOperatorIdRechargeOperatorMap);
23575 ashik.ali 364
		model.addAttribute("rechargeProviderIdNameMap", rechargeProviderIdNameMap);
23528 ashik.ali 365
		model.addAttribute("start", offset + 1);
366
		model.addAttribute("size", size);
367
		if (rechargeCommissions.size() < limit){
368
			model.addAttribute("end", offset + rechargeCommissions.size());
369
		}else{
370
			model.addAttribute("end", offset + limit);
371
		}
372
		return "recharge-commissions";
373
	}
374
 
375
	@RequestMapping(value = "/getRechargeCommissions", method = RequestMethod.GET)
376
	public String getRechargeCommissions(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
377
		//LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
378
		//RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
379
		List<RechargeCommission> rechargeCommissions = rechargeCommissionRepository.selectAllPaginated(offset, limit);
380
		long size = rechargeCommissionRepository.selectAllCount();
381
		Map<Integer, RechargeOperator> rechargeOperatorIdRechargeOperatorMap = this.rechargeCommissionsOperatorIdRechargeOperatorMap(rechargeCommissions);
23575 ashik.ali 382
		Map<Integer, String> rechargeProviderIdNameMap = this.rechargeCommissionsProviderIdNameMap(rechargeCommissions);
23528 ashik.ali 383
		model.addAttribute("rechargeCommissions", rechargeCommissions);
384
		model.addAttribute("rechargeOperatorIdRechargeOperatorMap", rechargeOperatorIdRechargeOperatorMap);
23575 ashik.ali 385
		model.addAttribute("rechargeProviderIdNameMap", rechargeProviderIdNameMap);
23528 ashik.ali 386
		model.addAttribute("start", offset + 1);
387
		model.addAttribute("size", size);
388
		if (rechargeCommissions.size() < limit){
389
			model.addAttribute("end", offset + rechargeCommissions.size());
390
		}else{
391
			model.addAttribute("end", offset + limit);
392
		}
393
		return "recharge-commissions";
394
	}
395
 
396
	@RequestMapping(value = "/getPaginatedRechargeCommissions", method = RequestMethod.GET)
397
	public String getPaginatedRechargeCommissions(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
398
		//LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
399
		//RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
400
		List<RechargeCommission> rechargeCommissions = rechargeCommissionRepository.selectAllPaginated(offset, limit);
401
		Map<Integer, RechargeOperator> rechargeOperatorIdRechargeOperatorMap = this.rechargeCommissionsOperatorIdRechargeOperatorMap(rechargeCommissions);
23575 ashik.ali 402
		Map<Integer, String> rechargeProviderIdNameMap = this.rechargeCommissionsProviderIdNameMap(rechargeCommissions);
23528 ashik.ali 403
		model.addAttribute("rechargeCommissions", rechargeCommissions);
404
		model.addAttribute("rechargeOperatorIdRechargeOperatorMap", rechargeOperatorIdRechargeOperatorMap);
23575 ashik.ali 405
		model.addAttribute("rechargeProviderIdNameMap", rechargeProviderIdNameMap);
23528 ashik.ali 406
		return "recharge-commissions-paginated";
407
	}
408
 
409
	@RequestMapping(value = "/getRechargeCommissionByOperatorId", method = RequestMethod.GET)
23575 ashik.ali 410
	public String getRechargeCommissionByOperatorId(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.OPERATOR_ID) int operatorId, @RequestParam(name = ProfitMandiConstants.PROVIDER_ID) int providerId, Model model)  throws ProfitMandiBusinessException{
23528 ashik.ali 411
		RechargeOperator rechargeOperator = rechargeOperatorRepository.selectById(operatorId);
23575 ashik.ali 412
		RechargeCommission rechargeCommission = rechargeCommissionRepository.selectByOperatorIdAndProviderId(operatorId, providerId);
23528 ashik.ali 413
		model.addAttribute("rechargeCommission", rechargeCommission);
414
		model.addAttribute("rechargeOperator", rechargeOperator);
415
		return "recharge-commission-details";
416
	}
417
 
418
	@RequestMapping(value = "/updateRechargeCommission", method = RequestMethod.PUT)
23575 ashik.ali 419
	public String updateRechargeCommission(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.OPERATOR_ID) int operatorId, @RequestParam(name = ProfitMandiConstants.PROVIDER_ID) int providerId, @RequestParam(name = ProfitMandiConstants.AMOUNT_TYPE) String amountTypeString, @RequestParam(name = ProfitMandiConstants.AMOUNT) float amount, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
420
		rechargeService.updateRechargeCommission(operatorId, providerId, amountTypeString, amount);
23528 ashik.ali 421
		List<RechargeCommission> rechargeCommissions = rechargeCommissionRepository.selectAllPaginated(offset, limit);
422
		Map<Integer, RechargeOperator> rechargeOperatorIdRechargeOperatorMap = this.rechargeCommissionsOperatorIdRechargeOperatorMap(rechargeCommissions);
23575 ashik.ali 423
		Map<Integer, String> rechargeProviderIdNameMap = this.rechargeCommissionsProviderIdNameMap(rechargeCommissions);
23528 ashik.ali 424
		model.addAttribute("rechargeCommissions", rechargeCommissions);
425
		model.addAttribute("rechargeOperatorIdRechargeOperatorMap", rechargeOperatorIdRechargeOperatorMap);
23575 ashik.ali 426
		model.addAttribute("rechargeProviderIdNameMap", rechargeProviderIdNameMap);
23528 ashik.ali 427
		return "recharge-commissions-paginated";
428
	}
429
 
430
 
23505 ashik.ali 431
}