· 11 years ago · Jun 07, 2015, 01:02 PM
1//Includes
2var cps = require('cps-api');
3
4//Creating a CPS connection
5
6var cpsConn = new cps.Connection( 'tcp://cloud-us-0.clusterpoint.com:9007', 'scope_data', 'nislam17@gmail.com', 'NazifaM3', 'document', 'document/id', {account: 100338});
7
8
9
10// Debug
11cpsConn.debug = true;
12
13//Helper functions
14
15//randomly generated global unique id
16var c = 1;
17function cuniq() {
18 var d = new Date(),
19 m = d.getMilliseconds() + "",
20 u = ++d + m + (++c === 10000 ? (c = 1) : c);
21
22 return u;
23};
24
25
26// Insert
27
28function insertUser(_name, _email, _lat, _long, _password) {
29 var id = cuniq();
30 var insert_request = new cps.InsertRequest('<document><id>'
31 + id +'</id>'+'<user><name>'
32 + _name + '</name><email>'
33 + _email + '</email><location><latitude>'
34 + _lat + '</latitude><longitude>'
35 + _long + '</longitude></location><userID>'
36 + id + '</userID><password>'
37 + _password + '</password></user></document>');
38 cpsConn.sendRequest(insert_request, function(err, insert_response) {
39 if (err) return console.error(err);
40 console.log('New user registered: ' + insert_response.document.id);
41 });
42};
43
44
45function insertHave(_userID, _product, _desc, _img, _date, _price){
46 var id = cuniq();
47 var insert_request = new cps.InsertRequest('<document><id>'
48 +id+'</id>'+'<have><product>'
49 + _product + '</product><description>'
50 + _desc + '</description><image>'
51 + _img + '</image><userID>'
52 + _userID + '</userID><date>'
53 + _date + '</date><price>'
54 + _price + '</price><matched>false</matched></have></document>');
55 cpsConn.sendRequest(insert_request, function(err, insert_response) {
56 if (err) return console.error(err);
57 console.log('New need added: ' + insert_response.document.id);
58 });
59};
60
61function insertNeed(_userID, _product, _desc, _date){
62 var id = cuniq();
63 var insert_request = new cps.InsertRequest('<document><id>'
64 +id+'</id>'+'<need><product>'
65 + _product + '</product><description>'
66 + _desc + '</description><userID>'
67 + _userID + '</userID><date>'
68 + _date + '</date><matched>false</matched></need></document>');
69 cpsConn.sendRequest(insert_request, function(err, insert_response) {
70 if (err) return console.error(err);
71 console.log('New need added: ' + insert_response.document.id);
72 });
73};
74function deletePost(_id) {
75 var id = { id: _id};
76 cpsConn.sendRequest(new cps.DeleteRequest(id), function (err, delete_resp) {
77 if (err) return console.log(err);
78 });
79
80};
81
82function searchEmail(email) {
83 var search_req = new cps.SearchRequest('<user><email>' + email + '</email></user>');
84 cpsConn.sendRequest(search_req, function (err, search_resp) {
85 if (err) return console.log(err); //return false;
86 //console.log('User found: ' + insert_response.document.user);
87 console.log(search_resp.results.document);
88 return true;
89 });
90};
91
92function searchUser(email, password) {
93 var search_req = new cps.SearchRequest('<user><email>' + email + '</email><password>' + password + '</password></user>');
94 cpsConn.sendRequest(search_req, function (err, search_resp) {
95 if (err) return console.log(err);
96 console.log(search_resp.results.document);
97 });
98};
99
100//Algo to calculate the shortest straight line distance, betwween two users using the Havershine's formula.
101function distance(lat, longi, lat2, lon2) {
102 var radlat1 = Math.PI * lat/180
103 var radlat2 = Math.PI * lat2/180
104 var radlon1 = Math.PI * longi/180
105 var radlon2 = Math.PI * lon2/180
106 var theta = longi-lon2
107 var radtheta = Math.PI * theta/180
108 var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
109 dist = Math.acos(dist)
110 dist = dist * 180/Math.PI
111 dist = dist * 60 * 1.1515
112 return dist;
113}
114
115function listRect(_lat, _long) {
116 var search_req = new cps.SearchRequest('<user><location><latitude><=' + (_lat + 0.0144927536) + ' >=' + (_lat - 0.0144927536) +
117 '</latitude><longitude><=' + (_long + 0.0144927536) + ' >=' + (_long - 0.0144927536) +
118 '</longitude></location></user>');
119 cpsConn.sendRequest(search_req, function (err, search_resp) {
120 if (err) return console.log(err);
121 console.log(search_resp.results.document);
122 });
123};
124
125function listHaves(userID) {
126 var search_req = new cps.SearchRequest('<have><userID>' + userID + '</userID></have>');
127 cpsConn.sendRequest(search_req, function (err, search_resp) {
128 if (err) return console.log(err);
129 console.log(search_resp.results.document);
130 });
131}
132
133function listNeeds(userID) {
134 var search_req = new cps.SearchRequest('<need><userID>' + userID + '</userID></need>');
135 cpsConn.sendRequest(search_req, function (err, search_resp) {
136 if (err) return console.log(err);
137 console.log(search_resp.results.document);
138 });
139}
140
141function findMatches(product) {
142 var search_req = new cps.SearchRequest('<have><product>' + product + '</product></have>');
143 cpsConn.sendRequest(search_req, function (err, search_resp) {
144 if (err) return console.log(err);
145 console.log(search_resp.results.document);
146 });
147}
148
149function listFeed(_lat, _long) {
150 var counter = 0;
151 var search_req = new cps.SearchRequest('*');
152 //console.log(search_req);
153 cpsConn.sendRequest(search_req, function (err, search_resp) {
154 if(err) return console.log(err);
155 //console.log(search_resp.results.document[0].name);
156 var resp = search_resp.results.document;
157 //console.log(resp);
158 for (var i = 0; i < resp.length; i++) {
159 //console.log(resp[i].user.location.latitude);
160 var result = distance(_lat, _long, resp[i].user.location.latitude, resp[i].user.location.longitude )/69;
161 // console.log("Lat 1 " + _lat);
162 // console.log("Long 1 " + _long);
163 // console.log("Lat 2 " + resp[i].user.location.latitude);
164 // console.log("Long 2 " + resp[i].user.location.longitude);
165 // console.log(result);
166 //console.log(result);
167 //console.log(resp[i].user);
168 //if (Math.pow(resp[i].user.location.latitude - _lat, 2) + Math.pow(resp[i].user.location.longitude - _long, 2) <= Math.pow((1/69), 2)){
169 if(result <= 1){
170
171 console.log(resp[i].user);
172 counter++;
173 }
174 } s // console.log("BITCHHHHITCHHHHITCHHHHITCHHHHITCHHHHITCHHHHITCHHHHITCHHHHITCHHHHITCHHHHITCHHHHHHH");
175 // console.log(counter);
176 });
177};
178
179//var id = 1433662989016152;
180//insertHave(14336752413363352, 'item9', 'item #9', '4/6/67');
181
182//findMatches('item9');
183/*for(var i = 0; i < 10; ++i)
184 insertNeed(id, 'item' + i, 'this is item #' + i, '4/5/67');
185
186for(var i = 10; i < 14; ++i)
187 insertHave(id, 'item' + i, 'this is item #' + i, 'img', '2/4/15', '$10');
188*/
189//listHaves(id);
190//listNeeds(id);
191//var temp_lat = 51.863363;
192//var temp_long = 0.232375;
193//insertUser('Matthew', 'mkl@nyu.edu', 1, 1, 'password');
194/*for (var i = 0; i < 8; ++i)
195 insertUser('Matt' + i, 'mlaikhram' + i + '@gmail.com', (temp_lat + (i*.0005)), (temp_long + (i*.0005)), 'password' + i);
196*/
197//insertUser('Matthew', 'matt@gmail.com', 1, 1, 'password');
198//searchUser('bbeebb', 'lionebbb');
199//listRect(51.863363, 0.232375);
200//searchEmail('matt@gmail.com');
201//listFeed(51.5034431,-.1279631);
202//searchUser('currystain@gail.com', 'hyperlocal');
203/*insertUser('Nazifa Islam', 'ni444@nyu.edu', 2, 3, 'IAmBeautiful');
204insertUser('Mehul Patel', 'currystain@gail.com', -1, -1, 'hyperlocal');
205insertUser('Matthew Laikhram', 'iamannoying@annoying.com', 0, 0, 'sexycani');
206insertUser('Mohan Dhar', 'iamugly@ugly.com', 1, 10, 'ihavenoimagination');
207*/