Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.support.controllers;



import in.shop2020.model.v1.order.Attribute;
import in.shop2020.model.v1.order.Order;
import in.shop2020.model.v1.order.TransactionService.Client;
import in.shop2020.model.v1.order.TransactionServiceException;
import in.shop2020.thrift.clients.TransactionClient;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

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

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
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;

public class PickupStoreController implements ServletResponseAware, ServletRequestAware, ServletContextAware {

    private static Logger logger = LoggerFactory.getLogger(PickupStoreController.class);
    
    private HttpServletRequest request;
    private HttpServletResponse response;
    private ServletContext context;
    private String storeIdString;
    private long storeId;
    private String id;
    private String error = "";
    
    @Override
    public void setServletRequest(HttpServletRequest req) {
        this.request = req;
    }

    public HttpServletRequest getServletRequest() {
        return request;
    }

    @Override
    public void setServletResponse(HttpServletResponse res) {
        this.response = res;
    }

    public HttpServletResponse getServletResponse() {
        return response;
    }

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

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

    public String index(){
        storeIdString = (String) request.getSession().getAttribute("STORE_ID");
        if(storeIdString == null){
                storeIdString = request.getParameter("storeid");
                if(storeIdString == null){
                        return "authfail";
                }else{
                        request.getSession().setAttribute("STORE_ID", storeIdString);
                }
        }
        storeId = Long.parseLong(storeIdString);
        return "index";
    }

    public String show(){
        storeIdString = (String) request.getSession().getAttribute("STORE_ID");
        if(storeIdString == null){
                storeIdString = request.getParameter("storeid");
                if(storeIdString == null){
                        return "authfail";
                }else{
                        request.getSession().setAttribute("STORE_ID", storeIdString);
                }
        }
        storeId = Long.parseLong(storeIdString);
        return "show";
    }
    
    // Handles the POST request (Form Submission)
    public String create() {
        storeIdString = (String) request.getSession().getAttribute("STORE_ID");
        if(storeIdString == null){
                return "authfail";
        }
        storeId = Long.parseLong(storeIdString);
        String orderIdString = request.getParameter("orderid");
        String action = request.getParameter("action");
        long orderId = Long.parseLong(orderIdString);
        logger.info("orderIdString" + orderIdString);
        if(orderIdString != null){
                try {
                                Client client = (new TransactionClient()).getClient();
                                if(action.equals("markreceived")){
                                        client.markOrderAsReceivedAtStore(Long.parseLong(orderIdString), Calendar.getInstance().getTimeInMillis());     
                                }else if(action.equals("markdelivered")){
                                        String receiver = request.getParameter("receiver");
                                        String secretCode = request.getParameter("secretcode");
                                        Order order = client.getOrder(orderId);
                                        List<Attribute> attributes = client.getAllAttributesForOrderId(orderId);
                                        for(Attribute attribute: attributes){
                                                if(attribute.getName().equals("SECRET_CODE")){
                                                        if(!attribute.getValue().equalsIgnoreCase(secretCode)){
                                                                error = "Secret code does not match";
                                                        }
                                                }
                                        }
                                        List<Attribute> newAttributes = new ArrayList<Attribute>();
                                        if(order.isCod()){
                                                double amount = Double.parseDouble(request.getParameter("amount"));
                                                if(order.getTotal_amount() != amount){
                                                        error = "<br>Amount does not match";
                                                }
                                        }
                                        if(!error.equalsIgnoreCase("")){
                                                setId("deliver");
                                                return show();
                                        }else{
                                                if(order.isCod()){
                                                        String paymentType =  request.getParameter("paymenttype");
                                                        newAttributes.add(new Attribute("PAYMENT_MODE", paymentType));
                                                        client.setOrderAttributes(orderId, newAttributes);
                                                }
                                        }
                                        client.markOrderAsDelivered(Long.parseLong(orderIdString), Calendar.getInstance().getTimeInMillis(), receiver);
                                }else if(action.equals("markreturned")){
                                        String orderIdsString = request.getParameter("orderIds");
                                        long providerId = Long.parseLong(request.getParameter("providerID"));
                                        List<Long> orderIds = new ArrayList<Long>();
                                        for(String orderIdString1: orderIdsString.split(":")){
                                                orderIds.add(Long.parseLong(orderIdString1));
                                        }
                                        client.markOrdersAsReturnedFromStore(providerId, orderIds);
                                }
                                
                                return "index";
                        } catch (TTransportException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (NumberFormatException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (TransactionServiceException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (TException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
        }
        return "index";
    }
    

    public List<Order> getReceivePendingOrders() throws TException{
        Client client = (new TransactionClient()).getClient();
        return client.getReceivePendingOrders(storeId);
    }
    
    public List<Order> getReceivedAtStoreOrders() throws TException{
        Client client = (new TransactionClient()).getClient();
        return client.getReceivedAtStoreOrders(storeId);
    }

        public void setId(String id) {
                this.id = id;
        }

        public String getId() {
                return id;
        }

        public void setError(String error) {
                this.error = error;
        }

        public String getError() {
                return error;
        }
        
        public long getStoreId(){
                return storeId;
        }
        
}