Subversion Repositories SmartDukaan

Rev

Rev 5826 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.support.controllers;

import in.shop2020.support.utils.ReportsUtils;
import in.shop2020.thrift.clients.HelperClient;
import in.shop2020.utils.Report;
import in.shop2020.utils.ReportUser;

import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ReportsController implements ServletResponseAware, ServletRequestAware, ServletContextAware {

    private static Logger logger = LoggerFactory.getLogger(ReportsController.class);
    
    private HttpServletRequest request;
    private HttpServletResponse response;
    private HttpSession session;
    private ServletContext context;

    private String errorMsg = "";
    private final String authsuccess = "authsuccess";
    private final String authfail = "authfail";
    private List<Report> reports;

    private HelperClient hsc;
    private in.shop2020.utils.HelperService.Client client;
    
    private long role;
    //private static final String USER_NAME = "username", PASSWORD = "password", ROLE = "role";
    
    public ReportsController() {
        try {
            hsc = new HelperClient();
            client = hsc.getClient();
        } catch (Exception e) {
            logger.error("Error while initializing connection to the helper service", e);
        }
    }

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

    public HttpServletRequest getServletRequest() {
        return request;
    }

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

    public HttpServletResponse getServletResponse() {
        return response;
    }

    @Override
    public void setServletContext(ServletContext context) {
        this.context = context;
    }

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

    public String index() {
        if (getSessionUserName() == null) {
            return authfail;
        } else {
            if(reports == null) {
                reports = ReportsUtils.getReports((Long)session.getAttribute(ReportsUtils.ROLE));
            }
            //loadReports();
            return authsuccess;
        }
    }
    
    // Handles the POST request (Form Submission)
    public String create() {
        String username = request.getParameter(ReportsUtils.USER_NAME);
        String password = request.getParameter(ReportsUtils.PASSWORD);
        if (username != null && password != null) {
            try {
                ReportUser user = client.authenticateReportUser(username, password);
                role = user.getRole();
                session.setAttribute(ReportsUtils.USER_NAME, user.getUsername());
                session.setAttribute(ReportsUtils.ROLE, role);
                logger.info("email is "+user.getEmail());
                session.setAttribute(ReportsUtils.USER_EMAIL, user.getEmail());
                //loadReports();
                reports = ReportsUtils.getReports(role);
                return authsuccess;
            } catch (Exception e) {
                logger.error("Invalid user", e);
                errorMsg = "Invalid Username or Password. Please try again...";
                return authfail;
            }
        }
        if (getSessionUserName() == null) {
            return authfail;
        }
        return authsuccess;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public String getSessionUserName() {
        return (String) session.getAttribute(ReportsUtils.USER_NAME);
    }

    public List<Report> getReports() {
        return reports;
    }

    public String returnLoginFail() {
        return authfail;
    }

    public boolean isLoggedIn() {
        if (session.getAttribute(ReportsUtils.USER_NAME) != null) {
            return true;
        }
        return false;
    }

    public void setUserAsLogout() {
        session.setAttribute(ReportsUtils.USER_NAME, null);
        session.setAttribute(ReportsUtils.ROLE, null);
        session.setAttribute("STORE_ID", null);
    }
}