Subversion Repositories SmartDukaan

Rev

Rev 6993 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.serving.controllers;


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

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.WritableByteChannel;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
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;

@SuppressWarnings("serial")
@InterceptorRefs({
    @InterceptorRef("myDefault"),
    @InterceptorRef("login")
})

/**
 * 
 * @author Rajveer
 * 
 */

public class InvoiceController extends BaseController implements ServletResponseAware,
                ServletRequestAware, ServletContextAware {
    
    private static Logger logger = LoggerFactory.getLogger(InvoiceController.class);
    private ServletContext context;
        private HttpServletRequest request;
        private HttpServletResponse response;
        private HttpSession session;

        private String id;
        private String orderId;
    
    private String errorMsg = "";

        public String show(){
                orderId = id;
                response.setContentType("application/pdf");
        response.setHeader("Content-disposition", "inline; filename=invoice-"+orderId+".pdf" );
        
        ByteBuffer buffer = null;
        try {
            if (orderId == null || orderId.isEmpty()) {
                logger.error("Order Id is null or empty");
                return "show";
            }
            TransactionClient tc = new TransactionClient("support_transaction_service_server_host", "transaction_service_server_port");
            TransactionService.Client orderClient = tc.getClient();
            buffer = orderClient.retrieveInvoice(Long.parseLong(orderId), userinfo.getUserId());
            if(!buffer.hasArray()) {
                logger.error("The invoice does not found");
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

        ServletOutputStream sos;
        try {
            sos = response.getOutputStream();
            sos.write(buffer.array());
            sos.flush();
        } catch (Exception e) {
            System.out.println("Unable to stream the invoice file");
        }
        return "show";
    }
                        
        @Override
        public void setServletContext(ServletContext context) {
                this.context = context;
        }
        
        @Override
        public void setServletResponse(HttpServletResponse response) {
                this.response  = response;
        }

        @Override
        public void setServletRequest(HttpServletRequest request) {
                this.request = request;
                this.session = request.getSession();
        }

        public String getId(){
                return id;
        }
        
        public void setId(String id){
                this.id = id;
        }
        
        public String getServletContextPath(){
                return context.getContextPath();
        }


    public String getErrorMsg() {
        return errorMsg;
    }

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