Subversion Repositories SmartDukaan

Rev

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