Subversion Repositories SmartDukaan

Rev

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