Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
4687 mandeep.dh 1
package in.shop2020.inventory.controllers;
2
 
7410 amar.kumar 3
import in.shop2020.thrift.clients.HelperClient;
4
import in.shop2020.thrift.clients.WarehouseClient;
5
import in.shop2020.utils.HelperService;
6
import in.shop2020.warehouse.WarehouseService;
7
 
4687 mandeep.dh 8
import java.text.SimpleDateFormat;
7410 amar.kumar 9
import java.util.ArrayList;
10
import java.util.Arrays;
4687 mandeep.dh 11
import java.util.Date;
7410 amar.kumar 12
import java.util.List;
4687 mandeep.dh 13
import java.util.Map;
14
 
15
import javax.servlet.http.HttpServletRequest;
16
import javax.servlet.http.HttpServletResponse;
17
import javax.servlet.http.HttpSession;
18
 
19
import org.apache.log4j.Logger;
4754 mandeep.dh 20
import org.apache.shiro.SecurityUtils;
4687 mandeep.dh 21
import org.apache.struts2.interceptor.ServletRequestAware;
22
import org.apache.struts2.interceptor.ServletResponseAware;
23
import org.apache.struts2.interceptor.SessionAware;
24
 
25
import com.opensymphony.xwork2.ValidationAwareSupport;
26
 
27
/**
28
 * Base class for all user action handlers i.e. controllers
29
 * 
30
 * @author Vikas
31
 */
32
public abstract class BaseController extends ValidationAwareSupport implements
33
        ServletResponseAware, ServletRequestAware, SessionAware
34
{
35
    private static final long serialVersionUID = 3339523094497219816L;
36
    protected static Logger log = Logger.getLogger(BaseController.class);
7410 amar.kumar 37
 
38
    //TODO get it from db
24991 amit.gupta 39
    public static final List<Long>PHYSICAL_WAREHOUSES = new ArrayList<Long>(Arrays.asList(7573L,7678L, 7681L, 8468L));
7410 amar.kumar 40
 
4687 mandeep.dh 41
    protected static final String INPUT = "input";
42
    protected static final String INDEX = "index";
43
    protected static final String EDIT_NEW = "editNew";
44
    protected static final String EDIT = "edit";
45
    protected static final String SHOW = "show";
46
    protected static final String EXCEPTION = "exception";
7410 amar.kumar 47
    protected static final String OUTPUT = "output";
48
    public static final String SESSION_WAREHOUSE_IDS = "allowedWarehouseIds";
49
    public static final String UNAUTHORIZED_ACCESS_ERROR = "Unauthorized Access ";
4687 mandeep.dh 50
    protected final SimpleDateFormat SDF = new SimpleDateFormat("dd MMM, yyyy hh:mm a");
51
 
52
    protected HttpServletResponse response;
53
    protected HttpServletRequest request;
54
    protected HttpSession session;
55
    protected Map<String, Object> sessionMap;
56
 
57
    public void setServletResponse(HttpServletResponse response) {
58
        this.response = response;
59
    }
60
 
61
    public void setServletRequest(HttpServletRequest request) {
62
        this.request = request;
63
    }
64
 
7410 amar.kumar 65
    @SuppressWarnings("unchecked")
66
	public void setSession(Map<String, Object> sessionMap) {
22864 amit.gupta 67
    	this.session = request.getSession();
7410 amar.kumar 68
    	List<Long> allowedWarehouseIds = null;
7820 amar.kumar 69
    	if(this.session==null || this.session.getAttribute(SESSION_WAREHOUSE_IDS)==null) {
7410 amar.kumar 70
        	try {
71
    	    	HelperService.Client helperClient = new HelperClient().getClient();
72
    	    	allowedWarehouseIds = helperClient.getWarehouseIdsForAgent(SecurityUtils.getSubject().getPrincipal().toString());
73
    	    	if(allowedWarehouseIds.contains(0L)) {
74
    	    		allowedWarehouseIds = PHYSICAL_WAREHOUSES;
75
    	    	}
22864 amit.gupta 76
    	    	this.session.setAttribute(SESSION_WAREHOUSE_IDS, allowedWarehouseIds);
7410 amar.kumar 77
        	} catch (Exception e) {
78
        		e.printStackTrace();
79
        	}
7820 amar.kumar 80
    	} else {
7410 amar.kumar 81
    		allowedWarehouseIds = (List<Long>) this.session.getAttribute(SESSION_WAREHOUSE_IDS);
7820 amar.kumar 82
    	}
7410 amar.kumar 83
    	this.sessionMap = sessionMap;
4687 mandeep.dh 84
    }
85
 
86
    /**
87
     * Utility method to convert a date to a readable format 
88
     */
89
    public String convertDate(Long date) {
90
        if (date == null || date == 0) {
91
            return "N/A";
92
        }
93
 
94
        return SDF.format(new Date(date));
95
    }
96
 
5368 mandeep.dh 97
    public String index() {
98
        return INDEX;
99
    }
100
 
4687 mandeep.dh 101
    public String editNew() {
102
        return EDIT_NEW;
103
    }
104
 
105
    public String edit() {
106
        return EDIT;
107
    }
4754 mandeep.dh 108
 
109
    public boolean isPermitted(String permission) {
110
        return SecurityUtils.getSubject().isPermitted(permission);
111
    }
7410 amar.kumar 112
 
113
    @SuppressWarnings("unchecked")
114
	public boolean isAutorizedToAccessWarehouse(Long warehouseId) {
115
    	List<Long> warehouseIds;
116
		warehouseIds = (List<Long>)this.session.getAttribute(SESSION_WAREHOUSE_IDS);
117
 
118
		if(warehouseIds == null || warehouseIds.size() == 0){
119
			return false;
120
		} else if(warehouseIds.contains(0l)){
121
			return true; 
122
		} else {
123
			if(warehouseId == null) {
124
				return false;
125
			} else {
126
				if(warehouseIds.contains(warehouseId)){
127
					return true;
128
				} else {
129
					return false;
130
				}
131
			}
132
		}
133
    }
134
 
135
    @SuppressWarnings("unchecked")
136
	public List<Long> getAuthorizedWarehousesForCurrentUser(){
137
    	return (List<Long>)this.session.getAttribute(SESSION_WAREHOUSE_IDS);
138
    }
4687 mandeep.dh 139
}