Subversion Repositories SmartDukaan

Rev

Rev 1586 | Rev 1632 | 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
			errorMsg = "Date Range: " + startDate + " to " + endDate;
64
		} catch(ParseException pe) {
65
			errorMsg = "Please enter start and end dates in format MM/dd/yyyy";
66
			return "report";
67
		}
1586 ankur.sing 68
 
1631 ankur.sing 69
		PaymentDetailsGenerator paymentDetailGenerator = new PaymentDetailsGenerator();
70
		ByteArrayOutputStream baos = paymentDetailGenerator.generatePaymentDetailsReport(startDate, endDate);
1586 ankur.sing 71
 
1631 ankur.sing 72
		if(baos == null) {
73
			errorMsg = "No output for given date range";
74
			return "report";
1586 ankur.sing 75
		}
76
 
1631 ankur.sing 77
		// Preparing XLS file for output
78
		response.setContentType("application/vnd.ms-excel");
79
		response.setHeader("Content-disposition", "inline; filename=payments-report" + ".xls");
80
		ServletOutputStream sos;
1586 ankur.sing 81
		try {
1631 ankur.sing 82
			sos = response.getOutputStream();
83
			baos.writeTo(sos);
84
			sos.flush();
1586 ankur.sing 85
		} catch (IOException e) {
1631 ankur.sing 86
			errorMsg = "Failed to write to response.";
1586 ankur.sing 87
			e.printStackTrace();
1631 ankur.sing 88
		}
89
		return "report";
1586 ankur.sing 90
	}
1631 ankur.sing 91
 
1586 ankur.sing 92
	public String getErrorMsg() {
93
		return errorMsg;
94
	}
95
}
96