Subversion Repositories SmartDukaan

Rev

Rev 3546 | Rev 3996 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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