Subversion Repositories SmartDukaan

Rev

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