Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.support.controllers;

import in.shop2020.thrift.clients.WarehouseClient;
import in.shop2020.warehouse.ScanType;
import in.shop2020.warehouse.WarehouseServiceException;
import in.shop2020.warehouse.WarehouseService.Client;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
import org.apache.thrift.TException;
import org.apache.thrift.transport.TTransportException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opensymphony.xwork2.ValidationAwareSupport;

@SuppressWarnings("serial")
@Results({
    @Result(name="redirect", type="redirectAction", params = {"actionName" , "warehouse"})
})
public class PurchaseController extends ValidationAwareSupport implements  ServletRequestAware, ServletContextAware {

    private static Logger logger = LoggerFactory.getLogger(PurchaseController.class);
    
    protected HttpServletRequest request;
    private ServletContext context;
    private String id;
    private String errorMsg="";
    
    private String purchaseOrderId;
    
    public String editNew(){
        purchaseOrderId = request.getParameter("poId");
        return "new";
    }
    
    public String create(){
        this.purchaseOrderId = request.getParameter("poId");
        long poId = Long.parseLong(purchaseOrderId);
        String invoiceNumber = request.getParameter("invoiceNo");
        String fc = request.getParameter("freightCharges").trim();
        double freightCharges = 0;
        if(fc != null && !fc.isEmpty())
            freightCharges = Double.parseDouble(fc);
        try {
            WarehouseClient warehouseClient = new WarehouseClient();
            Client client = warehouseClient.getClient();
            id = "" + client.startPurchase(poId, invoiceNumber, freightCharges);
        } catch (TTransportException e) {
            errorMsg = "Error while establishing connection to the warehouse server";
            logger.error(errorMsg, e);
        } catch (WarehouseServiceException e) {
            errorMsg = e.getMessage();
            logger.error(errorMsg, e);
        } catch (TException e) {
            errorMsg = "Error while scanning in the item";
            logger.error(errorMsg, e);
        }
        
        if(errorMsg.isEmpty())
            return "create";
        else{
            addActionError(errorMsg);
            return "new";
        }
            
    }
    
    public String show(){
        return "show";
    }
    
    public String update(){
        long id = Long.parseLong(this.id);
        String itemNumber = request.getParameter("itemNo");
        String imeiNumber = request.getParameter("imeiNo");
        
        try {
            WarehouseClient warehouseClient = new WarehouseClient();
            Client client = warehouseClient.getClient();
            client.scanIn(id, itemNumber, imeiNumber, ScanType.PURCHASE);
        } catch (TTransportException e) {
            errorMsg = "Error while establishing connection to the warehouse server";
            logger.error(errorMsg, e);
        } catch (WarehouseServiceException e) {
            errorMsg = e.getMessage();
            logger.error(errorMsg, e);
        } catch (TException e) {
            errorMsg = "Error while scanning in the item";
            logger.error(errorMsg, e);
        }
        if(!errorMsg.isEmpty()){
            addActionError(errorMsg);
        }
        return "show";
    }
    
    public String destroy(){
        long id = Long.parseLong(this.id);
        
        try {
            WarehouseClient warehouseClient = new WarehouseClient();
            Client client = warehouseClient.getClient();
            client.closePurchase(id);
        }catch (TTransportException e) {
            errorMsg = "Error while establishing connection to the warehouse server";
            logger.error(errorMsg, e);
        } catch (WarehouseServiceException e) {
            errorMsg = e.getMessage();
            logger.error(errorMsg, e);
        } catch (TException e) {
            errorMsg = "Error while scanning in the item";
            logger.error(errorMsg, e);
        }
        return "redirect";
    }
    
    public void setId(String id){
        this.id = id;
    }
    
    public String getId(){
        return id;
    }
    
    public String getErrorMessage(){
        return errorMsg;
    }
    
    public String getPurchaseOrderId() {
        return purchaseOrderId;
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
    
    @Override
    public void setServletContext(ServletContext context) {
        this.context = context;
    }

    public String getServletContextPath() {
        return context.getContextPath();
    }

}