Subversion Repositories SmartDukaan

Rev

Rev 5153 | Details | Compare with Previous | 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"));
5153 amar.kumar 35
cal.add(Calendar.DAY_OF_MONTH, -1);
5072 amar.kumar 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");
5154 amar.kumar 81
    	if(!pincode.equals("110001")){
82
			if(deliveryEstimateStat.containsKey(pincode)){
83
				DeliveryEstimate delvEst = deliveryEstimateStat.get(pincode);
84
				delvEst.setNumOfRequests(delvEst.getNumOfRequests()+1);
85
				delvEst.setNumDays(delvEst.getNumDays()+(Long)result.getProperty("deliveryDays"));
86
				if(result.getProperty("requestOrigin").equals("Cart")){
87
					delvEst.setCartPageReqCount(delvEst.getCartPageReqCount()+1);
88
				}else {
89
					delvEst.setProductPageReqCount(delvEst.getProductPageReqCount()+1);
90
				}
91
				if(!delvEst.getSessionIds().contains(result.getProperty("sessionId"))){
92
					delvEst.getSessionIds().add((String)result.getProperty("sessionId"));
93
				}
94
				deliveryEstimateStat.put(pincode, delvEst);
95
			} else {
96
				DeliveryEstimate delvEst = new DeliveryEstimate();
97
				delvEst.setPincode(pincode);
98
				delvEst.setNumDays((Long)result.getProperty("deliveryDays"));
99
				if(result.getProperty("requestOrigin").equals("Cart")){
100
					delvEst.setCartPageReqCount(new Long(1));
101
				}else {
102
					delvEst.setProductPageReqCount(new Long(1));
103
				}
5072 amar.kumar 104
				delvEst.getSessionIds().add((String)result.getProperty("sessionId"));
5154 amar.kumar 105
				deliveryEstimateStat.put(pincode,delvEst);
5072 amar.kumar 106
			}
5154 amar.kumar 107
	    }
5072 amar.kumar 108
    }
109
%>
110
<table cellpadding="0" cellspacing="0" border="0" class="display" id="deliveryEstStat">
111
	<thead>
112
		<tr>
113
			<th>Pincode</th>
114
			<th>Number of Requests</th>
115
			<th>Cart Page Requests</th>
116
			<th>Product Page Requests</th>
117
			<th>Session Count for Requests</th>	
118
			<th>Avg number of Days</th>
119
 
120
		</tr>
121
	</thead>
122
	<tbody>
123
	<%
124
	Set<String> pincodeSet = deliveryEstimateStat.keySet();
125
	for(String pincode:pincodeSet){
126
		double deliveryDays = ((double)(deliveryEstimateStat.get(pincode).getNumDays()*100/deliveryEstimateStat.get(pincode).getNumOfRequests()))/100.0;
127
	%>
128
			<tr>
129
                <td><%=pincode%></td>
130
				<td><%=deliveryEstimateStat.get(pincode).getNumOfRequests()%></td>
131
				<td><%=deliveryEstimateStat.get(pincode).getCartPageReqCount()%></td>
132
				<td><%=deliveryEstimateStat.get(pincode).getProductPageReqCount()%></td>
133
				<td><%=deliveryEstimateStat.get(pincode).getSessionIds().size() %></td>
134
				<td><%=(deliveryDays!=-1.0)?deliveryDays:"Non Deliverable Location"%></td>	
135
            </tr>    
136
	<%}%>		
137
	</tbody>
138
</table>
139
<br/>
140
 
141
    <script type="text/javascript" charset="utf-8">
142
 
143
        $(document).ready(function() {
144
            $('#deliveryEstStat').dataTable({
145
            	"sPaginationType": "full_numbers",
146
            	"aaSorting" : [ [ 2, 'desc' ] ],
147
            	"bProcessing": true,
148
                "bStateSave": true,
149
            	"sDom": 'T<"clear">lfrtip',
150
                "oTableTools": {
151
                    "sSwfPath": "/DataTables/extras/TableTools/media/swf/copy_cvs_xls_pdf.swf"
152
                },
153
                "aoColumns": [ 
154
					{ "bSearchable": true },
155
					{ "sSortDataType": "dom-text", "sType": "numeric" },
156
					{ "sSortDataType": "dom-text", "sType": "numeric" },
157
					{ "sSortDataType": "dom-text", "sType": "numeric" },
158
					{ "sSortDataType": "dom-text", "sType": "numeric" },
159
					{ "sSortDataType": "dom-text", "sType": "numeric" }
160
                ] 
161
            });
162
        } );
163
    </script>
164
</body>
165
</html>