Subversion Repositories SmartDukaan

Rev

Rev 1884 | Rev 1891 | 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;
1611 ankur.sing 8
import in.shop2020.thrift.clients.HelperServiceClient;
1630 ankur.sing 9
import in.shop2020.thrift.clients.PaymentServiceClient;
1597 ankur.sing 10
import in.shop2020.thrift.clients.TransactionServiceClient;
11
import in.shop2020.thrift.clients.UserContextServiceClient;
1611 ankur.sing 12
import in.shop2020.utils.StatisticsUser;
1597 ankur.sing 13
 
1731 ankur.sing 14
import java.util.List;
15
 
1597 ankur.sing 16
import javax.servlet.http.HttpServletRequest;
1611 ankur.sing 17
import javax.servlet.http.HttpSession;
1597 ankur.sing 18
 
19
import org.apache.struts2.interceptor.ServletRequestAware;
1886 ankur.sing 20
import org.apache.thrift.TException;
1597 ankur.sing 21
 
1886 ankur.sing 22
public class StatisticsController implements ServletRequestAware {
1597 ankur.sing 23
 
1886 ankur.sing 24
    private HttpServletRequest request;
25
    private HttpSession session;
1597 ankur.sing 26
 
1886 ankur.sing 27
    private String errorMsg = "";
28
    private long noOfRegisterUsers;
29
    private long noOfOrders;
30
    private long noOfCustomers;
31
    private double maxOrderAmount;
32
    private double minOrderAmount;
33
    private double maxPaymentAmount;
34
    private double minPaymentAmount;
35
    private List<Double> paymentAmountRange;
36
    private List<Double> orderAmountRange;
37
    private List<Order> validOrders;
1630 ankur.sing 38
 
1886 ankur.sing 39
    private HelperServiceClient hsc;
40
    private in.shop2020.utils.HelperService.Client hClient;
41
 
42
    private UserContextServiceClient usc;
43
    private in.shop2020.model.v1.user.UserContextService.Client uclient;
1611 ankur.sing 44
 
1886 ankur.sing 45
    private TransactionServiceClient tsc;
46
    private in.shop2020.model.v1.order.TransactionService.Client tClient;
1597 ankur.sing 47
 
1886 ankur.sing 48
    private PaymentServiceClient psc;
49
    in.shop2020.payments.PaymentService.Client pClient;
1597 ankur.sing 50
 
1886 ankur.sing 51
    public StatisticsController() {
52
        try {
53
            hsc = new HelperServiceClient();
54
            hClient = hsc.getClient();
55
 
56
            usc = new UserContextServiceClient();
57
            uclient = usc.getClient();
1630 ankur.sing 58
 
1886 ankur.sing 59
            tsc = new TransactionServiceClient();
60
            tClient = tsc.getClient();
1630 ankur.sing 61
 
1886 ankur.sing 62
            psc = new PaymentServiceClient();
63
            pClient = psc.getClient();
64
        } catch (Exception e) {
65
            e.printStackTrace();
66
        }
67
    }
1630 ankur.sing 68
 
1886 ankur.sing 69
    @Override
70
    public void setServletRequest(HttpServletRequest req) {
71
        this.request = req;
72
        this.session = req.getSession();
73
    }
1630 ankur.sing 74
 
1886 ankur.sing 75
    public String index() {
76
        if (getSessionUserName() == null) {
77
            return "authfail";
78
        } else {
79
            getStats();
80
            return "authsuccess";
81
        }
82
    }
1630 ankur.sing 83
 
1886 ankur.sing 84
    private void getStats() {
85
        try {
86
            noOfRegisterUsers = uclient.getUserCount(UserType.USER);
87
 
88
            noOfOrders = tClient.getValidOrderCount();
89
            noOfCustomers = tClient.getNoOfCustomersWithSuccessfulTransaction();
90
            orderAmountRange = tClient.getValidOrdersAmountRange();
91
            minOrderAmount = orderAmountRange.get(0);
92
            maxOrderAmount = orderAmountRange.get(1);
93
 
94
            paymentAmountRange = pClient.getSuccessfulPaymentsAmountRange();
95
            minPaymentAmount = paymentAmountRange.get(0);
96
            maxPaymentAmount = paymentAmountRange.get(1);
97
 
98
            validOrders = tClient.getValidOrders(10);
99
        } catch (TException e) {
100
            e.printStackTrace();
101
        }
102
    }
103
 
104
    // Handler for POST /statistics
105
    public String create() {
106
        String username = request.getParameter("username");
107
        String password = request.getParameter("password");
108
        try {
109
            StatisticsUser user = hClient.authenticateStatisticsUser(username, password);
110
            session.setAttribute("username", user.getUsername());
111
        } catch (Exception e) {
112
            e.printStackTrace();
113
            return "authfail";
114
        }
115
        getStats();
116
        return "authsuccess";
117
    }
118
 
119
    public long getNoOfRegisterUsers() {
120
        return noOfRegisterUsers;
121
    }
122
 
123
    public String getErrorMsg() {
124
        return errorMsg;
125
    }
126
 
127
    public long getNoOfOrders() {
128
        return noOfOrders;
129
    }
130
 
131
    public long getNoOfCustomers() {
132
        return noOfCustomers;
133
    }
134
 
135
    public double getMaxOrderAmount() {
136
        return maxOrderAmount;
137
    }
138
 
139
    public double getMinOrderAmount() {
140
        return minOrderAmount;
141
    }
142
 
143
    public double getMaxPaymentAmount() {
144
        return maxPaymentAmount;
145
    }
146
 
147
    public double getMinPaymentAmount() {
148
        return minPaymentAmount;
149
    }
150
 
151
    public String getSessionUserName() {
152
        return (String) session.getAttribute("username");
153
    }
154
 
155
    public List<Order> getValidOrders() {
156
        return validOrders;
157
    }
158
 
159
    public LineItem getItem(long orderId) throws TransactionServiceException, TException {
160
        LineItem lItem = tClient.getLineItemsForOrder(orderId).get(0);
161
        return lItem;
162
    }
163
 
164
    public String getOrderStatusString(OrderStatus status) {
165
        return status.name();
166
    }
1597 ankur.sing 167
}