Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
1597 ankur.sing 1
package in.shop2020.support.controllers;
2
 
1886 ankur.sing 3
import in.shop2020.model.v1.order.LineItem;
4
import in.shop2020.model.v1.order.Order;
5
import in.shop2020.model.v1.order.OrderStatus;
6
import in.shop2020.model.v1.order.TransactionServiceException;
1597 ankur.sing 7
import in.shop2020.model.v1.user.UserType;
1941 ankur.sing 8
import in.shop2020.support.utils.ReportsUtils;
3125 rajveer 9
import in.shop2020.thrift.clients.PaymentClient;
10
import in.shop2020.thrift.clients.TransactionClient;
11
import in.shop2020.thrift.clients.UserClient;
1597 ankur.sing 12
 
1891 ankur.sing 13
import java.text.DateFormat;
14
import java.text.SimpleDateFormat;
15
import java.util.Calendar;
1731 ankur.sing 16
import java.util.List;
17
 
1941 ankur.sing 18
import javax.servlet.ServletContext;
19
import javax.servlet.http.HttpServletRequest;
20
import javax.servlet.http.HttpSession;
21
 
1891 ankur.sing 22
import org.apache.struts2.convention.annotation.InterceptorRef;
23
import org.apache.struts2.convention.annotation.InterceptorRefs;
1941 ankur.sing 24
import org.apache.struts2.interceptor.ServletRequestAware;
25
import org.apache.struts2.util.ServletContextAware;
1886 ankur.sing 26
import org.apache.thrift.TException;
3071 chandransh 27
import org.slf4j.Logger;
28
import org.slf4j.LoggerFactory;
1597 ankur.sing 29
 
30
 
1891 ankur.sing 31
@InterceptorRefs({
1941 ankur.sing 32
    @InterceptorRef("defaultStack"),
1891 ankur.sing 33
    @InterceptorRef("login")
34
})
1630 ankur.sing 35
 
1891 ankur.sing 36
//@Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"})
1941 ankur.sing 37
public class StatisticsController implements ServletRequestAware, ServletContextAware {
1891 ankur.sing 38
 
3071 chandransh 39
    private static Logger logger = LoggerFactory.getLogger(StatisticsController.class);
40
 
1941 ankur.sing 41
    private HttpServletRequest request;
42
    private HttpSession session;
43
    private ServletContext context;
44
 
1891 ankur.sing 45
	private long noOfRegisterUsers;
46
	private long noOfOrders;
47
	private long noOfCustomers;
48
	private double maxOrderAmount;
49
	private double minOrderAmount;
50
	private double maxPaymentAmount;
51
	private double minPaymentAmount;
52
	private List<Double> paymentAmountRange;
53
	private List<Double> orderAmountRange;
54
	private List<Order> validOrders;
55
 
3125 rajveer 56
    private UserClient usc;
1886 ankur.sing 57
    private in.shop2020.model.v1.user.UserContextService.Client uclient;
1891 ankur.sing 58
 
3125 rajveer 59
    private TransactionClient tsc;
1886 ankur.sing 60
    private in.shop2020.model.v1.order.TransactionService.Client tClient;
1891 ankur.sing 61
 
3125 rajveer 62
    private PaymentClient psc;
1891 ankur.sing 63
    private in.shop2020.payments.PaymentService.Client pClient;
64
 
65
    private final DateFormat formatter = new SimpleDateFormat("EEE, dd-MMM-yyyy hh:mm a");
66
 
67
	public StatisticsController(){
68
	    try {
3125 rajveer 69
            usc = new UserClient();
1886 ankur.sing 70
            uclient = usc.getClient();
1891 ankur.sing 71
 
3125 rajveer 72
            tsc = new TransactionClient();
1886 ankur.sing 73
            tClient = tsc.getClient();
1891 ankur.sing 74
 
3125 rajveer 75
            psc = new PaymentClient();
1886 ankur.sing 76
            pClient = psc.getClient();
77
        } catch (Exception e) {
3071 chandransh 78
            logger.error("Error connecting to one of the user, order or payment service", e);
1886 ankur.sing 79
        }
1891 ankur.sing 80
	}
81
 
1941 ankur.sing 82
	public String index() {
83
        if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), request.getServletPath())) {
1891 ankur.sing 84
            return "exception";
1886 ankur.sing 85
        }
1891 ankur.sing 86
        getStats();
87
        return "authsuccess";
88
 
89
		/*if(getSessionUserName()==null) {
90
			return "authfail";
91
		}
92
		else {
93
		    if(!canAccessReport()) {
94
		        return "exception";
95
		    }
96
			getStats();
97
			return "authsuccess";
98
		}*/
99
	}
100
 
101
	private void getStats() {
102
		try {
1886 ankur.sing 103
            noOfRegisterUsers = uclient.getUserCount(UserType.USER);
3071 chandransh 104
		} catch(Exception e){
105
		    logger.error("Error while getting the no. of registered users", e);
106
		}
1891 ankur.sing 107
 
3071 chandransh 108
		try {
1886 ankur.sing 109
            noOfOrders = tClient.getValidOrderCount();
110
            noOfCustomers = tClient.getNoOfCustomersWithSuccessfulTransaction();
111
            orderAmountRange = tClient.getValidOrdersAmountRange();
112
            minOrderAmount = orderAmountRange.get(0);
113
            maxOrderAmount = orderAmountRange.get(1);
1891 ankur.sing 114
 
3071 chandransh 115
            validOrders = tClient.getValidOrders(10);
116
		} catch (Exception e){
117
		    logger.error("Error while getting order statistics", e);
118
		}
119
 
120
		try {
1886 ankur.sing 121
            paymentAmountRange = pClient.getSuccessfulPaymentsAmountRange();
122
            minPaymentAmount = paymentAmountRange.get(0);
123
            maxPaymentAmount = paymentAmountRange.get(1);
3897 chandransh 124
        } catch (Exception e) {
3071 chandransh 125
            logger.error("Error while getting payment statistics", e);
1886 ankur.sing 126
        }
1891 ankur.sing 127
	}
128
 
129
	public long getNoOfRegisterUsers() {
130
		return noOfRegisterUsers;
131
	}
1886 ankur.sing 132
 
1891 ankur.sing 133
	public long getNoOfOrders() {
134
		return noOfOrders;
135
	}
136
 
137
	public long getNoOfCustomers() {
138
		return noOfCustomers;
139
	}
1886 ankur.sing 140
 
1891 ankur.sing 141
	public double getMaxOrderAmount() {
142
		return maxOrderAmount;
143
	}
1886 ankur.sing 144
 
1891 ankur.sing 145
	public double getMinOrderAmount() {
146
		return minOrderAmount;
147
	}
1886 ankur.sing 148
 
1891 ankur.sing 149
	public double getMaxPaymentAmount() {
150
		return maxPaymentAmount;
151
	}
1886 ankur.sing 152
 
1891 ankur.sing 153
	public double getMinPaymentAmount() {
154
		return minPaymentAmount;
155
	}
1886 ankur.sing 156
 
157
    public List<Order> getValidOrders() {
158
        return validOrders;
159
    }
1891 ankur.sing 160
 
161
    public LineItem getItem(Order order) throws TransactionServiceException, TException {
162
        LineItem lItem = order.getLineitems().get(0);
1886 ankur.sing 163
        return lItem;
164
    }
1891 ankur.sing 165
 
1886 ankur.sing 166
    public String getOrderStatusString(OrderStatus status) {
3078 chandransh 167
        return status.getDescription();
1886 ankur.sing 168
    }
1891 ankur.sing 169
 
170
    public String getDateTime(long milliseconds) {
171
        Calendar cal = Calendar.getInstance();
172
        cal.setTimeInMillis(milliseconds);
173
        return formatter.format(cal.getTime());
174
    }
1941 ankur.sing 175
 
176
    @Override
177
    public void setServletRequest(HttpServletRequest req) {
178
        this.request = req;
179
        this.session = req.getSession();        
180
    }
181
 
182
    @Override
183
    public void setServletContext(ServletContext context) {
184
        this.context = context;
185
    }
186
 
187
    public String getServletContextPath() {
188
        return context.getContextPath();
189
    }
1597 ankur.sing 190
}
1891 ankur.sing 191