Subversion Repositories SmartDukaan

Rev

Rev 2714 | Rev 3090 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2674 vikas 1
package in.shop2020.serving.controllers;
2
 
3
import in.shop2020.model.v1.order.LineItem;
4
import in.shop2020.model.v1.order.Order;
2728 vikas 5
import in.shop2020.payments.Attribute;
6
import in.shop2020.payments.Constants;
2674 vikas 7
import in.shop2020.payments.Payment;
2728 vikas 8
import in.shop2020.payments.PaymentException;
2674 vikas 9
import in.shop2020.thrift.clients.PaymentServiceClient;
10
import in.shop2020.thrift.clients.TransactionServiceClient;
11
 
12
import java.text.SimpleDateFormat;
13
import java.util.ArrayList;
14
import java.util.Date;
15
import java.util.HashMap;
16
import java.util.List;
17
import java.util.Map;
18
import java.util.TimeZone;
19
 
20
import org.apache.log4j.Logger;
2728 vikas 21
import org.apache.thrift.TApplicationException;
22
import org.apache.thrift.TException;
2674 vikas 23
 
24
/**
25
 * @author vikas
26
 *
27
 */
28
@SuppressWarnings("serial")
29
public class UserOrderInfoController extends BaseController {
30
    private static Logger log = Logger.getLogger(Class.class);
31
    private long userId;
32
    private long orderId;
33
    private Map<String, String> userOrder;
34
    private List<Map<String, String>> lineItemsList;
35
    private List<Map<String, String>> paymentsList;
36
 
37
    public UserOrderInfoController(){
38
        super();
39
    }
40
 
41
    public String index() throws Exception {
42
        PaymentServiceClient paymentServiceClient = new PaymentServiceClient();
43
        TransactionServiceClient transactionServiceClient = new TransactionServiceClient();
44
        Order order = null;
45
        try {
46
            order = transactionServiceClient.getClient().getOrderForCustomer(orderId, userId);
47
        }
48
        catch (Exception e) {
49
            addActionError("Invalid order id or no order selected.");
50
            return "index";
51
        }
52
 
53
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
54
        sdf.setTimeZone(TimeZone.getTimeZone("IST"));
55
        setUserOrderMap(order, sdf);
56
        setLineItems(order.getLineitems());
57
 
58
        List<Payment> payments = paymentServiceClient.getClient().getPaymentForTxnId(order.getTransactionId());
59
        if (payments != null && !payments.isEmpty()) {
2728 vikas 60
            setPayments(payments, sdf, paymentServiceClient);
2674 vikas 61
        }
62
        return "index";
63
    }
64
 
2728 vikas 65
    private void setPayments(List<Payment> payments, SimpleDateFormat sdf, PaymentServiceClient paymentServiceClient) throws PaymentException, TException {
2674 vikas 66
        paymentsList = new ArrayList<Map<String,String>>();
67
        for (Payment payment : payments) {
68
            Map<String,String> paymentMap = new HashMap<String, String>();
69
            if (payment.getAuthCode() != null && !payment.getAuthCode().isEmpty()) {
70
                paymentMap.put("authcode", payment.getAuthCode());
71
            }
72
            if (payment.getDescription() != null && !payment.getDescription().isEmpty()) {
73
                paymentMap.put("description", payment.getDescription());
74
            }
75
            if (payment.getErrorCode() != null && !payment.getErrorCode().isEmpty()) {
76
                paymentMap.put("errorcode", payment.getErrorCode());
77
            }
78
            if (payment.getGatewayPaymentId() != null && !payment.getGatewayPaymentId().isEmpty()) {
79
                paymentMap.put("gatewaypaymentid", payment.getGatewayPaymentId());
80
            }
81
            if (payment.getGatewayTxnDate() != null && !payment.getGatewayTxnDate().isEmpty()) {
82
                paymentMap.put("gatewaytxndt", payment.getGatewayTxnDate());
83
            }
84
            if (payment.getGatewayTxnId() != null && !payment.getGatewayTxnId().isEmpty()) {
85
                paymentMap.put("gatewaytxnid", payment.getGatewayTxnId());
86
            }
87
            if (payment.getGatewayTxnStatus() != null && !payment.getGatewayTxnStatus().isEmpty()) {
88
                paymentMap.put("gatewaytxnstatus", payment.getGatewayTxnStatus());
89
            }
90
            if (payment.getReferenceCode() != null && !payment.getReferenceCode().isEmpty()) {
91
                paymentMap.put("refcode", payment.getReferenceCode());
92
            }
93
            if (payment.getSessionId() != null && !payment.getSessionId().isEmpty()) {
94
                paymentMap.put("sessioid", payment.getSessionId());
95
            }
96
            paymentMap.put("amount", Double.toString(payment.getAmount()));
97
            paymentMap.put("status", payment.getStatus().name());
2728 vikas 98
            try {
99
                paymentMap.put("gatewayname", paymentServiceClient.getClient().getPaymentGateway(payment.getGatewayId()).getName());
100
            }
101
            catch (TApplicationException e) {
102
                log.warn("No payment gateway set", e);
103
            }
104
            paymentMap.put("paymethod", getPaymentMethod(payment.getAttributes()));
105
 
2674 vikas 106
            if (payment.getSuccessTimestamp() != 0) {
107
                paymentMap.put("successts", sdf.format(new Date(payment.getSuccessTimestamp())));
108
            }
109
            paymentsList.add(paymentMap);
110
        }
111
    }
112
 
113
    private void setLineItems(List<LineItem> lineitems) {
114
        lineItemsList = new ArrayList<Map<String,String>>();
115
        for (LineItem lItem : lineitems) {
116
            Map<String, String> lineItemMap = new HashMap<String, String>();
117
            StringBuilder productName = new StringBuilder();
118
            if (lItem.getBrand() != null && !lItem.getBrand().isEmpty()) {
119
                productName.append(lItem.getBrand() + " ");
120
            }
121
            if (lItem.getModel_name() != null && !lItem.getModel_name().isEmpty()) {
122
                productName.append(lItem.getModel_name()  + " ");
123
            }
124
            if (lItem.getModel_number() != null && !lItem.getModel_number().isEmpty()) {
125
                productName.append(lItem.getModel_number()  + " ");
126
            }
127
            lineItemMap.put("name", productName.toString());
128
            lineItemMap.put("quantity", Double.toString(lItem.getQuantity()));
129
            lineItemMap.put("unit_price", Double.toString(lItem.getUnit_price()));
130
            lineItemMap.put("total_price", Double.toString(lItem.getTotal_price()));
131
            lineItemsList.add(lineItemMap);
132
        }
133
    }
134
 
135
    private void setUserOrderMap(Order order, SimpleDateFormat sdf) {
136
        userOrder = new HashMap<String, String>();
137
        userOrder.put("id", Long.toString(order.getId()));
138
        if (order.getCreated_timestamp() != 0) {
2714 vikas 139
            userOrder.put("created", sdf.format(new Date(order.getCreated_timestamp())));
2674 vikas 140
        }
141
        if (order.getDelivery_timestamp() != 0) {
142
            userOrder.put("delivered", sdf.format(new Date(order.getDelivery_timestamp())));
143
        }
144
        if (order.getAccepted_timestamp() != 0) {
145
            userOrder.put("accepted", sdf.format(new Date(order.getAccepted_timestamp())));
146
        }
147
        if (order.getBilling_timestamp() != 0) {
148
            userOrder.put("billingts", sdf.format(new Date(order.getBilling_timestamp())));
149
        }
150
        if (order.getExpected_delivery_time() != 0) {
151
            userOrder.put("expdelivery", sdf.format(new Date(order.getExpected_delivery_time())));
152
        }
153
        if (order.getShipping_timestamp() != 0) {
154
            userOrder.put("shippingts", sdf.format(new Date(order.getShipping_timestamp())));
155
        }
156
        if (order.getPickup_timestamp() != 0) {
157
            userOrder.put("pickupts", sdf.format(new Date(order.getPickup_timestamp())));
158
        }
159
        if (order.getOutofstock_timestamp() != 0) {
160
            userOrder.put("outofstockts", sdf.format(new Date(order.getOutofstock_timestamp())));
161
        }
162
        userOrder.put("serialno", Long.toString(order.getSerialNo()));
163
        userOrder.put("airwaybillno", order.getAirwaybill_no());
164
        userOrder.put("billedby", order.getBilled_by());
165
        userOrder.put("invoiceno", order.getInvoice_number());
166
        userOrder.put("receiver", order.getReceiver());
167
        userOrder.put("status", order.getStatusDescription());
168
        userOrder.put("trackingid", order.getTracking_id());
169
        userOrder.put("amount", Double.toString(order.getTotal_amount()));
170
 
171
        StringBuilder address = new StringBuilder();
172
        if (order.getCustomer_address1() != null) {
173
            address.append(order.getCustomer_address1() + ", ");
174
        }
175
        if (order.getCustomer_address2() != null) {
176
            address.append(order.getCustomer_address2() + ", ");
177
        }
178
        if (order.getCustomer_city() != null) {
179
            address.append(order.getCustomer_city() + ", ");
180
        }
181
        if (order.getCustomer_state() != null) {
182
            address.append(order.getCustomer_state() + "-");
183
        }
184
        if (order.getCustomer_pincode() != null) {
185
            address.append(order.getCustomer_pincode());
186
        }
187
        userOrder.put("shipping", address.toString());
188
    }
2728 vikas 189
 
190
    public String getPaymentMethod(List<Attribute> paymentAttributes) {
191
        String paymentMethod = null;
192
        if(paymentAttributes == null || paymentAttributes.isEmpty()) {
193
            return "N/A";
194
        }
195
        for(Attribute a : paymentAttributes) {
196
            if("payMethod".equals(a.getName())) {
197
                paymentMethod = Constants.PAYMENT_METHOD.get(a.getValue());
198
                break;
199
            }
200
        }
201
        return paymentMethod != null ? paymentMethod : "N/A";
202
    }
2674 vikas 203
 
204
    public void setUserId(String userId) {
205
        try {
206
            this.userId = Long.parseLong(userId);
207
        }
208
        catch (NumberFormatException e) {
209
            log.error(e);
210
        }
211
    }
212
 
213
    public void setOrderId(String orderId) {
214
        try {
215
            this.orderId = Long.parseLong(orderId);
216
        }
217
        catch (NumberFormatException e) {
218
            log.error(e);
219
        }
220
    }
221
 
222
    public Long getUserId() {
223
        return userId;
224
    }
225
 
226
    public Map<String, String> getUserOrder() {
227
        return userOrder;
228
    }
229
 
230
    public List<Map<String, String>> getLineItemsList() {
231
        return lineItemsList;
232
    }
233
 
234
    public List<Map<String, String>> getPaymentsList() {
235
        return paymentsList;
236
    }
237
}