Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
1946 chandransh 1
package in.shop2020.payment.service.handler;
2
 
3
import java.util.ArrayList;
4
import java.util.Date;
5
import java.util.HashMap;
6
import java.util.List;
7
import java.util.Map;
8
 
9
import org.apache.thrift.TException;
10
import org.springframework.context.ApplicationContext;
11
import org.springframework.context.support.ClassPathXmlApplicationContext;
12
 
13
import in.shop2020.payment.handler.PaymentGatewayHandler;
14
import in.shop2020.payment.handler.PaymentHandler;
15
import in.shop2020.payments.Attribute;
16
import in.shop2020.payments.Payment;
17
import in.shop2020.payments.PaymentException;
18
import in.shop2020.payments.PaymentGateway;
19
import in.shop2020.payments.PaymentService.Iface;
20
import in.shop2020.payments.PaymentStatus;
21
 
22
public class PaymentServiceHandler implements Iface {
23
 
24
	ApplicationContext context = new ClassPathXmlApplicationContext("context.xml");
25
	PaymentHandler paymentHandler = (PaymentHandler) context.getBean("paymentHandler");
26
	PaymentGatewayHandler paymentGatewayHandler = (PaymentGatewayHandler) context.getBean("paymentGatewayHandler");
27
 
28
	@Override
29
	public void closeSession() throws TException {
30
		// TODO Auto-generated method stub		
31
	}
32
 
33
	@Override
34
	public long createPayment(long userId, double amount, long gatewayId, long txnId) throws PaymentException, TException {
35
		in.shop2020.payment.domain.Payment payment = new in.shop2020.payment.domain.Payment();
36
		payment.setUserId(userId);
37
		payment.setAmount(amount);
38
		payment.setGatewayId(gatewayId);
39
		payment.setMerchantTxnId(txnId);
40
		payment.setStatus(PaymentStatus.INIT.getValue());
41
 
42
		return paymentHandler.insertPayment(payment);
43
	}
44
 
45
	@Override
46
	public List<Payment> getPaymentsForUser(long userId, long fromTime, long toTime, PaymentStatus status, long gatewayId) throws PaymentException, TException {
47
		return getThriftPayments(paymentHandler.getPaymentsForUser(userId, fromTime, toTime, status.getValue(), gatewayId));
48
	}
49
 
50
	@Override
51
	public List<Payment> getPayments(long fromTime, long toTime, PaymentStatus status, long gatewayId) throws PaymentException,	TException {
52
		return getThriftPayments(paymentHandler.getPayments(fromTime, toTime, status.getValue(), gatewayId));
53
	}
54
 
55
	@Override
56
	public PaymentGateway getPaymentGateway(long id) throws PaymentException, TException {
57
		//return paymentGatewayHandler.getPaymentGateway(id).getThriftPaymentGateway();
58
		return null;
59
	}
60
 
61
	@Override
62
	public Payment getPayment(long id) throws PaymentException, TException {
63
		return paymentHandler.getPayment(id).getThriftPayment();
64
	}
65
 
66
	@Override
67
	public List<Payment> getPaymentForTxnId(long txnId) throws PaymentException, TException {
68
		return getThriftPayments(paymentHandler.getPaymentForTxn(txnId));
69
	}
70
 
71
	@Override
72
	public boolean updatePaymentDetails(long id, String gatewayPaymentId,
73
			String sessionId, String gatewayTxnStatus, String description,
74
			String gatewayTxnId, String authCode, String referenceCode,
75
			String errorCode, PaymentStatus status, String gatewayTxnDate,
76
			List<Attribute> attributes) throws PaymentException, TException {
77
		in.shop2020.payment.domain.Payment payment = paymentHandler.getPayment(id);
78
		payment.setGatewayPaymentId(gatewayPaymentId);
79
		payment.setSessionId(sessionId);
80
		payment.setGatewayTxnStatus(gatewayTxnStatus);
81
		payment.setDescription(description);
82
		payment.setGatewayTxnId(gatewayTxnId);
83
		payment.setAuthCode(authCode);
84
		payment.setReferenceCode(referenceCode);
85
		payment.setErrorCode(errorCode);
86
		if(status!=null){
87
			payment.setStatus(status.getValue());
88
			if(status.equals(PaymentStatus.SUCCESS))
89
				payment.setSuccessTimestamp(new Date());
90
			else if(status.equals(PaymentStatus.FAILED))
91
				payment.setErrorTimestamp(new Date());
92
		}
93
 
94
		payment.setGatewayTxnDate(gatewayTxnDate);
95
 
96
		Map<String, String> attrMap = new HashMap<String, String>();
97
		for(Attribute attribute : attributes){
98
			attrMap.put(attribute.getName(), attribute.getValue());
99
		}
100
 
101
		paymentHandler.updatePayment(payment, attrMap);
102
		return true;
103
	}
104
 
105
	@Override
106
	public List<Double> getSuccessfulPaymentsAmountRange() throws TException {
107
		List<Double> minMaxAmounts = new ArrayList<Double>();
108
		Map<String, Float> minMax = paymentHandler.getMinMaxPaymentAmount();
109
		minMaxAmounts.add(Double.parseDouble(Float.toString(minMax.get("MIN"))));
110
		minMaxAmounts.add(Double.parseDouble(Float.toString(minMax.get("MAX"))));
111
		return minMaxAmounts;
112
	}
113
 
114
	private List<Payment> getThriftPayments(List<in.shop2020.payment.domain.Payment> daoPayments){
115
		List<Payment> payments = new ArrayList<Payment>();
116
		for(in.shop2020.payment.domain.Payment payment : daoPayments){
117
			payments.add(payment.getThriftPayment());
118
		}
119
		return payments;
120
	}
121
}