Subversion Repositories SmartDukaan

Rev

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