Subversion Repositories SmartDukaan

Rev

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

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

import java.util.Date;
import java.util.List;

import in.shop2020.hotspot.dashbaord.shared.actions.DetailsMask;
import in.shop2020.hotspot.dashbaord.shared.actions.Order;
import in.shop2020.hotspot.dashbaord.shared.actions.OrderDetailsRequest;
import in.shop2020.hotspot.dashbaord.shared.actions.OrderDetailsResponse;
import in.shop2020.hotspot.dashbaord.shared.actions.Shipment;
import in.shop2020.model.v1.order.Billing;
import in.shop2020.model.v1.order.BillingInfo;
import in.shop2020.model.v1.order.ExtraOrderInfo;
import in.shop2020.model.v1.order.Payment;
import in.shop2020.model.v1.order.PaymentInfo;
import in.shop2020.model.v1.order.ShipmentInfo;
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 OrderDetailsHandler implements ActionHandler<OrderDetailsRequest, OrderDetailsResponse>{

        @Override
        public OrderDetailsResponse execute(OrderDetailsRequest request,
                        ExecutionContext context) throws ActionException {
                // TODO Auto-generated method stub
                try{
                        TransactionServiceClient client = new TransactionServiceClient();
                        Client c = client.getClient();
                        Transaction t = c.getTransaction(request.getOrderId());
                        DetailsMask mask = DetailsMask.ALL;
                        if(t.getTransactionStatus() == TransactionStatus.INIT){
                                mask = DetailsMask.NEW;
                        }
                        if(t.getTransactionStatus() == TransactionStatus.SUBMITTED_FOR_PROCESSING){
                                mask = DetailsMask.ACCEPT;
                        }
                        
                        if(t.getTransactionStatus() == TransactionStatus.BILLED){
                                mask = DetailsMask.BILL;
                        }
                        
                        if(t.getTransactionStatus() == TransactionStatus.READY_FOR_SHIPPING){
                                mask = DetailsMask.SHIP;
                        }
                        
                        if(t.getTransactionStatus() == TransactionStatus.SHIPPED){
                                mask = DetailsMask.SHIP;
                        }
                        
                        if(t.getTransactionStatus() == TransactionStatus.ORDER_FULFILLMENT){
                                mask =DetailsMask.REJECT;
                        }
                        
                        //Get extra details
                        long sku_id;
                        String model;
                        String vendor;
                        String colour;
                        ExtraOrderInfo eoi = c.getExtraInfo(t.getId());
                        if(eoi == null){
                                sku_id = 34;
                                model = "N 72";
                                colour = "Black";
                                vendor = "Nokia";
                        }else{
                                sku_id = eoi.getSku_id();
                                model = eoi.getModel_name();
                                vendor = eoi.getVendor_info();
                                colour = eoi.getColour();
                        }
                        
                        Order o = new Order(t.getCustomer_id(), t.getId(), t.getCreatedOn(), t.getExpectedDeliveryTime(), t.getTransactionStatus().toString(), t.getStatusDescription(),model, colour, vendor, sku_id);
                        
                        Shipment shipment = new Shipment("");
                        
                        ShipmentInfo info = t.getShipmentInfo();
                        
                        if(info != null && info.getShipments() != null && info.getShipments().size() !=0){
                                in.shop2020.model.v1.order.Shipment sp = info.getShipments().iterator().next();
                                
                                shipment.setAddress(sp.getAddress());
                                shipment.setShipmentStatus(sp.getStatus().toString());
                                shipment.setValue(sp.getValue()+"");
                                shipment.setWeight(sp.getWeight()+"");
                                shipment.setOrderPlaced(new Date(t.getCreatedOn()).toString());
                                shipment.setDeliveryTime("");
                                PaymentInfo pi = t.getPaymentInfo();
                                Payment p = pi.getPayments().entrySet().iterator().next().getValue();
                                shipment.setPaymentMode(p.getMode());
                                shipment.setPaymentTime(new Date(p.getCompletionTimestamp()).toString());
                                shipment.setBank_tx_id(p.getBank_tx_id());      
                                
                                if(t.getTransactionStatus() == TransactionStatus.SHIPPED || t.getTransactionStatus() == TransactionStatus.READY_FOR_SHIPPING){
                                        shipment.setAirwayNo(sp.getAirwayBillNo());
                                        shipment.setProvider(sp.getProvider());
                                        shipment.setTracker(sp.getTrackingId());
                                        shipment.setShippedOn(new Date(sp.getShipmentTimestamp()).toString());
                                        Billing billing = t.getBillingInfo().getBillings().iterator().next();
                                        shipment.setBillNo(billing.getBillNumber());
                                        shipment.setBillCreatedBy(billing.getGeneratedBy());
                                        shipment.setBillCreatedOn(new Date(billing.getGeneratedTimestamp()).toString());
                                }
                                
                                if(t.getTransactionStatus() == TransactionStatus.BILLED){
                                
                                        Billing billing = t.getBillingInfo().getBillings().iterator().next();
                                        shipment.setBillNo(billing.getBillNumber());
                                        shipment.setBillCreatedBy(billing.getGeneratedBy());
                                        shipment.setBillCreatedOn(new Date(billing.getGeneratedTimestamp()).toString());
                                }
                                o.setShipment(shipment);
                        }                        
                        return new OrderDetailsResponse(o, mask);
                }catch(Exception e){
                        System.out.println(e);
                }
                return new OrderDetailsResponse(null, DetailsMask.ALL);
        }

        @Override
        public Class<OrderDetailsRequest> getActionType() {
                // TODO Auto-generated method stub
                return OrderDetailsRequest.class;
        }

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