Subversion Repositories SmartDukaan

Rev

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


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

public class PaymentDetailsController extends ReportsController {

    private String errorMsg = "";
    private final String authsuccess = "authsuccess";
    private final String authfail = "authfail";
    public PaymentDetailsController() {

    }

    public String index() {
        if(!canAccessReport()) {
            return "exception";
        }
        return authsuccess;
    }

    // Handles the POST request (Form Submission)
    public String create() {
        // Formatting Form input parameters
        String startDateStr = getServletRequest().getParameter("startDate");
        String endDateStr = getServletRequest().getParameter("endDate");
        String statusStr = getServletRequest().getParameter("status");
        String filenameStr = "";
        int status = 1;
        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());
            status = Integer.parseInt(statusStr);
            filenameStr = (status == 0 ? "success" : "failed-pending");
        } catch (ParseException pe) {
            errorMsg = "Please enter start and end dates in format MM/dd/yyyy";
            return authsuccess;
        } catch (NumberFormatException nfe) {
            errorMsg = "Please select payment status";
            return authsuccess;
        }

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

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

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

    public String getErrorMsg() {
        return errorMsg;
    }
}