Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
22551 ashik.ali 1
package com.spice.profitmandi.web.controller;
2
 
23985 tejbeer 3
import java.text.MessageFormat;
22551 ashik.ali 4
import java.time.LocalDateTime;
5
import java.util.ArrayList;
24511 amit.gupta 6
import java.util.Collections;
22551 ashik.ali 7
import java.util.List;
23936 tejbeer 8
import java.util.Map;
22551 ashik.ali 9
 
23985 tejbeer 10
import javax.mail.internet.InternetAddress;
11
import javax.mail.internet.MimeMessage;
22551 ashik.ali 12
import javax.servlet.http.HttpServletRequest;
13
 
23985 tejbeer 14
import org.apache.logging.log4j.LogManager;
23568 govind 15
import org.apache.logging.log4j.Logger;
22551 ashik.ali 16
import org.springframework.beans.factory.annotation.Autowired;
23985 tejbeer 17
import org.springframework.mail.javamail.JavaMailSender;
18
import org.springframework.mail.javamail.MimeMessageHelper;
22551 ashik.ali 19
import org.springframework.stereotype.Controller;
20
import org.springframework.transaction.annotation.Transactional;
21
import org.springframework.ui.Model;
24089 tejbeer 22
import org.springframework.web.bind.annotation.RequestBody;
22551 ashik.ali 23
import org.springframework.web.bind.annotation.RequestMapping;
24
import org.springframework.web.bind.annotation.RequestMethod;
25
import org.springframework.web.bind.annotation.RequestParam;
26
 
27
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
23936 tejbeer 28
import com.spice.profitmandi.common.model.CustomRetailer;
22551 ashik.ali 29
import com.spice.profitmandi.common.model.ProfitMandiConstants;
24089 tejbeer 30
import com.spice.profitmandi.common.model.UnsettledPaymentModel;
22551 ashik.ali 31
import com.spice.profitmandi.common.util.StringUtils;
23936 tejbeer 32
import com.spice.profitmandi.dao.entity.transaction.AddWalletRequest;
24089 tejbeer 33
import com.spice.profitmandi.dao.entity.transaction.UnsettledPayment;
22551 ashik.ali 34
import com.spice.profitmandi.dao.entity.transaction.UserWallet;
35
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
23936 tejbeer 36
import com.spice.profitmandi.dao.enumuration.transaction.AddWalletRequestStatus;
37
import com.spice.profitmandi.dao.repository.catalog.AddWalletRequestRepository;
24089 tejbeer 38
import com.spice.profitmandi.dao.repository.catalog.UnsettledPaymentsRepository;
23985 tejbeer 39
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
22551 ashik.ali 40
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
24523 amit.gupta 41
import com.spice.profitmandi.service.authentication.RoleManager;
23936 tejbeer 42
import com.spice.profitmandi.service.user.RetailerService;
22551 ashik.ali 43
import com.spice.profitmandi.service.wallet.WalletService;
44
import com.spice.profitmandi.web.model.LoginDetails;
45
import com.spice.profitmandi.web.util.CookiesProcessor;
23936 tejbeer 46
import com.spice.profitmandi.web.util.MVCResponseSender;
22551 ashik.ali 47
 
23936 tejbeer 48
import in.shop2020.model.v1.order.WalletReferenceType;
49
 
22551 ashik.ali 50
@Controller
51
@Transactional(rollbackFor = Throwable.class)
52
public class WalletController {
53
 
54
	@Autowired
22927 ashik.ali 55
	private CookiesProcessor cookiesProcessor;
23993 tejbeer 56
 
22551 ashik.ali 57
	@Autowired
22927 ashik.ali 58
	private WalletService walletService;
23993 tejbeer 59
 
22551 ashik.ali 60
	@Autowired
22927 ashik.ali 61
	private UserWalletRepository userWalletRepository;
23993 tejbeer 62
 
23936 tejbeer 63
	@Autowired
64
	private MVCResponseSender mvcResponseSender;
23993 tejbeer 65
 
23936 tejbeer 66
	@Autowired
23985 tejbeer 67
	private UserAccountRepository userAccountRepository;
68
 
69
	@Autowired
70
	JavaMailSender mailSender;
23993 tejbeer 71
 
23985 tejbeer 72
	@Autowired
24089 tejbeer 73
	private UnsettledPaymentsRepository unsettledPaymentsRepository;
74
 
75
	@Autowired
23936 tejbeer 76
	private RetailerService retailerService;
24523 amit.gupta 77
 
78
	@Autowired
79
	private RoleManager roleManager;
23936 tejbeer 80
 
81
	@Autowired
82
	AddWalletRequestRepository addWalletRequestRepository;
23568 govind 83
	private static final Logger LOGGER = LogManager.getLogger(WalletController.class);
23993 tejbeer 84
 
22551 ashik.ali 85
	@RequestMapping(value = "/walletDetails", method = RequestMethod.GET)
23993 tejbeer 86
	public String dashboard(HttpServletRequest request,
87
			@RequestParam(name = ProfitMandiConstants.START_TIME, required = false) String startTimeString,
88
			@RequestParam(name = ProfitMandiConstants.END_TIME, required = false) String endTimeString,
89
			@RequestParam(name = "offset", defaultValue = "0") int offset,
90
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
91
			throws ProfitMandiBusinessException {
24582 amit.gupta 92
		boolean underMaintainance = true;
93
		if(underMaintainance) {
94
			throw new ProfitMandiBusinessException("Wallet", "Wallet", "Wallet is under Maintenance");
95
		}
22927 ashik.ali 96
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
24523 amit.gupta 97
		boolean isAdmin = roleManager.isAdmin(fofoDetails.getRoleIds());
22551 ashik.ali 98
		UserWallet userWallet = null;
23993 tejbeer 99
		try {
22551 ashik.ali 100
			userWallet = userWalletRepository.selectByRetailerId(fofoDetails.getFofoId());
23993 tejbeer 101
		} catch (ProfitMandiBusinessException profitMandiBusinessException) {
22551 ashik.ali 102
			LOGGER.error("UserWallet not found : ", profitMandiBusinessException);
23993 tejbeer 103
			// return "error";
22551 ashik.ali 104
		}
23993 tejbeer 105
 
22551 ashik.ali 106
		LocalDateTime startDateTime = StringUtils.toDateTime(startTimeString);
107
		LocalDateTime endDateTime = StringUtils.toDateTime(endTimeString);
23993 tejbeer 108
 
22551 ashik.ali 109
		List<UserWalletHistory> userWalletHistories = new ArrayList<>();
23993 tejbeer 110
		try {
111
			userWalletHistories = walletService.getPaginatedUserWalletHistoryByRetailerId(fofoDetails.getFofoId(),
112
					startDateTime, endDateTime, offset, limit);
113
		} catch (ProfitMandiBusinessException profitMandiBusinessException) {
22551 ashik.ali 114
			LOGGER.error("UserWallet History not found : ", profitMandiBusinessException);
115
		}
23993 tejbeer 116
 
22551 ashik.ali 117
		long countItems = 0;
23993 tejbeer 118
		try {
22551 ashik.ali 119
			countItems = walletService.getSizeByRetailerId(fofoDetails.getFofoId(), startDateTime, endDateTime);
23993 tejbeer 120
		} catch (ProfitMandiBusinessException profitMandiBusinessException) {
121
			LOGGER.error("UserWallet not found : ", profitMandiBusinessException);
22551 ashik.ali 122
		}
123
		model.addAttribute("userWallet", userWallet);
124
		model.addAttribute("walletHistories", userWalletHistories);
125
		model.addAttribute("start", offset + 1);
23993 tejbeer 126
		model.addAttribute("size", countItems);
24523 amit.gupta 127
		model.addAttribute("isAdmin", isAdmin);
22551 ashik.ali 128
		model.addAttribute(ProfitMandiConstants.START_TIME, startTimeString);
129
		model.addAttribute(ProfitMandiConstants.END_TIME, endTimeString);
23993 tejbeer 130
		if (userWalletHistories.size() < limit) {
22551 ashik.ali 131
			model.addAttribute("end", offset + userWalletHistories.size());
23993 tejbeer 132
		} else {
22551 ashik.ali 133
			model.addAttribute("end", offset + limit);
134
		}
135
		return "wallet-details";
136
	}
23993 tejbeer 137
 
22551 ashik.ali 138
	@RequestMapping(value = "/getPaginatedWalletHistory")
23993 tejbeer 139
	public String getSaleHistoryPaginated(HttpServletRequest request,
140
			@RequestParam(name = ProfitMandiConstants.START_TIME, required = false) String startTimeString,
141
			@RequestParam(name = ProfitMandiConstants.END_TIME, required = false) String endTimeString,
142
			@RequestParam(name = "offset", defaultValue = "0") int offset,
143
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
144
			throws ProfitMandiBusinessException {
22927 ashik.ali 145
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23993 tejbeer 146
 
22551 ashik.ali 147
		LocalDateTime startDateTime = StringUtils.toDateTime(startTimeString);
148
		LocalDateTime endDateTime = StringUtils.toDateTime(endTimeString);
149
 
150
		List<UserWalletHistory> userWalletHistories = new ArrayList<>();
23993 tejbeer 151
		try {
152
			userWalletHistories = walletService.getPaginatedUserWalletHistoryByRetailerId(loginDetails.getFofoId(),
153
					startDateTime, endDateTime, offset, limit);
154
		} catch (ProfitMandiBusinessException profitMandiBusinessException) {
22551 ashik.ali 155
			LOGGER.error("UserWallet History not found : ", profitMandiBusinessException);
156
		}
23993 tejbeer 157
 
22551 ashik.ali 158
		model.addAttribute("walletHistories", userWalletHistories);
159
		return "wallet-history-paginated";
160
	}
23993 tejbeer 161
 
23936 tejbeer 162
	@RequestMapping(value = "/getAddWalletRequest", method = RequestMethod.GET)
163
	public String getAddwalletRequest(HttpServletRequest request,
164
			@RequestParam(name = "offset", defaultValue = "0") int offset,
23993 tejbeer 165
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws Exception {
23936 tejbeer 166
		List<AddWalletRequest> walletRequest = null;
167
		long size = 0;
23993 tejbeer 168
		walletRequest = addWalletRequestRepository.selectAllByStatus(offset, limit, AddWalletRequestStatus.pending);
169
		LOGGER.info("walletRequest" + walletRequest);
23936 tejbeer 170
		size = addWalletRequestRepository.selectCountByStatus(AddWalletRequestStatus.pending);
23993 tejbeer 171
		if (!walletRequest.isEmpty()) {
172
			List<Integer> fofoIds = this.getFofoIdsFromWalletRequest(walletRequest);
173
			Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(fofoIds);
23936 tejbeer 174
 
23993 tejbeer 175
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
176
			model.addAttribute("walletRequest", walletRequest);
177
			model.addAttribute("rStatus", "pending");
178
			model.addAttribute("start", offset + 1);
179
			model.addAttribute("size", size);
180
			model.addAttribute("url", "/getPaginatedWalletRequest");
181
 
182
			if (walletRequest.size() < limit) {
183
				model.addAttribute("end", offset + walletRequest.size());
184
			} else {
185
				model.addAttribute("end", offset + limit);
186
			}
187
 
23936 tejbeer 188
		} else {
23993 tejbeer 189
 
190
			model.addAttribute("walletRequest", walletRequest);
191
			model.addAttribute("size", size);
192
 
23936 tejbeer 193
		}
194
		return "add-wallet-request";
195
	}
196
 
197
	@RequestMapping(value = "/getPaginatedWalletRequest", method = RequestMethod.GET)
198
	public String getPaginatedWalletRequest(HttpServletRequest request,
199
			@RequestParam(name = "offset", defaultValue = "0") int offset,
23993 tejbeer 200
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws Exception {
201
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
23936 tejbeer 202
		List<AddWalletRequest> walletRequest = null;
23993 tejbeer 203
		walletRequest = addWalletRequestRepository.selectAllByStatus(offset, limit, AddWalletRequestStatus.pending);
23936 tejbeer 204
		LOGGER.info("walletRequest" + walletRequest);
23993 tejbeer 205
		if (!walletRequest.isEmpty()) {
206
			List<Integer> fofoIds = this.getFofoIdsFromWalletRequest(walletRequest);
207
			Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(fofoIds);
23936 tejbeer 208
 
23993 tejbeer 209
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
210
			model.addAttribute("walletRequest", walletRequest);
211
			model.addAttribute("rStatus", "pending");
212
			model.addAttribute("url", "/getPaginatedWalletRequest");
213
 
214
		} else {
215
			model.addAttribute("walletRequest", walletRequest);
216
 
217
		}
218
 
23936 tejbeer 219
		return "add-wallet-request-paginated";
220
	}
23993 tejbeer 221
 
23936 tejbeer 222
	@RequestMapping(value = "/getAddWalletApproved", method = RequestMethod.GET)
223
	public String getAddwalletRequestApproved(HttpServletRequest request,
224
			@RequestParam(name = "offset", defaultValue = "0") int offset,
225
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
226
			throws ProfitMandiBusinessException {
227
		List<AddWalletRequest> walletRequest = null;
23993 tejbeer 228
 
23936 tejbeer 229
		long size = 0;
23993 tejbeer 230
		walletRequest = addWalletRequestRepository.selectAllByStatus(offset, limit, AddWalletRequestStatus.approved);
23936 tejbeer 231
		size = addWalletRequestRepository.selectCountByStatus(AddWalletRequestStatus.approved);
232
		LOGGER.info("walletRequest" + walletRequest);
23993 tejbeer 233
		if (!walletRequest.isEmpty()) {
234
			List<Integer> fofoIds = this.getFofoIdsFromWalletRequest(walletRequest);
235
			Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(fofoIds);
23936 tejbeer 236
 
23993 tejbeer 237
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
238
			model.addAttribute("walletRequest", walletRequest);
239
			model.addAttribute("start", offset + 1);
240
			model.addAttribute("size", size);
241
			model.addAttribute("url", "/getPaginatedWalletApproved");
242
 
243
			if (walletRequest.size() < limit) {
244
				model.addAttribute("end", offset + walletRequest.size());
245
			} else {
246
				model.addAttribute("end", offset + limit);
247
			}
23936 tejbeer 248
		} else {
23993 tejbeer 249
 
250
			model.addAttribute("walletRequest", walletRequest);
251
			model.addAttribute("size", size);
252
 
23936 tejbeer 253
		}
254
		return "add-wallet-request";
255
	}
256
 
257
	@RequestMapping(value = "/getPaginatedWalletApproved", method = RequestMethod.GET)
258
	public String getPaginatedWalletApproved(HttpServletRequest request,
259
			@RequestParam(name = "offset", defaultValue = "0") int offset,
260
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
261
			throws ProfitMandiBusinessException {
23993 tejbeer 262
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
23936 tejbeer 263
		List<AddWalletRequest> walletRequest = null;
264
		walletRequest = addWalletRequestRepository.selectAllByStatus(offset, limit, AddWalletRequestStatus.approved);
265
		LOGGER.info("walletRequest" + walletRequest);
23993 tejbeer 266
		if (!walletRequest.isEmpty()) {
267
			List<Integer> fofoIds = this.getFofoIdsFromWalletRequest(walletRequest);
268
			Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(fofoIds);
23936 tejbeer 269
 
23993 tejbeer 270
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
271
			model.addAttribute("walletRequest", walletRequest);
272
			model.addAttribute("url", "/getPaginatedWalletApproved");
273
		} else {
274
			model.addAttribute("walletRequest", walletRequest);
275
 
276
		}
23936 tejbeer 277
		return "add-wallet-request-paginated";
278
	}
23993 tejbeer 279
 
23985 tejbeer 280
	@RequestMapping(value = "/getAddWalletRequestRejected", method = RequestMethod.GET)
281
	public String getAddwalletRequestRejected(HttpServletRequest request,
282
			@RequestParam(name = "offset", defaultValue = "0") int offset,
283
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
284
			throws ProfitMandiBusinessException {
285
		List<AddWalletRequest> walletRequest = null;
23993 tejbeer 286
 
23985 tejbeer 287
		long size = 0;
23993 tejbeer 288
		walletRequest = addWalletRequestRepository.selectAllByStatus(offset, limit, AddWalletRequestStatus.rejected);
23985 tejbeer 289
		size = addWalletRequestRepository.selectCountByStatus(AddWalletRequestStatus.rejected);
290
		LOGGER.info("walletRequest" + walletRequest);
23993 tejbeer 291
		if (!walletRequest.isEmpty()) {
292
			List<Integer> fofoIds = this.getFofoIdsFromWalletRequest(walletRequest);
293
			Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(fofoIds);
23985 tejbeer 294
 
23993 tejbeer 295
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
296
			model.addAttribute("walletRequest", walletRequest);
297
			model.addAttribute("start", offset + 1);
298
			model.addAttribute("size", size);
299
			model.addAttribute("url", "/getPaginatedWalletRequestRejected");
300
 
301
			if (walletRequest.size() < limit) {
302
				model.addAttribute("end", offset + walletRequest.size());
303
			} else {
304
				model.addAttribute("end", offset + limit);
305
			}
23985 tejbeer 306
		} else {
23993 tejbeer 307
			model.addAttribute("walletRequest", walletRequest);
308
			model.addAttribute("size", size);
23985 tejbeer 309
		}
310
 
311
		return "add-wallet-request";
312
	}
23993 tejbeer 313
 
23985 tejbeer 314
	@RequestMapping(value = "/getPaginatedWalletRequestRejected", method = RequestMethod.GET)
315
	public String getPaginatedWalletRequestRejected(HttpServletRequest request,
316
			@RequestParam(name = "offset", defaultValue = "0") int offset,
317
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
318
			throws ProfitMandiBusinessException {
23993 tejbeer 319
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
23985 tejbeer 320
		List<AddWalletRequest> walletRequest = null;
321
		walletRequest = addWalletRequestRepository.selectAllByStatus(offset, limit, AddWalletRequestStatus.rejected);
322
		LOGGER.info("walletRequest" + walletRequest);
23993 tejbeer 323
		if (!walletRequest.isEmpty()) {
324
			List<Integer> fofoIds = this.getFofoIdsFromWalletRequest(walletRequest);
325
			Map<Integer, CustomRetailer> fofoIdsAndRetailerName = retailerService.getFofoRetailers(fofoIds);
23985 tejbeer 326
 
23993 tejbeer 327
			model.addAttribute("fofoIdsAndRetailerName", fofoIdsAndRetailerName);
328
			model.addAttribute("walletRequest", walletRequest);
329
			model.addAttribute("url", "/getPaginatedWalletRequestRejected");
330
		} else {
331
			model.addAttribute("walletRequest", walletRequest);
332
 
333
		}
334
 
23985 tejbeer 335
		return "add-wallet-request-paginated";
336
	}
23993 tejbeer 337
 
23936 tejbeer 338
	@RequestMapping(value = "/addAmountToWallet", method = RequestMethod.PUT)
23993 tejbeer 339
	public String addAmountToWallet(HttpServletRequest request, @RequestParam(name = "id", defaultValue = "0") int id,
24089 tejbeer 340
			@RequestParam(name = "walletRequestid", defaultValue = "0") int walletRequestid, Model model)
341
			throws Exception {
23993 tejbeer 342
 
24089 tejbeer 343
		AddWalletRequest addWalletRequest = addWalletRequestRepository.selectById(walletRequestid);
23993 tejbeer 344
		if (addWalletRequest.getStatus().equals(AddWalletRequestStatus.pending)) {
24089 tejbeer 345
			walletService.addAmountToWallet(addWalletRequest.getRetailerId(), walletRequestid,
346
					WalletReferenceType.ADVANCE_AMOUNT, "ntfs/rgfs", addWalletRequest.getAmount());
23993 tejbeer 347
			addWalletRequest.setStatus(AddWalletRequestStatus.approved);
348
			addWalletRequest.setUpdateTimestamp(LocalDateTime.now());
349
			addWalletRequestRepository.persist(addWalletRequest);
24089 tejbeer 350
			unsettledPaymentsRepository.deleteById(id);
23993 tejbeer 351
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
352
			CustomRetailer customRetailer = retailerService.getFofoRetailer(addWalletRequest.getRetailerId());
353
			String subject = "Request Approved for " + customRetailer.getBusinessName() + " of Rs."
354
					+ addWalletRequest.getAmount();
355
			String messageText = MessageFormat.format(
356
					"User Id - {0}\n Name -{1}\n Email -{2}\n mobile -{3}\n Reference - {4}\n Amount - Rs.{5}",
357
					new Integer(addWalletRequest.getRetailerId()), customRetailer.getBusinessName(),
358
					customRetailer.getEmail(), customRetailer.getMobileNumber(),
359
					addWalletRequest.getTransaction_reference(), new Float(addWalletRequest.getAmount()));
360
 
361
			this.sendMailWithAttachments(subject, messageText);
362
			return "response";
363
		} else {
364
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
365
			return "response";
366
		}
23936 tejbeer 367
	}
23993 tejbeer 368
 
23985 tejbeer 369
	@RequestMapping(value = "/addAmountToWalletRequestRejected", method = RequestMethod.PUT)
23993 tejbeer 370
	public String addAmountToWalletRequestRejected(HttpServletRequest request,
371
			@RequestParam(name = "id", defaultValue = "0") int id, Model model) throws Exception {
372
 
373
		AddWalletRequest addWalletRequest = addWalletRequestRepository.selectById(id);
374
		if (addWalletRequest.getStatus().equals(AddWalletRequestStatus.pending)) {
375
			addWalletRequest.setStatus(AddWalletRequestStatus.rejected);
376
			addWalletRequest.setUpdateTimestamp(LocalDateTime.now());
377
			addWalletRequestRepository.persist(addWalletRequest);
378
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
379
			CustomRetailer customRetailer = retailerService.getFofoRetailer(addWalletRequest.getRetailerId());
380
			String subject = "Request Rejected for " + customRetailer.getBusinessName() + " of Rs."
381
					+ addWalletRequest.getAmount();
382
			String messageText = MessageFormat.format(
383
					"User Id - {0}\n Name -{1}\n Email -{2}\n mobile -{3}\n Reference - {4}\n Amount - Rs.{5}",
384
					new Integer(addWalletRequest.getRetailerId()), customRetailer.getBusinessName(),
385
					customRetailer.getEmail(), customRetailer.getMobileNumber(),
386
					addWalletRequest.getTransaction_reference(), new Float(addWalletRequest.getAmount()));
387
 
388
			this.sendMailWithAttachments(subject, messageText);
389
			return "response";
390
		} else {
391
			model.addAttribute("response", mvcResponseSender.createResponseString(false));
392
			return "response";
393
		}
23985 tejbeer 394
	}
23993 tejbeer 395
 
23985 tejbeer 396
	private void sendMailWithAttachments(String subject, String messageText) throws Exception {
397
		MimeMessage message = mailSender.createMimeMessage();
398
		MimeMessageHelper helper = new MimeMessageHelper(message, true);
24089 tejbeer 399
		String[] email = { "neerajgupta2021@gmail.com", "adeel.yazdani@smartdukaan.com",
400
				"kamini.sharma@smartdukaan.com", "care@smartdukaan.com", "mohinder.mutreja@smartdukaan.com" };
23985 tejbeer 401
		helper.setSubject(subject);
402
		helper.setText(messageText);
403
		helper.setTo(email);
404
		InternetAddress senderAddress = new InternetAddress("noreply@smartdukaan.com", "ProfitMandi Admin");
405
		helper.setFrom(senderAddress);
406
		mailSender.send(message);
407
 
408
	}
23993 tejbeer 409
 
410
	private List<Integer> getFofoIdsFromWalletRequest(List<AddWalletRequest> walletRequest) {
23936 tejbeer 411
		List<Integer> fofoIds = new ArrayList<>();
23993 tejbeer 412
		for (AddWalletRequest walletdetail : walletRequest) {
23936 tejbeer 413
			fofoIds.add(walletdetail.getRetailerId());
414
		}
415
		return fofoIds;
23993 tejbeer 416
	}
23936 tejbeer 417
 
24089 tejbeer 418
	@RequestMapping(value = "/getcreateUnsettledPayments", method = RequestMethod.GET)
419
	public String getcreateUnsettledPayment(HttpServletRequest request,
420
			@RequestParam(name = "offset", defaultValue = "0") int offset,
421
			@RequestParam(name = "limit", defaultValue = "15") int limit, Model model) throws Exception {
422
		List<UnsettledPayment> up = null;
423
 
424
		long size = 0;
425
		up = unsettledPaymentsRepository.selectAllById(offset, limit);
426
 
427
		size = unsettledPaymentsRepository.selectAllCount();
428
		if (!up.isEmpty()) {
429
			model.addAttribute("unsettledPayment", up);
430
			model.addAttribute("start", offset + 1);
431
			model.addAttribute("size", size);
432
			model.addAttribute("url", "/getPaginatedUnsettledPayments");
433
 
434
			if (up.size() < limit) {
435
				model.addAttribute("end", offset + up.size());
436
			} else {
437
				model.addAttribute("end", offset + limit);
438
			}
439
		} else {
440
			model.addAttribute("unsettledPayment", up);
441
			model.addAttribute("size", size);
442
		}
443
 
444
		LOGGER.info("unsettledPaymentList" + up);
445
		return "unsettled-payments";
446
	}
447
 
448
	@RequestMapping(value = "/getUnsettledPaymentsByAmount", method = RequestMethod.GET)
449
	public String getUnsettledPaymentByAmount(HttpServletRequest request,
450
			@RequestParam(name = "amount", defaultValue = "0") float amount,
451
			@RequestParam(name = "offset", defaultValue = "0") int offset,
452
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws Exception {
453
		List<UnsettledPayment> up = null;
454
 
455
		long size = 0;
456
		up = unsettledPaymentsRepository.selectAllByAmount(amount, offset, limit);
457
 
458
		size = unsettledPaymentsRepository.selectAllCount();
459
		if (!up.isEmpty()) {
460
			model.addAttribute("unsettledPayment", up);
461
			model.addAttribute("start", offset + 1);
462
			model.addAttribute("size", size);
463
			model.addAttribute("url", "/getPaginatedUnsettledPayments");
464
 
465
			if (up.size() < limit) {
466
				model.addAttribute("end", offset + up.size());
467
			} else {
468
				model.addAttribute("end", offset + limit);
469
			}
470
			return "unsettle-payment-modal";
471
		} else {
472
			model.addAttribute("unsettledPayment", up);
473
			model.addAttribute("size", size);
474
		}
475
 
476
		return "unsettle-payment-modal";
477
	}
478
 
479
	@RequestMapping(value = "/createUnsettledPaymentsEntries", method = RequestMethod.POST)
480
	public String createUnsettledPaymentsEntries(HttpServletRequest request,
481
			@RequestBody UnsettledPaymentModel unsettledPaymentModel, Model model) throws Exception {
482
 
483
		UnsettledPayment up = new UnsettledPayment();
484
		up.setTransaction_reference(unsettledPaymentModel.getTransactionReference());
485
		up.setAmount(unsettledPaymentModel.getAmount());
486
		up.setDescription(unsettledPaymentModel.getDescription());
487
		up.setReference_date(unsettledPaymentModel.getReferenceDate());
488
		LOGGER.info("uppaynments" + up);
489
		unsettledPaymentsRepository.persist(up);
490
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
491
		return "response";
492
	}
493
 
494
	@RequestMapping(value = "/removeUnsettledPaymentsEntries", method = RequestMethod.DELETE)
495
	public String removeUnsettledPaymentsEntries(HttpServletRequest request,
496
			@RequestParam(name = "id", defaultValue = "0") int id, Model model) throws Exception {
497
 
498
		unsettledPaymentsRepository.deleteById(id);
499
 
500
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
501
		return "response";
502
	}
503
 
24509 amit.gupta 504
	@RequestMapping(value = "/wallet/statement", method = RequestMethod.GET)
24523 amit.gupta 505
	public String getWalletStatement(HttpServletRequest request, @RequestParam LocalDateTime startDate,
506
			@RequestParam LocalDateTime endDate, Model model, @RequestParam(defaultValue="0") int fofoId) throws Exception {
507
		boolean isAdmin = roleManager.isAdmin(cookiesProcessor.getCookiesObject(request).getRoleIds());
508
		if(fofoId > 0) {
509
			if(!isAdmin) {
510
				throw new ProfitMandiBusinessException("Unauthorised access", "PartnerId", "Permission Denied");
511
			}
512
		} else {
513
			fofoId = cookiesProcessor.getCookiesObject(request).getFofoId();
514
		}
515
		float openingBalance = walletService.getOpeningTill(fofoId, startDate);
516
		float closingBalance = walletService.getOpeningTill(fofoId, endDate);
24509 amit.gupta 517
		List<UserWalletHistory> uwhList = walletService.getPaginatedUserWalletHistoryByRetailerId(
24523 amit.gupta 518
				fofoId, startDate, endDate, 0, 0);
24511 amit.gupta 519
		Collections.reverse(uwhList);
24509 amit.gupta 520
		/*HttpHeaders headers = new HttpHeaders();
521
		InputStreamResource is = new InputStreamResource();
522
		headers.set("Content-Type", "application/vnd.ms-excel");
523
		headers.set("Content-disposition", "inline; filename=report-" + fileName + ".csv");
524
		headers.setContentLength(response.getEntity().getContentLength());*/
525
		model.addAttribute("opening", openingBalance);
526
		model.addAttribute("closing", closingBalance);
527
		model.addAttribute("history", uwhList);
528
		model.addAttribute("startDate", startDate);
529
		model.addAttribute("endDate", endDate);
530
		return "walletStatement";
531
	}
532
 
22551 ashik.ali 533
}