Subversion Repositories SmartDukaan

Rev

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

Rev 23505 Rev 23528
Line 1... Line 1...
1
package com.spice.profitmandi.web.controller;
1
package com.spice.profitmandi.web.controller;
2
 
2
 
-
 
3
import java.util.ArrayList;
3
import java.util.HashMap;
4
import java.util.HashMap;
4
 
-
 
5
import java.util.HashSet;
5
import java.util.HashSet;
6
import java.util.List;
6
import java.util.List;
7
import java.util.Map;
7
import java.util.Map;
8
import java.util.Set;
8
import java.util.Set;
9
 
9
 
Line 19... Line 19...
19
import org.springframework.web.bind.annotation.RequestBody;
19
import org.springframework.web.bind.annotation.RequestBody;
20
import org.springframework.web.bind.annotation.RequestMapping;
20
import org.springframework.web.bind.annotation.RequestMapping;
21
import org.springframework.web.bind.annotation.RequestMethod;
21
import org.springframework.web.bind.annotation.RequestMethod;
22
import org.springframework.web.bind.annotation.RequestParam;
22
import org.springframework.web.bind.annotation.RequestParam;
23
 
23
 
-
 
24
import com.spice.profitmandi.common.enumuration.SchemeType;
24
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
25
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
25
import com.spice.profitmandi.common.model.OperatorType;
26
import com.spice.profitmandi.common.model.OperatorType;
26
import com.spice.profitmandi.common.model.ProfitMandiConstants;
27
import com.spice.profitmandi.common.model.ProfitMandiConstants;
-
 
28
import com.spice.profitmandi.common.model.RechargeCommissionRequest;
-
 
29
import com.spice.profitmandi.common.model.RechargeCredential;
27
import com.spice.profitmandi.common.model.RechargeRequest;
30
import com.spice.profitmandi.common.model.RechargeRequest;
-
 
31
import com.spice.profitmandi.dao.entity.dtr.RechargeCommission;
28
import com.spice.profitmandi.dao.entity.dtr.RechargeOperator;
32
import com.spice.profitmandi.dao.entity.dtr.RechargeOperator;
29
import com.spice.profitmandi.dao.entity.dtr.RechargeTransaction;
33
import com.spice.profitmandi.dao.entity.dtr.RechargeTransaction;
30
import com.spice.profitmandi.dao.enumuration.dtr.RechargeType;
34
import com.spice.profitmandi.dao.enumuration.dtr.RechargeType;
-
 
35
import com.spice.profitmandi.dao.repository.dtr.RechargeCommissionRepository;
31
import com.spice.profitmandi.dao.repository.dtr.RechargeOperatorRepository;
36
import com.spice.profitmandi.dao.repository.dtr.RechargeOperatorRepository;
32
import com.spice.profitmandi.dao.repository.dtr.RechargeTransactionRepository;
37
import com.spice.profitmandi.dao.repository.dtr.RechargeTransactionRepository;
33
import com.spice.profitmandi.service.recharge.RechargeService;
38
import com.spice.profitmandi.service.recharge.RechargeService;
34
import com.spice.profitmandi.web.model.LoginDetails;
39
import com.spice.profitmandi.web.model.LoginDetails;
35
import com.spice.profitmandi.web.util.CookiesProcessor;
40
import com.spice.profitmandi.web.util.CookiesProcessor;
Line 38... Line 43...
38
@Transactional(rollbackFor=Throwable.class)
43
@Transactional(rollbackFor=Throwable.class)
39
public class RechargeController {
44
public class RechargeController {
40
 
45
 
41
	private static final Logger LOGGER = LoggerFactory.getLogger(RechargeController.class);
46
	private static final Logger LOGGER = LoggerFactory.getLogger(RechargeController.class);
42
	
47
	
-
 
48
	@Value("${recharge.transaction.scheme.type}")
-
 
49
	private String rechargeTransactionSchemeType;
-
 
50
	
43
	@Value("${recharge.api.host}")
51
	@Value("${recharge.transaction.host}")
44
	private String rechargeApiHost;
52
	private String rechargeTransactionHost;
45
		
53
		
46
	@Value("${recharge.api.port}")
54
	@Value("${recharge.transaction.port}")
47
	private int rechargeApiPort;
55
	private int rechargeTransactionPort;
-
 
56
	
-
 
57
	@Value("${recharge.transaction.uri}")
-
 
58
	private String rechargeTransactionUri;
48
	
59
	
49
	@Value("${recharge.auth.key}")
60
	@Value("${recharge.auth.key}")
50
	private String rechargeAuthKey;
61
	private String rechargeAuthKey;
51
	
62
	
-
 
63
	@Value("${recharge.transaction.scheme.type}")
-
 
64
	private String rechargeEnquirySchemeType;
-
 
65
	
52
	@Value("${recharge.validation.api.host}")
66
	@Value("${recharge.transaction.host}")
53
	private String rechargeValidationApiHost;
67
	private String rechargeEnquiryHost;
54
		
68
		
-
 
69
	@Value("${recharge.transaction.port}")
-
 
70
	private int rechargeEnquiryPort;
-
 
71
	
-
 
72
	@Value("${recharge.transaction.uri}")
-
 
73
	private String rechargeEnquiryUri;
-
 
74
	
-
 
75
	@Value("${recharge.validation.scheme.type}")
-
 
76
	private String rechargeValidationSchemeType;
-
 
77
	
-
 
78
	@Value("${recharge.validation.host}")
-
 
79
	private String rechargeValidationHost;
-
 
80
		
55
	@Value("${recharge.validation.api.port}")
81
	@Value("${recharge.validation.port}")
56
	private int rechargeValidationApiPort;
82
	private int rechargeValidationPort;
-
 
83
	
-
 
84
	@Value("${recharge.validation.uri}")
-
 
85
	private String rechargeValidationUri;
57
	
86
	
58
	@Value("${recharge.validation.auth.key}")
87
	@Value("${recharge.validation.auth.key}")
59
	private String rechargeValidationAuthKey;
88
	private String rechargeValidationAuthKey;
60
	
89
	
61
	@Autowired
90
	@Autowired
Line 66... Line 95...
66
	
95
	
67
	@Autowired
96
	@Autowired
68
	private RechargeTransactionRepository rechargeTransactionRepository;
97
	private RechargeTransactionRepository rechargeTransactionRepository;
69
	
98
	
70
	@Autowired
99
	@Autowired
-
 
100
	private RechargeCommissionRepository rechargeCommissionRepository;
-
 
101
	
-
 
102
	@Autowired
71
	private CookiesProcessor cookiesProcessor;
103
	private CookiesProcessor cookiesProcessor;
72
	
104
	
73
	@RequestMapping(value = "/createRecharge", method = RequestMethod.GET)
105
	@RequestMapping(value = "/createRecharge", method = RequestMethod.GET)
74
	public String createRecharge(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.RECHARGE_TYPE) String rechargeTypeString, Model model){
106
	public String createRecharge(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.RECHARGE_TYPE) String rechargeTypeString, Model model){
75
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
107
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
Line 84... Line 116...
84
		}
116
		}
85
		model.addAttribute("rechargeOperators", rechargeOperators);
117
		model.addAttribute("rechargeOperators", rechargeOperators);
86
		return "create-recharge";
118
		return "create-recharge";
87
	}
119
	}
88
	
120
	
89
	private Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap(List<RechargeTransaction> rechargeTransactions){
121
	private Map<Integer, String> rechargeTransactionsToRechargeOperatorIdNameMap(List<RechargeTransaction> rechargeTransactions){
90
		Map<Integer, String> rechargeOperatorIdrechargeOperatorNameMap = new HashMap<>();
122
		Map<Integer, String> rechargeOperatorIdrechargeOperatorNameMap = new HashMap<>();
91
		if(rechargeTransactions.isEmpty()) {
123
		if(rechargeTransactions.isEmpty()) {
92
			return rechargeOperatorIdrechargeOperatorNameMap;
124
			return rechargeOperatorIdrechargeOperatorNameMap;
93
		}
125
		}
94
		Set<Integer> operatorIds = new HashSet<>();
126
		Set<Integer> operatorIds = new HashSet<>();
Line 101... Line 133...
101
			rechargeOperatorIdrechargeOperatorNameMap.put(rechargeOperator.getId(), rechargeOperator.getName());
133
			rechargeOperatorIdrechargeOperatorNameMap.put(rechargeOperator.getId(), rechargeOperator.getName());
102
		}
134
		}
103
		return rechargeOperatorIdrechargeOperatorNameMap;
135
		return rechargeOperatorIdrechargeOperatorNameMap;
104
	}
136
	}
105
	
137
	
-
 
138
	private Map<Integer, RechargeOperator> rechargeCommissionsOperatorIdRechargeOperatorMap(List<RechargeCommission> rechargeCommissions){
-
 
139
		Map<Integer, RechargeOperator> rechargeOperatorIdNameMap = new HashMap<>();
-
 
140
		if(rechargeCommissions.isEmpty()) {
-
 
141
			return rechargeOperatorIdNameMap;
-
 
142
		}
-
 
143
		Set<Integer> operatorIds = new HashSet<>();
-
 
144
		for(RechargeCommission rechargeCommission : rechargeCommissions) {
-
 
145
			operatorIds.add(rechargeCommission.getOperatorId());
-
 
146
		}
-
 
147
		
-
 
148
		List<RechargeOperator> rechargeOperators = rechargeOperatorRepository.selectAllByIds(operatorIds);
-
 
149
		for(RechargeOperator rechargeOperator : rechargeOperators) {
-
 
150
			rechargeOperatorIdNameMap.put(rechargeOperator.getId(), rechargeOperator);
-
 
151
		}
-
 
152
		return rechargeOperatorIdNameMap;
-
 
153
	}
-
 
154
	
106
	@RequestMapping(value = "/createRecharge", method = RequestMethod.POST)
155
	@RequestMapping(value = "/createRecharge", method = RequestMethod.POST)
107
	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{
156
	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{
-
 
157
		LOGGER.info("Recharge request body {}", rechargeRequest);
108
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
158
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
159
		RechargeCredential rechargeTransactionCredential = new RechargeCredential();
-
 
160
		rechargeTransactionCredential.setRechargeSchemeType(SchemeType.valueOf(rechargeTransactionSchemeType.toUpperCase()));
-
 
161
		rechargeTransactionCredential.setRechargeHost(rechargeTransactionHost);
-
 
162
		rechargeTransactionCredential.setRechargePort(rechargeTransactionPort);
-
 
163
		rechargeTransactionCredential.setRechargeAuthKey(rechargeAuthKey);
-
 
164
		rechargeTransactionCredential.setRechargeUri(rechargeTransactionUri);
-
 
165
		
-
 
166
		RechargeCredential rechargeValidationCredential = new RechargeCredential();
-
 
167
		rechargeValidationCredential.setRechargeSchemeType(SchemeType.valueOf(rechargeValidationSchemeType.toUpperCase()));
-
 
168
		rechargeValidationCredential.setRechargeHost(rechargeValidationHost);
-
 
169
		rechargeValidationCredential.setRechargePort(rechargeValidationPort);
-
 
170
		rechargeValidationCredential.setRechargeAuthKey(rechargeValidationAuthKey);
-
 
171
		rechargeValidationCredential.setRechargeUri(rechargeValidationUri);
-
 
172
		
109
		rechargeService.doRecharge(rechargeApiHost, rechargeApiPort, rechargeAuthKey, rechargeValidationApiHost, rechargeValidationApiPort, rechargeValidationAuthKey, loginDetails.getFofoId(), rechargeRequest);
173
		rechargeService.doRecharge(rechargeTransactionCredential, rechargeValidationCredential, loginDetails.getFofoId(), rechargeRequest);
110
		RechargeType rechargeType = RechargeType.valueOf(rechargeRequest.getRechargeType());
174
		RechargeType rechargeType = RechargeType.valueOf(rechargeRequest.getRechargeType());
111
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
175
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
112
		long size = rechargeTransactionRepository.selectCountByRetailerIdAndType(loginDetails.getFofoId(), rechargeType);
176
		long size = rechargeTransactionRepository.selectCountByRetailerIdAndType(loginDetails.getFofoId(), rechargeType);
113
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeOperatorIdRechargeOperatorNameMap(rechargeTransactions);
177
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeTransactionsToRechargeOperatorIdNameMap(rechargeTransactions);
114
		model.addAttribute("rechargeTransactions", rechargeTransactions);
178
		model.addAttribute("rechargeTransactions", rechargeTransactions);
115
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
179
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
116
		model.addAttribute("start", offset + 1);
180
		model.addAttribute("start", offset + 1);
117
		model.addAttribute("size", size);
181
		model.addAttribute("size", size);
118
		if (rechargeTransactions.size() < limit){
182
		if (rechargeTransactions.size() < limit){
Line 136... Line 200...
136
	
200
	
137
	@RequestMapping(value = "/checkStatus", method = RequestMethod.GET)
201
	@RequestMapping(value = "/checkStatus", method = RequestMethod.GET)
138
	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{
202
	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{
139
		LOGGER.info("RequestId [{}], rechargeType [{}]", requestId, rechargeTypeString);
203
		LOGGER.info("RequestId [{}], rechargeType [{}]", requestId, rechargeTypeString);
140
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
204
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
205
		RechargeCredential rechargeEnquiryCredential = new RechargeCredential();
-
 
206
		rechargeEnquiryCredential.setRechargeSchemeType(SchemeType.valueOf(rechargeEnquirySchemeType.toUpperCase()));
-
 
207
		rechargeEnquiryCredential.setRechargeHost(rechargeEnquiryHost);
-
 
208
		rechargeEnquiryCredential.setRechargePort(rechargeEnquiryPort);
-
 
209
		rechargeEnquiryCredential.setRechargeAuthKey(rechargeAuthKey);
-
 
210
		
141
		rechargeService.checkStatus(rechargeApiHost, rechargeApiPort, rechargeAuthKey, loginDetails.getFofoId(), requestId);
211
		rechargeService.checkStatus(rechargeEnquiryCredential, loginDetails.getFofoId(), requestId);
142
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
212
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
143
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
213
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
144
		//long size = rechargeTransactionRepository.selectCountByRetailerId(loginDetails.getFofoId());
214
		//long size = rechargeTransactionRepository.selectCountByRetailerId(loginDetails.getFofoId());
145
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeOperatorIdRechargeOperatorNameMap(rechargeTransactions);
215
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeTransactionsToRechargeOperatorIdNameMap(rechargeTransactions);
146
		model.addAttribute("rechargeTransactions", rechargeTransactions);
216
		model.addAttribute("rechargeTransactions", rechargeTransactions);
147
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
217
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
148
		
218
		
149
		if(RechargeType.valueOf(rechargeTypeString) == RechargeType.MOBILE) {
219
		if(RechargeType.valueOf(rechargeTypeString) == RechargeType.MOBILE) {
150
			return "mobile-recharges-paginated";
220
			return "mobile-recharges-paginated";
Line 157... Line 227...
157
	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{
227
	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{
158
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
228
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
159
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
229
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
160
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
230
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
161
		long size = rechargeTransactionRepository.selectCountByRetailerIdAndType(loginDetails.getFofoId(), rechargeType);
231
		long size = rechargeTransactionRepository.selectCountByRetailerIdAndType(loginDetails.getFofoId(), rechargeType);
162
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeOperatorIdRechargeOperatorNameMap(rechargeTransactions);
232
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeTransactionsToRechargeOperatorIdNameMap(rechargeTransactions);
163
		model.addAttribute("rechargeTransactions", rechargeTransactions);
233
		model.addAttribute("rechargeTransactions", rechargeTransactions);
164
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
234
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
165
		model.addAttribute("start", offset + 1);
235
		model.addAttribute("start", offset + 1);
166
		model.addAttribute("size", size);
236
		model.addAttribute("size", size);
167
		if (rechargeTransactions.size() < limit){
237
		if (rechargeTransactions.size() < limit){
Line 179... Line 249...
179
	@RequestMapping(value = "/getPaginatedRecharges", method = RequestMethod.GET)
249
	@RequestMapping(value = "/getPaginatedRecharges", method = RequestMethod.GET)
180
	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{
250
	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{
181
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
251
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
182
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
252
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
183
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
253
		List<RechargeTransaction> rechargeTransactions = rechargeTransactionRepository.selectAllByRetailerIdAndType(loginDetails.getFofoId(), rechargeType, offset, limit);
184
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeOperatorIdRechargeOperatorNameMap(rechargeTransactions);
254
		Map<Integer, String> rechargeOperatorIdRechargeOperatorNameMap = this.rechargeTransactionsToRechargeOperatorIdNameMap(rechargeTransactions);
185
		model.addAttribute("rechargeTransactions", rechargeTransactions);
255
		model.addAttribute("rechargeTransactions", rechargeTransactions);
186
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
256
		model.addAttribute("rechargeOperatorIdRechargeOperatorNameMap", rechargeOperatorIdRechargeOperatorNameMap);
187
		if(RechargeType.valueOf(rechargeTypeString) == RechargeType.MOBILE) {
257
		if(RechargeType.valueOf(rechargeTypeString) == RechargeType.MOBILE) {
188
			return "mobile-recharges-paginated";
258
			return "mobile-recharges-paginated";
189
		}else {
259
		}else {
190
			return "dth-recharges-paginated";
260
			return "dth-recharges-paginated";
191
		}
261
		}
192
	}
262
	}
193
	
263
	
194
	@RequestMapping(value = "/getOperators", method = RequestMethod.GET)
264
	@RequestMapping(value = "/getRechargeOperators", method = RequestMethod.GET)
195
	public String getOperators(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.OPERATOR_TYPE) String operatorTypeString, Model model){
265
	public String getRechargeOperators(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.OPERATOR_TYPE) String operatorTypeString, Model model){
-
 
266
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
-
 
267
		//model.addAttribute("rechargeTypes", RechargeType.values());
-
 
268
		OperatorType operatorType = OperatorType.valueOf(operatorTypeString);
-
 
269
		List<RechargeOperator> rechargeOperators = rechargeOperatorRepository.selectAllByOperatorType(operatorType);
-
 
270
		model.addAttribute("rechargeOperators", rechargeOperators);
-
 
271
		return "recharge-operators";
-
 
272
	}
-
 
273
	
-
 
274
	@RequestMapping(value = "/getRechargeCommissionOperators", method = RequestMethod.GET)
-
 
275
	public String getRechargeCommissionOperators(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.OPERATOR_TYPE) String operatorTypeString, Model model) throws ProfitMandiBusinessException{
196
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
276
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
197
		//model.addAttribute("rechargeTypes", RechargeType.values());
277
		//model.addAttribute("rechargeTypes", RechargeType.values());
198
		OperatorType operatorType = OperatorType.valueOf(operatorTypeString);
278
		OperatorType operatorType = OperatorType.valueOf(operatorTypeString);
199
		List<RechargeOperator> rechargeOperators = rechargeOperatorRepository.selectAllByOperatorType(operatorType);
279
		List<RechargeOperator> rechargeOperators = rechargeOperatorRepository.selectAllByOperatorType(operatorType);
-
 
280
		List<Integer> rechargeOperatorIds = rechargeCommissionRepository.selectAllOperatorIds();
-
 
281
		if(!rechargeOperatorIds.isEmpty()) {
-
 
282
			rechargeOperators = this.filterRechargeOperators(rechargeOperators, rechargeOperatorIds);
-
 
283
			if(rechargeOperators.isEmpty()) {
-
 
284
				throw new ProfitMandiBusinessException(ProfitMandiConstants.OPERATOR_TYPE, operatorType, "RCHRG_1003");
-
 
285
			}
-
 
286
		}
200
		model.addAttribute("rechargeOperators", rechargeOperators);
287
		model.addAttribute("rechargeOperators", rechargeOperators);
201
		return "recharge-operators";
288
		return "recharge-operators";
202
	}
289
	}
203
	
290
	
-
 
291
	@RequestMapping(value = "/createRechargeCommission", method = RequestMethod.GET)
-
 
292
	public String createRechargeCommission(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.RECHARGE_TYPE) String rechargeTypeString, Model model) throws ProfitMandiBusinessException{
-
 
293
		//model.addAttribute("rechargeOperators", rechargeOperatorRepository.selectAllByRechargeType(RechargeType.MOBILE));
-
 
294
		//model.addAttribute("rechargeTypes", RechargeType.values());
-
 
295
		
-
 
296
		RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
-
 
297
		List<RechargeOperator> rechargeOperators = null;
-
 
298
		if(rechargeType == RechargeType.MOBILE) {
-
 
299
			model.addAttribute("operatorTypes", OperatorType.values());
-
 
300
			rechargeOperators = rechargeOperatorRepository.selectAllByOperatorType(OperatorType.PREPAID);
-
 
301
		}else {
-
 
302
			rechargeOperators = rechargeOperatorRepository.selectAllByRechargeType(rechargeType);
-
 
303
		}
-
 
304
		List<Integer> rechargeOperatorIds = rechargeCommissionRepository.selectAllOperatorIds();
-
 
305
		if(!rechargeOperatorIds.isEmpty()) {
-
 
306
			rechargeOperators = this.filterRechargeOperators(rechargeOperators, rechargeOperatorIds);
-
 
307
			if(rechargeOperators.isEmpty()) {
-
 
308
				throw new ProfitMandiBusinessException(ProfitMandiConstants.RECHARGE_TYPE, rechargeType, "RCHRG_1003");
-
 
309
			}
-
 
310
		}
-
 
311
		model.addAttribute("rechargeOperators", rechargeOperators);
-
 
312
		return "create-recharge-commission";
-
 
313
	}
-
 
314
	
-
 
315
	private List<RechargeOperator> filterRechargeOperators(List<RechargeOperator> rechargeOperators, List<Integer> rechargeOperatorIds){
-
 
316
		List<RechargeOperator> filteredRechargeOperators = new ArrayList<>();
-
 
317
		for(RechargeOperator rechargeOperator : rechargeOperators) {
-
 
318
			if(!rechargeOperatorIds.contains(rechargeOperator.getId())) {
-
 
319
				filteredRechargeOperators.add(rechargeOperator);
-
 
320
			}
-
 
321
		}
-
 
322
		return filteredRechargeOperators;
-
 
323
	}
-
 
324
	
-
 
325
	@RequestMapping(value = "/createRechargeCommission", method = RequestMethod.POST)
-
 
326
	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{
-
 
327
		rechargeService.createRechargeCommission(rechargeCommissionRequest);
-
 
328
		List<RechargeCommission> rechargeCommissions = rechargeCommissionRepository.selectAllPaginated(offset, limit);
-
 
329
		long size = rechargeCommissionRepository.selectAllCount();
-
 
330
		Map<Integer, RechargeOperator> rechargeOperatorIdRechargeOperatorMap = this.rechargeCommissionsOperatorIdRechargeOperatorMap(rechargeCommissions);
-
 
331
		model.addAttribute("rechargeCommissions", rechargeCommissions);
-
 
332
		model.addAttribute("rechargeOperatorIdRechargeOperatorMap", rechargeOperatorIdRechargeOperatorMap);
-
 
333
		model.addAttribute("start", offset + 1);
-
 
334
		model.addAttribute("size", size);
-
 
335
		if (rechargeCommissions.size() < limit){
-
 
336
			model.addAttribute("end", offset + rechargeCommissions.size());
-
 
337
		}else{
-
 
338
			model.addAttribute("end", offset + limit);
-
 
339
		}
-
 
340
		return "recharge-commissions";
-
 
341
	}
-
 
342
	
-
 
343
	@RequestMapping(value = "/getRechargeCommissions", method = RequestMethod.GET)
-
 
344
	public String getRechargeCommissions(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
-
 
345
		//LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
346
		//RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
-
 
347
		List<RechargeCommission> rechargeCommissions = rechargeCommissionRepository.selectAllPaginated(offset, limit);
-
 
348
		long size = rechargeCommissionRepository.selectAllCount();
-
 
349
		Map<Integer, RechargeOperator> rechargeOperatorIdRechargeOperatorMap = this.rechargeCommissionsOperatorIdRechargeOperatorMap(rechargeCommissions);
-
 
350
		model.addAttribute("rechargeCommissions", rechargeCommissions);
-
 
351
		model.addAttribute("rechargeOperatorIdRechargeOperatorMap", rechargeOperatorIdRechargeOperatorMap);
-
 
352
		model.addAttribute("start", offset + 1);
-
 
353
		model.addAttribute("size", size);
-
 
354
		if (rechargeCommissions.size() < limit){
-
 
355
			model.addAttribute("end", offset + rechargeCommissions.size());
-
 
356
		}else{
-
 
357
			model.addAttribute("end", offset + limit);
-
 
358
		}
-
 
359
		return "recharge-commissions";
-
 
360
	}
-
 
361
	
-
 
362
	@RequestMapping(value = "/getPaginatedRechargeCommissions", method = RequestMethod.GET)
-
 
363
	public String getPaginatedRechargeCommissions(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
-
 
364
		//LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
365
		//RechargeType rechargeType = RechargeType.valueOf(rechargeTypeString);
-
 
366
		List<RechargeCommission> rechargeCommissions = rechargeCommissionRepository.selectAllPaginated(offset, limit);
-
 
367
		Map<Integer, RechargeOperator> rechargeOperatorIdRechargeOperatorMap = this.rechargeCommissionsOperatorIdRechargeOperatorMap(rechargeCommissions);
-
 
368
		model.addAttribute("rechargeCommissions", rechargeCommissions);
-
 
369
		model.addAttribute("rechargeOperatorIdRechargeOperatorMap", rechargeOperatorIdRechargeOperatorMap);
-
 
370
		return "recharge-commissions-paginated";
-
 
371
	}
-
 
372
	
-
 
373
	@RequestMapping(value = "/getRechargeCommissionByOperatorId", method = RequestMethod.GET)
-
 
374
	public String getRechargeCommissionByOperatorId(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.OPERATOR_ID) int operatorId, Model model)  throws ProfitMandiBusinessException{
-
 
375
		RechargeOperator rechargeOperator = rechargeOperatorRepository.selectById(operatorId);
-
 
376
		RechargeCommission rechargeCommission = rechargeCommissionRepository.selectByOperatorId(operatorId);
-
 
377
		model.addAttribute("rechargeCommission", rechargeCommission);
-
 
378
		model.addAttribute("rechargeOperator", rechargeOperator);
-
 
379
		return "recharge-commission-details";
-
 
380
	}
-
 
381
	
-
 
382
	@RequestMapping(value = "/updateRechargeCommission", method = RequestMethod.PUT)
-
 
383
	public String updateRechargeCommission(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.OPERATOR_ID) int operatorId, @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{
-
 
384
		rechargeService.updateRechargeCommission(operatorId, amountTypeString, amount);
-
 
385
		List<RechargeCommission> rechargeCommissions = rechargeCommissionRepository.selectAllPaginated(offset, limit);
-
 
386
		Map<Integer, RechargeOperator> rechargeOperatorIdRechargeOperatorMap = this.rechargeCommissionsOperatorIdRechargeOperatorMap(rechargeCommissions);
-
 
387
		model.addAttribute("rechargeCommissions", rechargeCommissions);
-
 
388
		model.addAttribute("rechargeOperatorIdRechargeOperatorMap", rechargeOperatorIdRechargeOperatorMap);
-
 
389
		return "recharge-commissions-paginated";
-
 
390
	}
-
 
391
	
204
	
392
	
205
}
393
}
206
394