| 2674 |
vikas |
1 |
package in.shop2020.serving.controllers;
|
|
|
2 |
|
| 3578 |
mandeep.dh |
3 |
import in.shop2020.crm.SearchFilter;
|
|
|
4 |
import in.shop2020.crm.Ticket;
|
|
|
5 |
import in.shop2020.crm.TicketCategory;
|
|
|
6 |
import in.shop2020.crm.TicketStatus;
|
| 2674 |
vikas |
7 |
import in.shop2020.model.v1.order.LineItem;
|
|
|
8 |
import in.shop2020.model.v1.order.Order;
|
| 3578 |
mandeep.dh |
9 |
import in.shop2020.model.v1.order.OrderStatus;
|
| 4142 |
mandeep.dh |
10 |
import in.shop2020.model.v1.user.Address;
|
| 2728 |
vikas |
11 |
import in.shop2020.payments.Attribute;
|
|
|
12 |
import in.shop2020.payments.Constants;
|
| 2674 |
vikas |
13 |
import in.shop2020.payments.Payment;
|
| 2728 |
vikas |
14 |
import in.shop2020.payments.PaymentException;
|
| 4142 |
mandeep.dh |
15 |
import in.shop2020.payments.PaymentService.Client;
|
| 3090 |
mandeep.dh |
16 |
import in.shop2020.serving.model.ShipmentUpdate;
|
|
|
17 |
import in.shop2020.serving.services.BlueDartTrackingService;
|
| 3578 |
mandeep.dh |
18 |
import in.shop2020.thrift.clients.CRMClient;
|
| 3128 |
rajveer |
19 |
import in.shop2020.thrift.clients.PaymentClient;
|
|
|
20 |
import in.shop2020.thrift.clients.TransactionClient;
|
| 4142 |
mandeep.dh |
21 |
import in.shop2020.thrift.clients.UserClient;
|
| 3546 |
mandeep.dh |
22 |
import in.shop2020.utils.ModelUtils;
|
| 2674 |
vikas |
23 |
|
|
|
24 |
import java.util.ArrayList;
|
| 4416 |
mandeep.dh |
25 |
import java.util.Collections;
|
| 2674 |
vikas |
26 |
import java.util.List;
|
| 4416 |
mandeep.dh |
27 |
import java.util.concurrent.Callable;
|
|
|
28 |
import java.util.concurrent.Executors;
|
|
|
29 |
import java.util.concurrent.TimeUnit;
|
| 2674 |
vikas |
30 |
|
|
|
31 |
import org.apache.log4j.Logger;
|
| 2728 |
vikas |
32 |
import org.apache.thrift.TException;
|
| 4142 |
mandeep.dh |
33 |
import org.apache.thrift.transport.TTransportException;
|
| 2674 |
vikas |
34 |
|
|
|
35 |
/**
|
|
|
36 |
* @author vikas
|
| 3578 |
mandeep.dh |
37 |
*
|
| 2674 |
vikas |
38 |
*/
|
|
|
39 |
@SuppressWarnings("serial")
|
|
|
40 |
public class UserOrderInfoController extends BaseController {
|
| 3578 |
mandeep.dh |
41 |
private static Logger log = Logger.getLogger(Class.class);
|
| 3090 |
mandeep.dh |
42 |
private static BlueDartTrackingService blueDartTrackingService = new BlueDartTrackingService();
|
|
|
43 |
|
| 4142 |
mandeep.dh |
44 |
private long orderId;
|
|
|
45 |
private Order order;
|
|
|
46 |
private List<Payment> payments;
|
| 4416 |
mandeep.dh |
47 |
private List<ShipmentUpdate> shipmentUpdates = new ArrayList<ShipmentUpdate>();
|
| 4142 |
mandeep.dh |
48 |
private Long codTicketId;
|
|
|
49 |
private List<Address> addresses;
|
| 2674 |
vikas |
50 |
|
| 3578 |
mandeep.dh |
51 |
public UserOrderInfoController() {
|
| 2674 |
vikas |
52 |
super();
|
|
|
53 |
}
|
|
|
54 |
|
|
|
55 |
public String index() throws Exception {
|
| 3128 |
rajveer |
56 |
PaymentClient paymentServiceClient = new PaymentClient();
|
|
|
57 |
TransactionClient transactionServiceClient = new TransactionClient();
|
| 3090 |
mandeep.dh |
58 |
|
| 2674 |
vikas |
59 |
try {
|
| 3499 |
mandeep.dh |
60 |
order = transactionServiceClient.getClient().getOrder(orderId);
|
| 3578 |
mandeep.dh |
61 |
} catch (Exception e) {
|
| 2674 |
vikas |
62 |
addActionError("Invalid order id or no order selected.");
|
|
|
63 |
return "index";
|
|
|
64 |
}
|
|
|
65 |
|
| 4142 |
mandeep.dh |
66 |
payments = paymentServiceClient.getClient()
|
| 3578 |
mandeep.dh |
67 |
.getPaymentForTxnId(order.getTransactionId());
|
| 3090 |
mandeep.dh |
68 |
|
| 3578 |
mandeep.dh |
69 |
|
| 4416 |
mandeep.dh |
70 |
// Spawning a thread to capture shipment updates from Bluedart
|
|
|
71 |
// This is done to ensure that response from Crm web app is sent
|
|
|
72 |
// within given time limits. Also, we wont be affected in the cases
|
|
|
73 |
// where bluedart site is down or slow
|
|
|
74 |
Executors.newSingleThreadExecutor().invokeAll(Collections.singletonList(new Callable<Boolean>() {
|
|
|
75 |
public Boolean call() throws Exception {
|
|
|
76 |
shipmentUpdates = blueDartTrackingService.getUpdates(order.getAirwaybill_no());
|
|
|
77 |
return true;
|
|
|
78 |
}
|
|
|
79 |
}), 5, TimeUnit.SECONDS);
|
|
|
80 |
|
| 4663 |
rajveer |
81 |
if (order.isCod() && OrderStatus.COD_VERIFICATION_PENDING.equals(order.getStatus())) {
|
| 3578 |
mandeep.dh |
82 |
populateCODTicketId(order.getCustomer_id());
|
|
|
83 |
}
|
|
|
84 |
|
| 4142 |
mandeep.dh |
85 |
if (canEditOrderAddress()) {
|
|
|
86 |
userContextServiceClient = new UserClient().getClient();
|
|
|
87 |
addresses = userContextServiceClient.getAllAddressesForUser(order.getCustomer_id());
|
|
|
88 |
}
|
|
|
89 |
|
|
|
90 |
return INDEX;
|
| 2674 |
vikas |
91 |
}
|
|
|
92 |
|
| 4142 |
mandeep.dh |
93 |
private boolean canEditOrderAddress() {
|
|
|
94 |
return false;
|
|
|
95 |
}
|
|
|
96 |
|
| 3578 |
mandeep.dh |
97 |
private void populateCODTicketId(long customerId) {
|
|
|
98 |
try {
|
|
|
99 |
SearchFilter searchFilter = new SearchFilter();
|
|
|
100 |
searchFilter.setTicketCategory(TicketCategory.COD_VERIFICATION);
|
|
|
101 |
searchFilter.setTicketStatuses(new ArrayList<TicketStatus>());
|
|
|
102 |
searchFilter.getTicketStatuses().add(TicketStatus.OPEN);
|
|
|
103 |
searchFilter.getTicketStatuses().add(TicketStatus.REOPEN);
|
|
|
104 |
searchFilter.setCustomerId(customerId);
|
|
|
105 |
crmServiceClient = new CRMClient().getClient();
|
|
|
106 |
List<Ticket> tickets = crmServiceClient.getTickets(searchFilter);
|
|
|
107 |
if (tickets != null && !tickets.isEmpty()) {
|
|
|
108 |
codTicketId = tickets.get(0).getId();
|
|
|
109 |
}
|
|
|
110 |
} catch (TException e) {
|
|
|
111 |
log.error("Error fetching tickets for customerId: " + customerId, e);
|
|
|
112 |
}
|
|
|
113 |
}
|
|
|
114 |
|
| 4142 |
mandeep.dh |
115 |
public String getPaymentGateway(Payment payment) {
|
|
|
116 |
String gatewayName = "";
|
| 3578 |
mandeep.dh |
117 |
|
| 4142 |
mandeep.dh |
118 |
try {
|
|
|
119 |
Client paymentServiceClient = new PaymentClient().getClient();
|
|
|
120 |
gatewayName = paymentServiceClient.getPaymentGateway(payment.getGatewayId()).getName();
|
|
|
121 |
} catch (TTransportException e) {
|
|
|
122 |
} catch (PaymentException e) {
|
|
|
123 |
} catch (TException e) {
|
| 2674 |
vikas |
124 |
}
|
| 4142 |
mandeep.dh |
125 |
|
|
|
126 |
return gatewayName;
|
| 2674 |
vikas |
127 |
}
|
|
|
128 |
|
| 4142 |
mandeep.dh |
129 |
public String getProductName(LineItem lineItem) {
|
|
|
130 |
String name = ModelUtils.extractProductNameFromLineItem(lineItem);
|
|
|
131 |
|
| 4146 |
mandeep.dh |
132 |
if (lineItem.getColor() != null && !lineItem.getColor().isEmpty()) {
|
| 4142 |
mandeep.dh |
133 |
name += "(" + lineItem.getColor() + ")";
|
| 2674 |
vikas |
134 |
}
|
| 4142 |
mandeep.dh |
135 |
|
|
|
136 |
return name;
|
| 2674 |
vikas |
137 |
}
|
|
|
138 |
|
| 4142 |
mandeep.dh |
139 |
public int convertDouble(double value) {
|
|
|
140 |
return (int)value;
|
| 2674 |
vikas |
141 |
}
|
| 3578 |
mandeep.dh |
142 |
|
| 4142 |
mandeep.dh |
143 |
public String getAddress(Order order) {
|
|
|
144 |
return ModelUtils.extractAddressFromOrder(order);
|
|
|
145 |
}
|
|
|
146 |
|
| 2728 |
vikas |
147 |
public String getPaymentMethod(List<Attribute> paymentAttributes) {
|
|
|
148 |
String paymentMethod = null;
|
| 3578 |
mandeep.dh |
149 |
if (paymentAttributes == null || paymentAttributes.isEmpty()) {
|
| 2728 |
vikas |
150 |
return "N/A";
|
|
|
151 |
}
|
| 3578 |
mandeep.dh |
152 |
for (Attribute a : paymentAttributes) {
|
|
|
153 |
if ("payMethod".equals(a.getName())) {
|
| 2728 |
vikas |
154 |
paymentMethod = Constants.PAYMENT_METHOD.get(a.getValue());
|
|
|
155 |
break;
|
|
|
156 |
}
|
|
|
157 |
}
|
|
|
158 |
return paymentMethod != null ? paymentMethod : "N/A";
|
|
|
159 |
}
|
| 2674 |
vikas |
160 |
|
|
|
161 |
public void setOrderId(String orderId) {
|
|
|
162 |
try {
|
|
|
163 |
this.orderId = Long.parseLong(orderId);
|
| 3578 |
mandeep.dh |
164 |
} catch (NumberFormatException e) {
|
| 2674 |
vikas |
165 |
log.error(e);
|
|
|
166 |
}
|
|
|
167 |
}
|
|
|
168 |
|
| 4142 |
mandeep.dh |
169 |
public List<Payment> getPayments() {
|
|
|
170 |
return payments;
|
| 2674 |
vikas |
171 |
}
|
|
|
172 |
|
| 3090 |
mandeep.dh |
173 |
public List<ShipmentUpdate> getShipmentUpdates() {
|
|
|
174 |
return shipmentUpdates;
|
|
|
175 |
}
|
|
|
176 |
|
|
|
177 |
public void setShipmentUpdates(List<ShipmentUpdate> shipmentUpdates) {
|
|
|
178 |
this.shipmentUpdates = shipmentUpdates;
|
|
|
179 |
}
|
| 3499 |
mandeep.dh |
180 |
|
|
|
181 |
public Order getOrder() {
|
|
|
182 |
return order;
|
|
|
183 |
}
|
|
|
184 |
|
|
|
185 |
public void setOrder(Order order) {
|
|
|
186 |
this.order = order;
|
|
|
187 |
}
|
| 3578 |
mandeep.dh |
188 |
|
|
|
189 |
public Long getCodTicketId() {
|
|
|
190 |
return codTicketId;
|
|
|
191 |
}
|
|
|
192 |
|
|
|
193 |
public void setCodTicketId(Long codTicketId) {
|
|
|
194 |
this.codTicketId = codTicketId;
|
|
|
195 |
}
|
| 4142 |
mandeep.dh |
196 |
|
|
|
197 |
public List<Address> getAddresses() {
|
|
|
198 |
return addresses;
|
|
|
199 |
}
|
|
|
200 |
|
|
|
201 |
public void setAddresses(List<Address> addresses) {
|
|
|
202 |
this.addresses = addresses;
|
|
|
203 |
}
|
| 4241 |
anupam.sin |
204 |
|
|
|
205 |
public String getOrderStatusDescription(Order order) {
|
|
|
206 |
String status = order.getStatus().getDescription();
|
|
|
207 |
|
|
|
208 |
if (order.getStatus() == OrderStatus.DELIVERY_SUCCESS) {
|
|
|
209 |
status = "Completed";
|
|
|
210 |
}
|
|
|
211 |
|
|
|
212 |
return status;
|
|
|
213 |
}
|
| 2674 |
vikas |
214 |
}
|