router.post('/autoComplete', function(req, res, next) {
 
   "use strict";

    var assert = require("assert");

    
    var config = require("../config.js");
    var GoogleLocations = require('google-locations');
 
    var locations = new GoogleLocations(config.apiKey);

    var parameters = {
        input: req.body.searchString
    };

    locations.autocomplete(parameters, function (error, response) {
        if (error) 
           res.send({ title: 'Autocomplete', data :{"description":'No matching results'}});    
        res.send({ title: 'Autocomplete', data :JSON.stringify(response.predictions)});

    });
   

});
Exemplo n.º 2
0
app.post('/location', function(req, res, next){
  // console.log(req.body.place);
  var result;

  places.autocomplete({input: req.body.place, types: "geocode"}, function(err, response) {
    if (err) {
      console.log(err);
      res.send(err);
    }else if (response.predictions[0]){
      result = response.predictions[0].description;
      console.log("autocomplete: ", result);
      res.send(result);
    } else{
      console.log("NO RESULTS");
      res.send('NO RESULTS');
    }


    // var success = function(err, response) {
    //   console.log("did you mean: ", response.result.name);
    // };


  });



})
Exemplo n.º 3
0
module.exports = function(req, res) {
  var feasibleTimeSlots;
  // Get the latitue and longitude for the city user selected
  locations.autocomplete({ input: req.param('text'), types: "(cities)" }, function(err, response) {
    locations.details({ placeid: response.predictions[0].place_id }, function(err, response) {
      // Get the timezone of the attendee
      request('https://api.timezonedb.com/?lat=' + response.result.geometry.location.lat + '&lng=' + response.result.geometry.location.lng + '&key=I16KGCYBRXQ8&format=json', function(error, response, body) {
        if (!error && response.statusCode == 200) {
          if(!req.session.preferences){
            res.json({
              body: 'Please set your preferences at <a href="https://104.131.165.92:3000/dashboard">https://104.131.165.92:3000/dashboard</a>',
              raw: true
            })
          }
          var config = {
            "slots_required_number": req.session.preferences.config_slots,
            "dates_required_number": req.session.preferences.config_days
          }
          var user = {
            "timezone": req.session.preferences.timezone,
            "available_time_start": req.session.preferences.user_start_time,
            "available_time_end": req.session.preferences.user_end_time,
            "busy_slots": []
          }
          var attendee = {
            "timezone": "America/Los_Angeles",
            "available_time_start": "08:00",
            "available_time_end": "21:00",
            "busy_slots": []
          }

          attendee.timezone = JSON.parse(body).zoneName

          var tokens = req.decoded
          google.oauth2Client.setCredentials({
            'access_token': tokens.access_token,
            'refresh_token': tokens.refresh_token
          });

          var userStartDate = moment.tz(user.available_time_start, 'HH:mm', user.timezone).add(1, "days")
          var userEndDate = moment.tz(user.available_time_end, 'HH:mm', user.timezone).add(config.dates_required_number, "days")
            // Get the events from the google calendar
          google.calendar.events.list({
            auth: google.oauth2Client,
            calendarId: 'primary',
            timeMin: userStartDate.format(),
            timeMax: userEndDate.format(),
            maxResults: 250,
            singleEvents: true,
            orderBy: 'startTime'
          }, function(err, response) {
            if (err) {
              console.log('The API returned an error: ' + err);
            }
            if (response) {
              user.busy_slots = response.items;
              helper.sendBestTimeSlots(res, user, attendee, config)
            } else {
              res.json({
                body: 'Please sign up at <a href="https://104.131.165.92:3000">https://104.131.165.92:3000</a>',
                raw: true
              })
            }
          });
        }
      });
    });
  });
}