Subversion Repositories SmartDukaan

Rev

Rev 1891 | Rev 3936 | 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.RegisteredUsersGenerator;
import in.shop2020.support.utils.ReportsUtils;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

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;


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

public class RegisteredUsersController implements ServletRequestAware, ServletResponseAware, ServletContextAware {

    private HttpServletRequest request;
    private HttpSession session;
    private HttpServletResponse response;
    private ServletContext context;

    private final String authsuccess = "authsuccess";
    private String message = "";
    
    public RegisteredUsersController() {

    }

    public String index() {
        if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getServletPath())) {
            return "exception";
        }
        return authsuccess;
    }

    // Handles the POST request (Form Submission)
    public String create() {
        RegisteredUsersGenerator usersReportGenerator = new RegisteredUsersGenerator();
        ByteArrayOutputStream baos = usersReportGenerator.generateRegisteredUsersReport();

        if(baos == null) {
            message = "No registered user exists.";;
            return authsuccess;
        }
        // Preparing XLS file for output
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-disposition", "inline; filename=registered-users" + ".xls");
        ServletOutputStream sos;
        try {
            sos = response.getOutputStream();
            baos.writeTo(sos);
            sos.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return authsuccess;
    }

    public String getMessage() {
        return message;
    }

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

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

    public String getServletContextPath() {
        return context.getContextPath();
    }
}