Subversion Repositories SmartDukaan

Rev

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

package in.shop2020;

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.SnapdealOrder;
import in.shop2020.thrift.clients.TransactionClient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpParams;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SnapdealOrderStatusReconciliation{
        private static Logger logger;

        public static void main(String[] args) throws UnsupportedEncodingException{
                logger = LoggerFactory.getLogger(SnapdealOrderStatusReconciliation.class);
                List<OrderStatus> statuses = new ArrayList<OrderStatus>();
                statuses.add(OrderStatus.SHIPPED_FROM_WH);
                statuses.add(OrderStatus.SHIPPED_TO_LOGST);

                List<List<String>> deliveredOrderDataList = new ArrayList<List<String>>();
                long minCreationDate = 0l;
                TransactionClient tsc = null;
                try {
                        tsc = new TransactionClient();
                        minCreationDate = tsc.getClient().getMinCreatedTimeStampUndeliveredOrdersForSource(OrderSource.SNAPDEAL.getValue());
                } catch (Exception e) {
                        logger.error("Unable to establish connection to the transaction service while getting Minimum Order Created Timstamp for Undelivered Orders ", e);
                }//Dec 14, 2013 12:00:00 AM  1383291412000l

                SimpleDateFormat snapdealDateFormat = new SimpleDateFormat("yyyy-MM-dd");
                SimpleDateFormat gotSnapdealDateFormat = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss aaa");
                SimpleDateFormat ourDBDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String startDate= "";
                if(minCreationDate > 0l){
                        startDate = snapdealDateFormat.format(new Date(minCreationDate));
                }
                else{
                        startDate = snapdealDateFormat.format(new Date(System.currentTimeMillis()));
                }
                logger.info("Snapdeal Order Recon Start Date .. "+startDate);
                startDate = startDate.replace("-", "%2F");

                String endDate = snapdealDateFormat.format(new Date(System.currentTimeMillis()));
                logger.info("Snapdeal Order Recon End Date .. "+endDate);
                endDate = endDate.replace("-", "%2F");


                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost("http://shipping.snapdeal.com/login_security_check?spring-security-redirect=http://shipping.snapdeal.com/vendor/product-shipment/shippingDashboard&");
                HttpGet get;
                BufferedReader rd= null;

                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("j_username",
                "khushal.bhatia@saholic.com"));
                nameValuePairs.add(new BasicNameValuePair("j_password",
                "s@h0l1c"));
                post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
                HttpResponse response = null;
                try {
                        response = client.execute(post);
                } catch (Exception e) {
                        logger.error("Unable to get Http Response for snapdeal seller portal login", e);
                }
                try {
                        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                } catch (Exception e1) {
                        logger.error("Unable to read Http Response for snapdeal seller portal login", e1);
                } 

                String line = "";
                try {
                        while ((line = rd.readLine()) != null) {
                                System.out.println(line);
                        }
                } catch (Exception e) {
                        logger.error("Unable to extract Http Response for snapdeal seller portal login", e);
                }

                //http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch/?shippedStartDate=2014%2F01%2F01&shippedEndDate=2014%2F01%2F08&specialPanelAccess=&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0&sCode=COURIER_DELIVERED

                logger.info("Getting Delivery Information for DropShip Snapdeal Orders");
                String dropshipUrl = "http://shipping.snapdeal.com/vendor/DROPSHIP/product-shipment/shippedData/fetch/?shippedStartDate="+startDate+"&shippedEndDate="+endDate+"&specialPanelAccess=&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0&sCode=COURIER_DELIVERED";
                logger.info("Drop Ship Url "+dropshipUrl);

                get = new HttpGet(dropshipUrl);

                //HttpClient client1 = new DefaultHttpClient();
                
                try {
                        response = client.execute(get);
                } catch (Exception e) {
                        logger.error("Unable to get Http Response for snapdeal dropship delivered orders", e);
                } 

                try {
                        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                } catch (Exception e) {
                        logger.error("Unable to read Http Response for snapdeal dropship delivered orders", e);
                } 

                JSONArray jsonDataShip = null;
                String line1 = "";
                try {
                        while ((line1 = rd.readLine()) != null) {
                                if(line1.contains("jsonString")){
                                        String jsonString = line1.substring(line1.indexOf("["), line1.indexOf("'/>"));
                                        logger.info("Response get from SnapDeal DropShip.. ");
                                        jsonDataShip = new JSONArray(jsonString);
                                        break;
                                }
                        }
                } catch (Exception e) {
                        logger.error("Unable to extract Http Response for snapdeal dropship delivered orders", e);
                } 

                if(jsonDataShip!=null && jsonDataShip.length()>0){
                        for(int i=0; i< jsonDataShip.length(); i++){
                                JSONObject jsonObj = null;
                                try {
                                        jsonObj = jsonDataShip.getJSONObject(i);

                                        if(jsonObj!=null){
                                                //System.out.println(jsonObj);
                                                String subOrderCode =(String) jsonObj.get("suborderCode");
                                                String referenceNumber =(String) jsonObj.get("referenceNumber");
                                                String deliveryDate =(String) jsonObj.get("deliveredOn");
                                                //System.out.println("Snapdeal Dropship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);
                                                logger.info("Snapdeal Dropship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);
                                                deliveryDate = ourDBDateFormat.format(gotSnapdealDateFormat.parse(deliveryDate).getTime());
                                                List<String> deliveredOrdelList = new ArrayList<String>();
                                                deliveredOrdelList.add(referenceNumber);
                                                deliveredOrdelList.add(subOrderCode);
                                                deliveredOrdelList.add(deliveryDate);
                                                deliveredOrderDataList.add(deliveredOrdelList);
                                        }
                                } catch (Exception e) {
                                        logger.error("Unable to add delivered order details for updation regarding snapdeal dropship delivered orders", e);
                                }
                        }
                }

                logger.info("Getting Delivery Information for OneShip Snapdeal Orders");
                String oneShipUrl = "http://shipping.snapdeal.com/vendor/ONESHIP/product-shipment/shippedData/fetch/?shippedStartDate="+startDate+"&shippedEndDate="+endDate+"&specialPanelAccess=&statusCode=COURIER_DELIVERED&statusColumn=deliveredOn&dispatchCategoryId=0&sCode=COURIER_DELIVERED";
                logger.info("One Ship Url "+oneShipUrl);

                get = new HttpGet(oneShipUrl);  

                //HttpClient client2 = new DefaultHttpClient();
                
                try {
                        response = client.execute(get);
                } catch (Exception e) {
                        logger.error("Unable to get Http Response for snapdeal oneship delivered orders", e);
                } 

                try {
                        rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                } catch (Exception e) {
                        logger.error("Unable to read Http Response for snapdeal oneship delivered orders", e);
                } 

                try {
                        while ((line1 = rd.readLine()) != null) {
                                if(line1.contains("jsonString")){
                                        String jsonString = line1.substring(line1.indexOf("["), line1.indexOf("'/>"));
                                        logger.info("Response get from SnapDeal OneShip.. ");
                                        jsonDataShip = new JSONArray(jsonString);
                                        break;
                                }
                        }
                } catch (Exception e) {
                        logger.error("Unable to extract Http Response for snapdeal oneship delivered orders", e);
                } 

                if(jsonDataShip!=null && jsonDataShip.length()>0){
                        for(int i=0; i< jsonDataShip.length(); i++){
                                JSONObject jsonObj = null;
                                try {
                                        jsonObj = jsonDataShip.getJSONObject(i);

                                        if(jsonObj!=null){
                                                //System.out.println(jsonObj);
                                                String subOrderCode =(String) jsonObj.get("suborderCode");
                                                String referenceNumber =(String) jsonObj.get("referenceNumber");
                                                String deliveryDate =(String) jsonObj.get("deliveredOn");
                                                //System.out.println("Snapdeal Oneship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);
                                                logger.info("Snapdeal Oneship Order Details...suborderCode... "+subOrderCode+" ...referenceNumber... "+ referenceNumber+ " ...deliveryDate... "+ deliveryDate);
                                                deliveryDate = ourDBDateFormat.format(gotSnapdealDateFormat.parse(deliveryDate).getTime());
                                                List<String> deliveredOrdelList = new ArrayList<String>();
                                                deliveredOrdelList.add(referenceNumber);
                                                deliveredOrdelList.add(subOrderCode);
                                                deliveredOrdelList.add(deliveryDate);

                                                deliveredOrderDataList.add(deliveredOrdelList);
                                        }
                                } catch (Exception e) {
                                        logger.error("Unable to add delivered order details for updation regarding snapdeal oneship delivered orders", e);
                                }
                        }
                }

                if(deliveredOrderDataList!=null && deliveredOrderDataList.size()>0){
                        logger.info("Delivered Orders Size .. "+deliveredOrderDataList.size());
                        try{
                                new TransactionClient().getClient().updateSnapdealOrdersStatus(deliveredOrderDataList);
                        } catch(Exception e){
                                logger.error("Unable to update delivery information for snapdeal orders", e);
                        }
                }

        }
}