Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
21410 amit.gupta 1
package com.spice.profitmandi.web.controller.checkout;
2
 
28653 amit.gupta 3
import java.time.LocalDateTime;
4
import java.util.List;
5
import java.util.stream.Collectors;
21410 amit.gupta 6
 
28653 amit.gupta 7
import org.apache.logging.log4j.LogManager;
23568 govind 8
import org.apache.logging.log4j.Logger;
28653 amit.gupta 9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.stereotype.Component;
21410 amit.gupta 11
 
28653 amit.gupta 12
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
13
import com.spice.profitmandi.dao.cart.CartService;
14
import com.spice.profitmandi.dao.entity.transaction.Order;
15
import com.spice.profitmandi.dao.entity.transaction.Payment;
16
import com.spice.profitmandi.dao.entity.transaction.Transaction;
17
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
18
import com.spice.profitmandi.dao.repository.transaction.PaymentRepository;
19
import com.spice.profitmandi.dao.repository.transaction.TransactionRepository;
20
import com.spice.profitmandi.service.order.OrderService;
21
import com.spice.profitmandi.service.wallet.WalletService;
21410 amit.gupta 22
 
28653 amit.gupta 23
import in.shop2020.model.v1.order.WalletReferenceType;
21410 amit.gupta 24
 
28653 amit.gupta 25
@Component
21410 amit.gupta 26
public class CommonPaymentService {
27
 
23568 govind 28
	private static final Logger log = LogManager.getLogger(CommonPaymentService.class);
21410 amit.gupta 29
 
28653 amit.gupta 30
	@Autowired
31
	private WalletService walletService;
21805 amit.gupta 32
 
28653 amit.gupta 33
	@Autowired
34
	private OrderRepository orderRepository;
21410 amit.gupta 35
 
28653 amit.gupta 36
	@Autowired
37
	private OrderService orderService;
38
 
39
	@Autowired
40
	private TransactionRepository transactionRepository;
41
 
42
	@Autowired
43
	private PaymentRepository paymentRepository;
21410 amit.gupta 44
 
28653 amit.gupta 45
	@Autowired
46
	private CartService cartService;
21410 amit.gupta 47
 
28653 amit.gupta 48
	public void payThroughWallet(int transactionId) throws ProfitMandiBusinessException {
49
		Transaction transaction = transactionRepository.selectById(transactionId);
50
		List<Order> orders = orderRepository.selectAllByTransactionId(transactionId);
51
		double walletAmount = orders.stream().collect(Collectors.summingDouble(Order::getTotalAmount));
52
		walletService.consumeAmountFromWallet(transaction.getRetailerId(), transactionId, 
53
				WalletReferenceType.PURCHASE, "Against Order purchase", (float)walletAmount, LocalDateTime.now());
54
		this.addPayment(transaction, walletAmount);
55
 
56
		//
21410 amit.gupta 57
	}
28653 amit.gupta 58
 
59
	private void addPayment(Transaction transaction, double walletAmount) {
60
		Payment payment = new Payment();
61
		payment.setAmount(walletAmount);
62
		payment.setGatewayId(8);
63
		payment.setStatus(2);
64
		payment.setGatewayTxnStatus("SUCCESS");
65
		payment.setDescription("Payment Received");
66
		payment.setUserId(transaction.getRetailerId());
67
		payment.setInitTimestamp(LocalDateTime.now());
68
		payment.setSuccessTimestamp(LocalDateTime.now());
28748 amit.gupta 69
		payment.setDigital(false);
28741 amit.gupta 70
		payment.setMerchantTxnId(transaction.getId());
28653 amit.gupta 71
		paymentRepository.persist(payment);
21410 amit.gupta 72
	}
73
}