Subversion Repositories SmartDukaan

Rev

Rev 7510 | Rev 8020 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.amazonservices.mws.orders.samples;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;

import org.apache.thrift.TException;
import org.apache.thrift.transport.TTransportException;
import in.shop2020.logistics.PickUpType;
import in.shop2020.model.v1.catalog.Item;
import in.shop2020.model.v1.order.LineItem;
import in.shop2020.model.v1.order.Order;
import in.shop2020.model.v1.order.OrderSource;
import in.shop2020.model.v1.order.OrderStatus;
import in.shop2020.model.v1.order.OrderType;
import in.shop2020.model.v1.order.SourceDetail;
import in.shop2020.model.v1.order.Transaction;
import in.shop2020.model.v1.order.TransactionStatus;
import in.shop2020.model.v1.user.User;
import in.shop2020.model.v1.user.UserContextException;
import in.shop2020.payments.PaymentStatus;
import in.shop2020.serving.model.ShipmentUpdate;
import in.shop2020.thrift.clients.CatalogClient;
import in.shop2020.thrift.clients.HelperClient;
import in.shop2020.thrift.clients.PaymentClient;
import in.shop2020.thrift.clients.TransactionClient;
import in.shop2020.thrift.clients.UserClient;

public class AmazonOrder {
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String tempUserEmail;
    private List<Order> orders = new ArrayList<Order>();
    
    public long persistTransaction(com.amazonservices.mws.orders.model.Order amazonitem,List<com.amazonservices.mws.orders.model.OrderItem> amazonItems) {

        /**
         * 0.Create user
         * 1.Make a transaction object comprised of Order which in turn contains lineitem.
         * 2.Call create_transaction
         * 3.retrieve that order
         */

        Transaction txnObj = new Transaction();

        long tempUserId = -1;

        try {
                TransactionClient tcl = new TransactionClient();
                //Source Id for store website is 2 and our normal website is 1
                SourceDetail detail = tcl.getClient().getSourceDetail(3);
                tempUserEmail=detail.getEmail();
                try {
                        UserClient ucl = new UserClient();
                        User user = ucl.getClient().getUserByEmail(tempUserEmail);
                        tempUserId = user.getUserId();
                } catch (Exception e) {
                        //////////////log.error("Unable to get user for id " + tempUserId, e);
                }
        } catch(Exception e) {
                //////////////log.error("Unable to get default source", e);
        }
        txnObj.setShoppingCartid(0);
        txnObj.setCustomer_id(tempUserId);
        txnObj.setCreatedOn(Calendar.getInstance().getTimeInMillis());
        txnObj.setTransactionStatus(TransactionStatus.INIT);
        txnObj.setStatusDescription("New Amazon Order");
        txnObj.setCoupon_code("");
        txnObj.setEmiSchemeId(0);

        //if(createOrder(tempUserId) ==  null) {
        //////////////log.error("Unable to create transaction");
        //setErrorMsg("Unable to create order. Please try again.");
        //    return "error-result";
        //}
        for(com.amazonservices.mws.orders.model.OrderItem amazonItemlist: amazonItems){
                int netQuantity = amazonItemlist.getQuantityOrdered() - amazonItemlist.getQuantityShipped();
                for (int i=0;i<netQuantity;i++){
                                orders.add(createOrder(tempUserEmail,tempUserId,amazonItemlist,amazonitem));
                        }
        }
        
        txnObj.setOrders(orders);
        TransactionClient tcl;
        long txnId = 0;
        try {
                tcl = new TransactionClient();
                txnId = tcl.getClient().createTransaction(txnObj);
                System.out.println("Transaction ID is : " + txnId);
                return txnId;
        } catch (Exception e) {
                //////////////log.error("Unable to create transaction", e);
                //setErrorMsg("Unable to create order. Please try again.");
                System.out.println("Could not Create Transaction ......");
                return -1;
        }
    }
        
    public Order createOrder(String tempUserEmail,long userId,com.amazonservices.mws.orders.model.OrderItem aitem1,com.amazonservices.mws.orders.model.Order aitem) {
        LineItem lineObj = createLineItem(aitem1);
        if (lineObj == null) {
            return null;
        }
        Order order = new Order();
        
        order.setCustomer_id(userId);
        order.setCustomer_email(tempUserEmail);
        order.setCustomer_name(aitem.getBuyerName());
        order.setCustomer_address1(aitem.getShippingAddress().getAddressLine1());
        if(aitem.getShippingAddress().getAddressLine3()!=null){
                order.setCustomer_address2(aitem.getShippingAddress().getAddressLine2() +" " +aitem.getShippingAddress().getAddressLine3());
        }
        else{
                order.setCustomer_address2(aitem.getShippingAddress().getAddressLine2());               
        }
        order.setCustomer_city(aitem.getShippingAddress().getCity());
        order.setCustomer_state(aitem.getShippingAddress().getStateOrRegion());
        order.setCustomer_pincode(aitem.getShippingAddress().getPostalCode());
        String phoneNo = aitem.getShippingAddress().getPhone();
        order.setCustomer_mobilenumber(phoneNo.substring(phoneNo.length() - 10));
        order.setTotal_amount(Double.parseDouble(aitem1.getItemPrice().getAmount())/aitem1.getQuantityOrdered());
        order.setStatus(OrderStatus.PAYMENT_PENDING);
        order.setStatusDescription("Initiated");
        order.setCreated_timestamp(Calendar.getInstance().getTimeInMillis());
        order.setTotal_weight(lineObj.getTotal_weight());
        
        order.setSource(3);
        order.setAdvanceAmount(0.0);
        
        List<LineItem> lines = new ArrayList<LineItem>();
        lines.add(lineObj);
        order.setLineitems(lines);
        return order;
    }
        
    public in.shop2020.model.v1.order.LineItem createLineItem(com.amazonservices.mws.orders.model.OrderItem amazonOrderItem) {
        LineItem lineitem = new LineItem();
        
        Item item = null;
        try {
            CatalogClient ccl = new CatalogClient();
            item = ccl.getClient().getItem(Long.valueOf(amazonOrderItem.getSellerSKU()));
        } catch (Exception e) {
            //////////////log.error("Unable to get the item from catalog service, ItemId : " + product_id, e);
            //setErrorMsg("Unable to create order. Please try again.");
            return null;
        }
        lineitem.setProductGroup(item.getProductGroup());
        lineitem.setBrand(item.getBrand());
        lineitem.setModel_number(item.getModelNumber());
        lineitem.setModel_name(item.getModelName());
        if(item.getColor() == null || item.getColor().isEmpty()) {
            lineitem.setColor("");
        } else {
            lineitem.setColor(item.getColor());
        }
        lineitem.setExtra_info(item.getFeatureDescription());
        lineitem.setItem_id(item.getId());
        lineitem.setQuantity(1.0);
        lineitem.setUnit_price(Double.valueOf(amazonOrderItem.getItemPrice().getAmount()));
        lineitem.setTotal_price(Double.valueOf(amazonOrderItem.getItemPrice().getAmount()));
        lineitem.setUnit_weight(item.getWeight());
        lineitem.setTotal_weight(item.getWeight());
        lineitem.setDealText("");
        
        if(item.getWarrantyPeriod() > 0) {
            //Computing Manufacturer Warranty expiry date
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.MONTH, item.getWarrantyPeriod());
            cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
            lineitem.setWarrantry_expiry_timestamp(cal.getTimeInMillis());
        }
        
        return lineitem;
    }

    }