Subversion Repositories SmartDukaan

Rev

Rev 5153 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5072 amar.kumar 1
<%@ page language="java" contentType="text/html; charset=UTF-8"
2
    pageEncoding="UTF-8"%>
3
<%@ page import="in.shop2020.model.DeliveryEstimate"%>
4
<%@ page import="com.google.appengine.api.datastore.DatastoreServiceFactory" %>
5
<%@ page import="com.google.appengine.api.datastore.DatastoreService" %>
6
<%@ page import="com.google.appengine.api.datastore.Query" %>
7
<%@ page import="com.google.appengine.api.datastore.Entity" %>
8
<%@ page import="com.google.appengine.api.datastore.PreparedQuery" %>
9
<%@	page import="com.google.appengine.api.datastore.Query.SortDirection"%>
10
<%@	page import="java.util.Calendar"%>
11
<%@ page import="java.util.Map"%>
12
<%@ page import="java.util.Hashtable"%>
13
<%@	page import="java.util.Map.Entry"%>
14
<%@	page import="java.text.ParseException"%>
15
<%@	page import="java.util.TimeZone"%>
16
<%@	page import="java.util.Date"%>
17
<%@	page import="java.util.Set"%>
18
<%@	page import="java.util.Calendar"%>
19
<%@	page import="java.text.SimpleDateFormat"%>
20
 
21
<html>
22
<head>
23
<script type="text/javascript" language="javascript" src="/DataTables/media/js/jquery.js"></script>
24
<script type="text/javascript" language="javascript" src="/DataTables/media/js/jquery.dataTables.min.js"></script>
25
<script type="text/javascript" charset="utf-8" src="/DataTables/extras/TableTools/media/js/ZeroClipboard.js"></script>
26
<script type="text/javascript" charset="utf-8" src="/DataTables/extras/TableTools/media/js/TableTools.js"></script>
27
<link rel="stylesheet" href="/DataTables/media/css/demo_table.css" type="text/css" />
28
<link rel="stylesheet" href="/DataTables/extras/TableTools/media/css/TableTools.css" type="text/css" /> 
29
<title>Delivery Estimate Statistics</title>
30
</head>
31
<body>
32
<%
33
Date toDate = new Date();
34
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("IST"));
35
cal.add(Calendar.DAY_OF_MONTH, -2);
36
Date fromDate = cal.getTime();
37
SimpleDateFormat iSdf = new SimpleDateFormat("yyyyMMdd");
38
String toDateStr  = request.getParameter("toDate");
39
String fromDateStr = request.getParameter("fromDate");
40
if (fromDateStr == null || fromDateStr.isEmpty()) {
41
    fromDateStr = iSdf.format(fromDate);
42
}
43
if (toDateStr == null || toDateStr.isEmpty()) {
44
    toDateStr = iSdf.format(toDate);
45
}
46
String eventType = "DELIVERY_ESTIMATE";
47
%>
48
 
49
<form id="searchfilter" name="searchfilter" method="post" action="/jsp/delivery-estimate-stats.jsp">
50
<label>From Date(YYYYMMDD) : </label> <input type="text" name="fromDate" id="fromDate" value="<%= fromDateStr %>"/>
51
<label>To Date(YYYYMMDD) : </label> <input type="text" name="toDate" id="toDate" value="<%= toDateStr %>"/>
52
<input type="Submit" id="Submit" name="Submit" value="Submit" />
53
</form>
54
 
55
<%
56
    try {
57
        if (fromDateStr != null) {
58
            fromDate = iSdf.parse(fromDateStr);
59
        }
60
        if (toDateStr != null) {
61
            toDate = iSdf.parse(toDateStr);
62
        }
63
    }
64
    catch (ParseException pe) {
65
%>
66
        <span>Invalid Date Format</span>
67
<%
68
    }
69
    Entity test = null;
70
    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
71
    Query query = new Query("DataLog");
72
    query.addFilter("eventType", Query.FilterOperator.EQUAL, "DELIVERY_ESTIMATE");
73
    query.addFilter("date", Query.FilterOperator.GREATER_THAN_OR_EQUAL, fromDate);
74
    query.addFilter("date", Query.FilterOperator.LESS_THAN_OR_EQUAL, toDate);
75
    PreparedQuery pq = datastore.prepare(query);
76
 
77
    Map<String, DeliveryEstimate> deliveryEstimateStat = new Hashtable<String, DeliveryEstimate>();
78
 
79
    for (Entity result : pq.asIterable()) {
80
    	String pincode = (String)result.getProperty("pincode");
81
		if(deliveryEstimateStat.containsKey(pincode)){
82
			DeliveryEstimate delvEst = deliveryEstimateStat.get(pincode);
83
			delvEst.setNumOfRequests(delvEst.getNumOfRequests()+1);
84
			delvEst.setNumDays(delvEst.getNumDays()+(Long)result.getProperty("deliveryDays"));
85
			if(result.getProperty("requestOrigin").equals("Cart")){
86
				delvEst.setCartPageReqCount(delvEst.getCartPageReqCount()+1);
87
			}else {
88
				delvEst.setProductPageReqCount(delvEst.getProductPageReqCount()+1);
89
			}
90
			if(!delvEst.getSessionIds().contains(result.getProperty("sessionId"))){
91
				delvEst.getSessionIds().add((String)result.getProperty("sessionId"));
92
			}
93
			deliveryEstimateStat.put(pincode, delvEst);
94
		} else {
95
			DeliveryEstimate delvEst = new DeliveryEstimate();
96
			delvEst.setPincode(pincode);
97
			delvEst.setNumDays((Long)result.getProperty("deliveryDays"));
98
			if(result.getProperty("requestOrigin").equals("Cart")){
99
				delvEst.setCartPageReqCount(new Long(1));
100
			}else {
101
				delvEst.setProductPageReqCount(new Long(1));
102
			}
103
			delvEst.getSessionIds().add((String)result.getProperty("sessionId"));
104
			deliveryEstimateStat.put(pincode,delvEst);
105
		}
106
    }
107
%>
108
<table cellpadding="0" cellspacing="0" border="0" class="display" id="deliveryEstStat">
109
	<thead>
110
		<tr>
111
			<th>Pincode</th>
112
			<th>Number of Requests</th>
113
			<th>Cart Page Requests</th>
114
			<th>Product Page Requests</th>
115
			<th>Session Count for Requests</th>	
116
			<th>Avg number of Days</th>
117
 
118
		</tr>
119
	</thead>
120
	<tbody>
121
	<%
122
	Set<String> pincodeSet = deliveryEstimateStat.keySet();
123
	for(String pincode:pincodeSet){
124
		double deliveryDays = ((double)(deliveryEstimateStat.get(pincode).getNumDays()*100/deliveryEstimateStat.get(pincode).getNumOfRequests()))/100.0;
125
	%>
126
			<tr>
127
                <td><%=pincode%></td>
128
				<td><%=deliveryEstimateStat.get(pincode).getNumOfRequests()%></td>
129
				<td><%=deliveryEstimateStat.get(pincode).getCartPageReqCount()%></td>
130
				<td><%=deliveryEstimateStat.get(pincode).getProductPageReqCount()%></td>
131
				<td><%=deliveryEstimateStat.get(pincode).getSessionIds().size() %></td>
132
				<td><%=(deliveryDays!=-1.0)?deliveryDays:"Non Deliverable Location"%></td>	
133
            </tr>    
134
	<%}%>		
135
	</tbody>
136
</table>
137
<br/>
138
 
139
    <script type="text/javascript" charset="utf-8">
140
 
141
        $(document).ready(function() {
142
            $('#deliveryEstStat').dataTable({
143
            	"sPaginationType": "full_numbers",
144
            	"aaSorting" : [ [ 2, 'desc' ] ],
145
            	"bProcessing": true,
146
                "bStateSave": true,
147
            	"sDom": 'T<"clear">lfrtip',
148
                "oTableTools": {
149
                    "sSwfPath": "/DataTables/extras/TableTools/media/swf/copy_cvs_xls_pdf.swf"
150
                },
151
                "aoColumns": [ 
152
					{ "bSearchable": true },
153
					{ "sSortDataType": "dom-text", "sType": "numeric" },
154
					{ "sSortDataType": "dom-text", "sType": "numeric" },
155
					{ "sSortDataType": "dom-text", "sType": "numeric" },
156
					{ "sSortDataType": "dom-text", "sType": "numeric" },
157
					{ "sSortDataType": "dom-text", "sType": "numeric" }
158
                ] 
159
            });
160
        } );
161
    </script>
162
</body>
163
</html>