Subversion Repositories SmartDukaan

Rev

Rev 484 | Blame | Last modification | View Log | RSS feed

package in.shop2020.hotspot.dashbaord.server.handler;

import java.util.Date;

import in.shop2020.hotspot.dashbaord.shared.actions.BillOrderResponse;
import in.shop2020.hotspot.dashbaord.shared.actions.ShipOrderRequest;
import in.shop2020.hotspot.dashbaord.shared.actions.ShipOrderResponse;
import in.shop2020.model.v1.order.Billing;
import in.shop2020.model.v1.order.Order;
import in.shop2020.model.v1.order.OrderStatus;
import in.shop2020.model.v1.order.Shipment;
import in.shop2020.model.v1.order.ShipmentStatus;
import in.shop2020.model.v1.order.Transaction;
import in.shop2020.model.v1.order.TransactionStatus;
import in.shop2020.model.v1.order.TransactionService.Client;
import in.shop2020.thrift.clients.TransactionServiceClient;
import net.customware.gwt.dispatch.server.ActionHandler;
import net.customware.gwt.dispatch.server.ExecutionContext;
import net.customware.gwt.dispatch.shared.ActionException;

public class ShipOrderHandler implements ActionHandler<ShipOrderRequest, ShipOrderResponse>{

        @Override
        public ShipOrderResponse execute(ShipOrderRequest request,
                        ExecutionContext context) throws ActionException {
                
                if(request.isInfoRequest()){
                        try{
                                TransactionServiceClient client = new TransactionServiceClient();
                                Client c = client.getClient();
                                Order t_order = c.getOrder(request.getOrder().getOrderId());
                                
                                if(t_order.getStatus() == OrderStatus.SHIPPED_FROM_WH || t_order.getStatus() == OrderStatus.SHIPPED_TO_LOGST){
                                        return new ShipOrderResponse(request.getOrder(), false, "Already shipped", request.isInfoRequest());
                                }
                                                        
                                //change shipping status somehow. 
                                // Right now nothing need to do fancy as tracking ID should be same as AWB no.
                                //TODO
                                
                                c.changeOrderStatus(request.getOrder().getOrderId(), OrderStatus.SHIPPED_FROM_WH, "Shipped from warehouse.");
                                return new ShipOrderResponse(request.getOrder(), true, "Order has been shipped sucessfully", request.isInfoRequest());
                                
                        }catch(Exception e){
                                System.out.println(e);
                        }
                        return null;
                }
                return null;
        }
        
        /*
        @Override
        public ShipOrderResponse execute(ShipOrderRequest request,
                        ExecutionContext context) throws ActionException {
                
                if(request.isInfoRequest()){
                
                        try{
                                TransactionServiceClient client = new TransactionServiceClient();
                                Client c = client.getClient();
                                Transaction t = c.getTransaction(request.getOrder().getTransactionId());
                                
                                
                                if(t.getShipmentInfo() == null){
                                        return new ShipOrderResponse(request.getOrder(), false, "Already shipped", request.isInfoRequest());
                                        
                                }else{
                                        if(t.getShipmentInfo().getShipments() == null){
                                                return new ShipOrderResponse(request.getOrder(), false, "Already shipped", request.isInfoRequest());
                                        }
                                        
                                        if(t.getShipmentInfo().getShipments().size() == 0){
                                                return new ShipOrderResponse(request.getOrder(), false, "Already shipped", request.isInfoRequest());
                                        }
                                }
                                
                                
                                if(t.getTransactionStatus() == TransactionStatus.SHIPPED){
                                        return new ShipOrderResponse(request.getOrder(), false, "Already Shipped", request.isInfoRequest());
                                }
                                
                                if(c.setShippingTracker(request.getOrder().getTransactionId(), t.getShipmentInfo().getShipments().get(0).getId(), request.getTracker(), request.getAirwayBillNo(), request.getProvider())){
                                        return new ShipOrderResponse(request.getOrder(), true, "Added shipping info", request.isInfoRequest());
                                }
                                
                        }catch(Exception e){
                                System.out.println(e);
                        }
                        
                
                        return null;
                }else{
                        try{
                                TransactionServiceClient client = new TransactionServiceClient();
                                Client c = client.getClient();
                                Transaction t = c.getTransaction(request.getOrder().getTransactionId());
                                
                                
                                if(t.getShipmentInfo() == null){
                                        return new ShipOrderResponse(request.getOrder(), false, "Already shipped", request.isInfoRequest());
                                        
                                }else{
                                        if(t.getShipmentInfo().getShipments() == null){
                                                return new ShipOrderResponse(request.getOrder(), false, "Already shipped", request.isInfoRequest());
                                        }
                                        
                                        if(t.getShipmentInfo().getShipments().size() == 0){
                                                return new ShipOrderResponse(request.getOrder(), false, "Already shipped", request.isInfoRequest());
                                        }
                                }
                                
                                
                                if(t.getTransactionStatus() == TransactionStatus.SHIPPED){
                                        return new ShipOrderResponse(request.getOrder(), false, "Already Shipped", request.isInfoRequest());
                                }
                                
                                //change status
                                c.setShippingDate(request.getOrder().getTransactionId(), t.getShipmentInfo().getShipments().get(0).getId(), new Date().getTime());
                                c.changeShippingStatus(request.getOrder().getTransactionId(), t.getShipmentInfo().getShipments().get(0).getId(), ShipmentStatus.SHIPPED, "Shipment has been shipped");
                                c.changeTransactionStatus(request.getOrder().getTransactionId(), TransactionStatus.SHIPPED, "Order has been shipped");
                                return new ShipOrderResponse(request.getOrder(), true, "Order has been shipped sucessfully", request.isInfoRequest());
                                
                        }catch(Exception e){
                                System.out.println(e);
                        }
                        
                
                        return null;
                
                }
        }
*/
        @Override
        public Class<ShipOrderRequest> getActionType() {
                // TODO Auto-generated method stub
                return ShipOrderRequest.class;
        }

        @Override
        public void rollback(ShipOrderRequest arg0, ShipOrderResponse arg1,
                        ExecutionContext arg2) throws ActionException {
                // TODO Auto-generated method stub
                
        }

}