Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var forbiddenCategories = require('cloud/forbiddenCategories.js');
- var commonFunctions = require('cloud/commonFunctions');
- exports.getDataForList = function(request, response){
- var query = "https://maps.googleapis.com/maps/api/place/search/json?location=" +
- request.params.latitude + "," + request.params.longitude + "&radius=" + request.params.radius +
- "&language=pl&sensor=true&key=AIzaSyBzidCFRoEKWyZ8GU86UVs1UQQnqiZJKOI";
- Parse.Cloud.httpRequest({
- url: query,
- success: function(httpResponse) {
- var arr = JSON.parse(httpResponse.text);
- var results = arr.results;
- var finalResults = [];
- var forbiddenCategories = require('cloud/forbiddenCategories.js');
- var place = {evaluated: 0, name:'', id:'', latitude:'', longitude:'', categories:[], numberOfLikes: 0, numberOfDislikes: 0, imageURL:'', address:''};
- for (var i = 0; i<results.length; i++){
- place = {evaluated: 0, name:'', id:'', latitude:'', longitude:'', categories:[], numberOfLikes: 0, numberOfDislikes: 0, imageURL:'', address:''};
- if (results[i].place_id != null){
- place.id = results[i].place_id;
- }
- if (results[i].geometry != null){
- place.latitude = results[i].geometry.location.lat;
- place.longitude = results[i].geometry.location.lng;
- }
- if (results[i].name != null){
- place.name = results[i].name;
- }
- if (results[i].vicinity != null){
- place.address = results[i].vicinity;
- }
- if (results[i].photos != null){
- place.imageURL = 'https://maps.googleapis.com/maps/api/place/photo?maxwidth=1080&maxheight=408&photoreference=' + results[i].photos[0].photo_reference + '&key=AIzaSyBzidCFRoEKWyZ8GU86UVs1UQQnqiZJKOI';
- }
- if (results[i].types != null){
- //take only allowed categories
- for (var x = 0; x<results[i].types.length; x++){
- var current = results[i].types[x];
- if (forbiddenCategories.getForbiddenCategories().indexOf(current) === -1){
- current = commonFunctions.replaceAll("_", " ", current);
- place.categories[x] = current;
- }
- }
- }
- finalResults[i] = place;
- }
- commonFunctions.getLikesAndDislikes(request, response, finalResults, true).then(function(){
- commonFunctions.evaluate(request, response, finalResults, true).then(function(){
- console.log(JSON.stringify(finalResults));
- response.success(JSON.stringify(finalResults));
- })
- });
- },
- error: function(httpResponse) {
- response.success('Error: loading json failed');
- }
- });
- }
- var getPlaceToJson = function(request, response){
- var PlaceTest = Parse.Object.extend("Place_Test");
- var obj = null;
- var query = new Parse.Query(PlaceTest);
- query.equalTo("googleId", request.params.googleId);
- return query.first({
- success: function(result) {
- },
- error: function(error) {
- alert("Error: " + error.code + " " + error.message);
- }
- }).then(function(result){
- if (result != null) obj = getObject(result);
- getLikesAndDislikesForSingle(request, response, obj, true).then(function(){
- evaluateForSingle(request, response, obj, true).then(function(){
- response.success(JSON.stringify(obj));
- })
- });
- });
- }
- var getSinglePlaceAndSaveFavourite = function(request, response, isFavourite){
- var query = "https://maps.googleapis.com/maps/api/place/details/json?placeid=" + request.params.googleId + "&key=AIzaSyBzidCFRoEKWyZ8GU86UVs1UQQnqiZJKOI";
- var Place_Test = Parse.Object.extend("Place_Test");
- var place = new Place_Test();
- Parse.Cloud.httpRequest({
- url: query,
- success: function(httpResponse) {
- var arr = JSON.parse(httpResponse.text);
- var result = arr.result;
- if (result.place_id != null){
- place.set("googleId", result.place_id);
- }
- if (result.geometry != null){
- place.set("coordinates", new Parse.GeoPoint({latitude: result.geometry.location.lat, longitude: result.geometry.location.lng}));
- }
- if (result.name != null){
- place.set("name", result.name);
- }
- if (result.vicinity != null){
- place.set("address" ,result.vicinity);
- }
- if (result.photos != null){
- place.set("imageURL", 'https://maps.googleapis.com/maps/api/place/photo?maxwidth=1080&maxheight=408&photoreference=' + result.photos[0].photo_reference + '&key=AIzaSyBzidCFRoEKWyZ8GU86UVs1UQQnqiZJKOI');
- }
- if (result.types != null){
- var counter = 0;
- var array = [];
- for (var x = 0; x<result.types.length; x++){
- var current = result.types[x];
- if (forbiddenCategories.getForbiddenCategories().indexOf(current) === -1)
- array[x] = current;
- place.set("categories", array);
- }
- }
- place.save().then(function(){
- update(request, response, isFavourite);
- });
- },
- error: function(httpResponse) {
- response.success('Error: loading json failed');
- }
- });
- }
- var update = function(request, response, isFavourite){
- var evaluationFavourite = isFavourite?true:false;
- var Evaluations = Parse.Object.extend("Evaluation");
- var query = new Parse.Query(Evaluations);
- query.equalTo("googleId", request.params.googleId);
- query.equalTo("userId", request.params.user);
- query.first({
- success: function(result) {
- if (result != null){
- if (result.get("isFavourite") == evaluationFavourite){
- response.error("This place has already been evaluated");
- }
- else {
- result.set("isFavourite", evaluationFavourite);
- result.save().then(function(){
- getPlaceToJson(request, response);
- })
- }
- }
- else {
- var Evaluation = Parse.Object.extend("Evaluation");
- var evaluation = new Evaluation();
- evaluation.set("googleId", request.params.googleId);
- evaluation.set("userId", request.params.user);
- evaluation.set("isFavourite", evaluationFavourite);
- evaluation.save().then(function(){
- getPlaceToJson(request, response);
- })
- }
- },
- error: function(error) {
- alert("Error: " + error.code + " " + error.message);
- }
- });
- }
- exports.addFavourite = function(request, response){
- var PlaceTest = Parse.Object.extend("Place_Test");
- var query = new Parse.Query(PlaceTest);
- query.equalTo("googleId", request.params.googleId);
- query.first().then(function(result){
- if (result == null) getSinglePlaceAndSaveFavourite(request, response, true);
- else update(request, response, true);
- })
- };
- exports.disFavourite = function(request, response){
- var PlaceTest = Parse.Object.extend("Place_Test");
- var query = new Parse.Query(PlaceTest);
- query.equalTo("googleId", request.params.googleId);
- query.first().then(function(result){
- if (result == null) getSinglePlaceAndSaveFavourite(request, response, false);
- else update(request, response, false);
- })
- }
- var getObject = function(obj){
- var savedObject = {
- name:obj.get("name"),
- id:obj.get("googleId"),
- latitude:obj.get("coordinates").latitude,
- longitude:obj.get("coordinates").longitude,
- numberOfLikes:0,
- numberOfDislikes:0,
- evaluated:0,
- categories:obj.get("categories"),
- imageURL:obj.get("imageURL"),
- address:obj.get("address")};
- return savedObject;
- }
- var evaluateForSingle = function(request, response, object, isFavourite){
- var Evaluation = Parse.Object.extend("Evaluation");
- var query = new Parse.Query(Evaluation);
- query.equalTo("googleId", object.id);
- query.equalTo("userId", request.params.user);
- return query.first({
- success: function(result) {
- if (result!= null) {
- object.evaluated = result.get("isFavourite");
- }
- },
- error: function(error) {
- alert("Error: " + error.code + " " + error.message);
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement