Subversion Repositories SmartDukaan

Rev

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