Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package in.shop2020.support.controllers;

import in.shop2020.model.v1.catalog.CatalogService;
import in.shop2020.model.v1.catalog.EbayItem;
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.CatalogClient;
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.Collection;
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 EbayColorChangeController extends ActionSupport implements ServletRequestAware {
        
        private static Logger logger = LoggerFactory.getLogger(EbayColorChangeController.class);
        
        private static final int PAISAPAYID_INDEX = 0;
        private static final int SALES_REC_NUM_INDEX = 1;
        private static final int NEW_ITEM_ID_INDEX = 2;
        
        private HttpServletRequest request;
    private HttpSession session;
        
    private String errorMsg = "";
    
    private File listingFile;

    public String create() throws IOException {
                Workbook wb = new HSSFWorkbook(new FileInputStream(listingFile));
                
                int totalNumRows = 0;
            int successfullyProcessedNumRows = 0;
            for (Row row : wb.getSheetAt(0)) {
                String key = "";
                try {
                    totalNumRows++;
                    if(totalNumRows==1) {
                        continue;
                    }
                    row.getCell(PAISAPAYID_INDEX).setCellType(Cell.CELL_TYPE_STRING);
                String paisaPayId = row.getCell(PAISAPAYID_INDEX).getStringCellValue();
                Long itemId = new Double(row.getCell(NEW_ITEM_ID_INDEX).getNumericCellValue()).longValue();
                Long salesRecordNumber = new Double(row.getCell(SALES_REC_NUM_INDEX).getNumericCellValue()).longValue();
                TransactionService.Client transactionClient = new TransactionClient().getClient();
                EbayOrder ebayOrder = transactionClient.getEbayOrderBySalesRecNumber(salesRecordNumber);
                if(ebayOrder.getPaisaPayId().equals(paisaPayId)) {
                        Order order = transactionClient.getOrder(ebayOrder.getOrderId());
                        transactionClient.changeItem(order.getId(), itemId);
                } else {
                        logger.error("Mismatch for paisaPayId : " + paisaPayId + " and salesRecordNumber : " + salesRecordNumber);
                        setErrorMsg(getErrorMsg() + "<br/>Mismatch for paisaPayId : " + paisaPayId + " and salesRecordNumber : " + salesRecordNumber);
                        addActionError("Mismatch for paisaPayId : " + paisaPayId + " and salesRecordNumber : " + salesRecordNumber);
                }

                successfullyProcessedNumRows++;
                 } 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 listings");
            }
            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 getListingFile() {
                return listingFile;
        }

        public void setListingFile(File listingFile) {
                this.listingFile = listingFile;
        }
        
}