Subversion Repositories SmartDukaan

Rev

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