Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
1586 ankur.sing 1
package in.shop2020.support.controllers;
2
 
1631 ankur.sing 3
import in.shop2020.support.services.PaymentDetailsGenerator;
1586 ankur.sing 4
 
5
import java.io.ByteArrayOutputStream;
6
import java.io.IOException;
7
import java.text.DateFormat;
8
import java.text.ParseException;
9
import java.text.SimpleDateFormat;
10
import java.util.Calendar;
11
import java.util.Date;
12
 
13
import javax.servlet.ServletOutputStream;
14
import javax.servlet.http.HttpServletRequest;
15
import javax.servlet.http.HttpServletResponse;
16
 
17
import org.apache.struts2.interceptor.ServletRequestAware;
18
import org.apache.struts2.interceptor.ServletResponseAware;
19
 
20
public class PaymentDetailsController implements ServletResponseAware, ServletRequestAware{
21
 
22
	private HttpServletRequest request;
23
	private HttpServletResponse response;
1631 ankur.sing 24
 
1586 ankur.sing 25
	private String errorMsg = "";
1631 ankur.sing 26
 
1586 ankur.sing 27
	public PaymentDetailsController(){
1631 ankur.sing 28
 
1586 ankur.sing 29
	}
1631 ankur.sing 30
 
1586 ankur.sing 31
	@Override
32
	public void setServletRequest(HttpServletRequest req) {
33
		this.request = req;
34
	}
35
 
36
	@Override
37
	public void setServletResponse(HttpServletResponse res) {
38
		this.response = res;
39
	}
1631 ankur.sing 40
 
1586 ankur.sing 41
	public String index()	{
42
		return "report";
43
	}
1631 ankur.sing 44
 
1586 ankur.sing 45
	public String show(){
46
		return "report";
47
	}
1631 ankur.sing 48
 
1586 ankur.sing 49
	// Handles the POST request (Form Submission)
50
	public String create(){
1631 ankur.sing 51
		//Formatting Form input parameters
52
		String startDateStr = request.getParameter("startDate");
53
		String endDateStr = request.getParameter("endDate");
54
		DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
55
		Date startDate = null, endDate = null;
56
		try {
57
			startDate = df.parse(startDateStr);
58
			endDate = df.parse(endDateStr);
59
			Calendar cal = Calendar.getInstance();
60
			cal.setTime(endDate);
61
			cal.add(Calendar.DATE, 1);
62
			endDate.setTime(cal.getTimeInMillis());
63
		} catch(ParseException pe) {
64
			errorMsg = "Please enter start and end dates in format MM/dd/yyyy";
65
			return "report";
66
		}
1586 ankur.sing 67
 
1631 ankur.sing 68
		PaymentDetailsGenerator paymentDetailGenerator = new PaymentDetailsGenerator();
69
		ByteArrayOutputStream baos = paymentDetailGenerator.generatePaymentDetailsReport(startDate, endDate);
1586 ankur.sing 70
 
1631 ankur.sing 71
		if(baos == null) {
72
			errorMsg = "No output for given date range";
73
			return "report";
1632 ankur.sing 74
		} else {
75
			errorMsg = "";
1586 ankur.sing 76
		}
77
 
1631 ankur.sing 78
		// Preparing XLS file for output
79
		response.setContentType("application/vnd.ms-excel");
80
		response.setHeader("Content-disposition", "inline; filename=payments-report" + ".xls");
81
		ServletOutputStream sos;
1586 ankur.sing 82
		try {
1631 ankur.sing 83
			sos = response.getOutputStream();
84
			baos.writeTo(sos);
85
			sos.flush();
1586 ankur.sing 86
		} catch (IOException e) {
1631 ankur.sing 87
			errorMsg = "Failed to write to response.";
1586 ankur.sing 88
			e.printStackTrace();
1631 ankur.sing 89
		}
90
		return "report";
1586 ankur.sing 91
	}
1631 ankur.sing 92
 
1586 ankur.sing 93
	public String getErrorMsg() {
94
		return errorMsg;
95
	}
96
}
97