Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package in.shop2020.support.controllers;

import in.shop2020.model.v1.order.EbayOrder;
import in.shop2020.model.v1.order.Order;
import in.shop2020.model.v1.order.TransactionService;
import in.shop2020.support.utils.ReportsUtils;
import in.shop2020.thrift.clients.TransactionClient;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
@InterceptorRefs({
    @InterceptorRef("defaultStack"),
    @InterceptorRef("login")
})
@Results({
    @Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"})
})
public class EbayAwbUploaderController extends ActionSupport implements ServletRequestAware {
        
        private static Logger logger = LoggerFactory.getLogger(EbayAwbUploaderController.class);
        
        private static final int SALES_REC_NUMBER_INDEX = 0;
        private static final int AWB_INDEX = 1;
        
        private HttpServletRequest request;
    private HttpSession session;
        
    private String errorMsg = "";
    
    private File awbFile;

    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
    public String create() throws IOException {
                FileUtils.copyFile(awbFile, new File("/tmp/ebayAwbFile " + sdf.format(new Date()) + ".xls"));
                Workbook wb = new HSSFWorkbook(new FileInputStream(awbFile));
                
                int totalNumRows = 0;
            for (Row row : wb.getSheetAt(0)) {
                EbayOrder ebayOrder = null;
                String airwayBillNum = null;
                Order order = null;
                try {
                    totalNumRows++;
                    if(totalNumRows==1) {
                        continue;
                    }
                    TransactionService.Client transactionClient = new TransactionClient().getClient();
                    try {
                        ebayOrder = transactionClient.getEbayOrderBySalesRecNumber(new Double(row.getCell(SALES_REC_NUMBER_INDEX).getNumericCellValue()).longValue());
                    } catch (Exception e) {
                        setErrorMsg(getErrorMsg() + "<br/>Error in getting Ebay Order for Row Id " + totalNumRows);
                        continue;
                    }
                    try {
                        airwayBillNum = row.getCell(AWB_INDEX).getStringCellValue();
                    } catch (Exception e) {
                        setErrorMsg(getErrorMsg() + "<br/>Error in reading airwaybill number for Row " + totalNumRows);
                        continue;
                    }
                    try {
                        order = transactionClient.getOrder(ebayOrder.getOrderId()); 
                    } catch (Exception e) {
                        setErrorMsg(getErrorMsg() + "<br/>Error in getting Saholic Order for Row Id " + totalNumRows);
                        continue;
                    }
                    
                    if(order.getAirwaybill_no()==null || order.getAirwaybill_no().equals("null") || order.getAirwaybill_no().isEmpty()) {
                        order.setAirwaybill_no(airwayBillNum);
                        order.setTracking_id(airwayBillNum);
                        transactionClient.updateOrderForEbay(order);
                    }
                    
                 } catch (Exception e) {
                     logger.error(e + "\n" + e.getMessage() + e.getCause());
                     setErrorMsg(getErrorMsg() + "<br/>Error in row number " + totalNumRows);
                     addActionError("Error in row number " + totalNumRows);
                 }
            }
            if(errorMsg.isEmpty()) {
                setErrorMsg("Sucessfully uploaded Awb numbers");
            }
            return "authsuccess";
        }
    
        public String index() {
        if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), "/ebay-dashboard"))
            return "authfail";
        return "authsuccess";
    }
        
        @Override
        public void setServletRequest(HttpServletRequest request) {
                this.request = request;
        this.session = request.getSession();
        }

        public String getErrorMsg() {
                return errorMsg;
        }

        public void setErrorMsg(String errorMsg) {
                this.errorMsg = errorMsg;
        }

        public File getAwbFile() {
                return awbFile;
        }

        public void setAwbFile(File awbFile) {
                this.awbFile = awbFile;
        }
        
}