Subversion Repositories SmartDukaan

Rev

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