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