Subversion Repositories SmartDukaan

Rev

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

package in.shop2020.support.controllers;

import in.shop2020.support.services.PaymentDetailsGenerator;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

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

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

public class PaymentDetailsController implements ServletResponseAware, ServletRequestAware{

        private HttpServletRequest request;
        private HttpServletResponse response;

        private String errorMsg = "";

        public PaymentDetailsController(){

        }

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

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

        public String index()   {
                return "report";
        }

        public String show(){
                return "report";
        }

        // Handles the POST request (Form Submission)
        public String create(){
                //Formatting Form input parameters
                String startDateStr = request.getParameter("startDate");
                String endDateStr = request.getParameter("endDate");
                DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
                Date startDate = null, endDate = null;
                try {
                        startDate = df.parse(startDateStr);
                        endDate = df.parse(endDateStr);
                        Calendar cal = Calendar.getInstance();
                        cal.setTime(endDate);
                        cal.add(Calendar.DATE, 1);
                        endDate.setTime(cal.getTimeInMillis());
                } catch(ParseException pe) {
                        errorMsg = "Please enter start and end dates in format MM/dd/yyyy";
                        return "report";
                }

                PaymentDetailsGenerator paymentDetailGenerator = new PaymentDetailsGenerator();
                ByteArrayOutputStream baos = paymentDetailGenerator.generatePaymentDetailsReport(startDate, endDate);

                if(baos == null) {
                        errorMsg = "No output for given date range";
                        return "report";
                } else {
                        errorMsg = "";
                }

                // Preparing XLS file for output
                response.setContentType("application/vnd.ms-excel");
                response.setHeader("Content-disposition", "inline; filename=payments-report" + ".xls");
                ServletOutputStream sos;
                try {
                        sos = response.getOutputStream();
                        baos.writeTo(sos);
                        sos.flush();
                } catch (IOException e) {
                        errorMsg = "Failed to write to response.";
                        e.printStackTrace();
                }
                return "report";
        }

        public String getErrorMsg() {
                return errorMsg;
        }
}