Advertisement
Guest User

Untitled

a guest
May 25th, 2015
564
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.48 KB | None | 0 0
  1. var forbiddenCategories = require('cloud/forbiddenCategories.js');
  2. var commonFunctions = require('cloud/commonFunctions');
  3. exports.getDataForList = function(request, response){
  4. var query = "https://maps.googleapis.com/maps/api/place/search/json?location=" +
  5. request.params.latitude + "," + request.params.longitude + "&radius=" + request.params.radius +
  6. "&language=pl&sensor=true&key=AIzaSyBzidCFRoEKWyZ8GU86UVs1UQQnqiZJKOI";
  7. Parse.Cloud.httpRequest({
  8. url: query,
  9. success: function(httpResponse) {
  10. var arr = JSON.parse(httpResponse.text);
  11. var results = arr.results;
  12. var finalResults = [];
  13. var forbiddenCategories = require('cloud/forbiddenCategories.js');
  14. var place = {evaluated: 0, name:'', id:'', latitude:'', longitude:'', categories:[], numberOfLikes: 0, numberOfDislikes: 0, imageURL:'', address:''};
  15. for (var i = 0; i<results.length; i++){
  16. place = {evaluated: 0, name:'', id:'', latitude:'', longitude:'', categories:[], numberOfLikes: 0, numberOfDislikes: 0, imageURL:'', address:''};
  17. if (results[i].place_id != null){
  18. place.id = results[i].place_id;
  19. }
  20. if (results[i].geometry != null){
  21. place.latitude = results[i].geometry.location.lat;
  22. place.longitude = results[i].geometry.location.lng;
  23. }
  24. if (results[i].name != null){
  25. place.name = results[i].name;
  26. }
  27. if (results[i].vicinity != null){
  28. place.address = results[i].vicinity;
  29. }
  30. if (results[i].photos != null){
  31. place.imageURL = 'https://maps.googleapis.com/maps/api/place/photo?maxwidth=1080&maxheight=408&photoreference=' + results[i].photos[0].photo_reference + '&key=AIzaSyBzidCFRoEKWyZ8GU86UVs1UQQnqiZJKOI';
  32. }
  33. if (results[i].types != null){
  34. //take only allowed categories
  35. for (var x = 0; x<results[i].types.length; x++){
  36. var current = results[i].types[x];
  37. if (forbiddenCategories.getForbiddenCategories().indexOf(current) === -1){
  38. current = commonFunctions.replaceAll("_", " ", current);
  39. place.categories[x] = current;
  40. }
  41.  
  42. }
  43.  
  44. }
  45.  
  46. finalResults[i] = place;
  47. }
  48. commonFunctions.getLikesAndDislikes(request, response, finalResults, true).then(function(){
  49. commonFunctions.evaluate(request, response, finalResults, true).then(function(){
  50. console.log(JSON.stringify(finalResults));
  51. response.success(JSON.stringify(finalResults));
  52. })
  53.  
  54. });
  55.  
  56. },
  57.  
  58. error: function(httpResponse) {
  59. response.success('Error: loading json failed');
  60. }
  61. });
  62. }
  63.  
  64. var getPlaceToJson = function(request, response){
  65. var PlaceTest = Parse.Object.extend("Place_Test");
  66. var obj = null;
  67. var query = new Parse.Query(PlaceTest);
  68. query.equalTo("googleId", request.params.googleId);
  69. return query.first({
  70. success: function(result) {
  71. },
  72. error: function(error) {
  73. alert("Error: " + error.code + " " + error.message);
  74. }
  75. }).then(function(result){
  76. if (result != null) obj = getObject(result);
  77. getLikesAndDislikesForSingle(request, response, obj, true).then(function(){
  78. evaluateForSingle(request, response, obj, true).then(function(){
  79. response.success(JSON.stringify(obj));
  80. })
  81.  
  82. });
  83.  
  84. });
  85. }
  86.  
  87.  
  88. var getSinglePlaceAndSaveFavourite = function(request, response, isFavourite){
  89. var query = "https://maps.googleapis.com/maps/api/place/details/json?placeid=" + request.params.googleId + "&key=AIzaSyBzidCFRoEKWyZ8GU86UVs1UQQnqiZJKOI";
  90. var Place_Test = Parse.Object.extend("Place_Test");
  91. var place = new Place_Test();
  92. Parse.Cloud.httpRequest({
  93. url: query,
  94. success: function(httpResponse) {
  95. var arr = JSON.parse(httpResponse.text);
  96. var result = arr.result;
  97. if (result.place_id != null){
  98. place.set("googleId", result.place_id);
  99. }
  100. if (result.geometry != null){
  101. place.set("coordinates", new Parse.GeoPoint({latitude: result.geometry.location.lat, longitude: result.geometry.location.lng}));
  102. }
  103. if (result.name != null){
  104. place.set("name", result.name);
  105. }
  106. if (result.vicinity != null){
  107. place.set("address" ,result.vicinity);
  108. }
  109. if (result.photos != null){
  110. place.set("imageURL", 'https://maps.googleapis.com/maps/api/place/photo?maxwidth=1080&maxheight=408&photoreference=' + result.photos[0].photo_reference + '&key=AIzaSyBzidCFRoEKWyZ8GU86UVs1UQQnqiZJKOI');
  111. }
  112. if (result.types != null){
  113. var counter = 0;
  114. var array = [];
  115. for (var x = 0; x<result.types.length; x++){
  116. var current = result.types[x];
  117. if (forbiddenCategories.getForbiddenCategories().indexOf(current) === -1)
  118. array[x] = current;
  119. place.set("categories", array);
  120. }
  121. }
  122.  
  123.  
  124.  
  125. place.save().then(function(){
  126. update(request, response, isFavourite);
  127. });
  128.  
  129.  
  130. },
  131.  
  132. error: function(httpResponse) {
  133. response.success('Error: loading json failed');
  134. }
  135. });
  136. }
  137. var update = function(request, response, isFavourite){
  138. var evaluationFavourite = isFavourite?true:false;
  139. var Evaluations = Parse.Object.extend("Evaluation");
  140. var query = new Parse.Query(Evaluations);
  141. query.equalTo("googleId", request.params.googleId);
  142. query.equalTo("userId", request.params.user);
  143. query.first({
  144. success: function(result) {
  145. if (result != null){
  146. if (result.get("isFavourite") == evaluationFavourite){
  147. response.error("This place has already been evaluated");
  148. }
  149. else {
  150. result.set("isFavourite", evaluationFavourite);
  151. result.save().then(function(){
  152. getPlaceToJson(request, response);
  153. })
  154. }
  155. }
  156. else {
  157. var Evaluation = Parse.Object.extend("Evaluation");
  158. var evaluation = new Evaluation();
  159. evaluation.set("googleId", request.params.googleId);
  160. evaluation.set("userId", request.params.user);
  161. evaluation.set("isFavourite", evaluationFavourite);
  162. evaluation.save().then(function(){
  163.  
  164. getPlaceToJson(request, response);
  165. })
  166. }
  167. },
  168. error: function(error) {
  169. alert("Error: " + error.code + " " + error.message);
  170. }
  171. });
  172. }
  173. exports.addFavourite = function(request, response){
  174. var PlaceTest = Parse.Object.extend("Place_Test");
  175. var query = new Parse.Query(PlaceTest);
  176. query.equalTo("googleId", request.params.googleId);
  177. query.first().then(function(result){
  178. if (result == null) getSinglePlaceAndSaveFavourite(request, response, true);
  179. else update(request, response, true);
  180. })
  181. };
  182.  
  183. exports.disFavourite = function(request, response){
  184. var PlaceTest = Parse.Object.extend("Place_Test");
  185. var query = new Parse.Query(PlaceTest);
  186. query.equalTo("googleId", request.params.googleId);
  187. query.first().then(function(result){
  188. if (result == null) getSinglePlaceAndSaveFavourite(request, response, false);
  189. else update(request, response, false);
  190. })
  191. }
  192.  
  193.  
  194. var getObject = function(obj){
  195. var savedObject = {
  196. name:obj.get("name"),
  197. id:obj.get("googleId"),
  198. latitude:obj.get("coordinates").latitude,
  199. longitude:obj.get("coordinates").longitude,
  200. numberOfLikes:0,
  201. numberOfDislikes:0,
  202. evaluated:0,
  203. categories:obj.get("categories"),
  204. imageURL:obj.get("imageURL"),
  205. address:obj.get("address")};
  206. return savedObject;
  207. }
  208.  
  209.  
  210.  
  211.  
  212.  
  213. var evaluateForSingle = function(request, response, object, isFavourite){
  214. var Evaluation = Parse.Object.extend("Evaluation");
  215. var query = new Parse.Query(Evaluation);
  216.  
  217. query.equalTo("googleId", object.id);
  218. query.equalTo("userId", request.params.user);
  219. return query.first({
  220. success: function(result) {
  221. if (result!= null) {
  222. object.evaluated = result.get("isFavourite");
  223. }
  224. },
  225. error: function(error) {
  226. alert("Error: " + error.code + " " + error.message);
  227. }
  228. });
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement