diff --git a/include/controllers/default/crunchbutton/api/restaurants/index.php b/include/controllers/default/crunchbutton/api/restaurants/index.php index ba7738f07..868171c4c 100644 --- a/include/controllers/default/crunchbutton/api/restaurants/index.php +++ b/include/controllers/default/crunchbutton/api/restaurants/index.php @@ -16,7 +16,24 @@ class Controller_api_restaurants extends Crunchbutton_Controller_Rest { } private function _hours(){ - $ids = explode( ',', c::getPagePiece( 3 ) ); + $lat = $this->request()[ 'lat' ]; + $lon = $this->request()[ 'lon' ]; + $range = $this->request()[ 'range' ]; + + $ids = []; + + if( $lat && $lon && $range ){ + $restaurants = Restaurant::byRange([ + 'lat' => $_REQUEST['lat'], + 'lon' => $_REQUEST['lon'], + 'range' => $_REQUEST['range'] + ]); + foreach ($restaurants as $restaurant) { + $ids[] = $restaurant->id_restaurant; + } + } else { + $ids = explode( ',', c::getPagePiece( 3 ) ); + } $restaurants = []; foreach( $ids as $id ){ $restaurant = Restaurant::o( $id ); diff --git a/www/assets/js/controllers.js b/www/assets/js/controllers.js index 93650a6de..ebaa575e5 100644 --- a/www/assets/js/controllers.js +++ b/www/assets/js/controllers.js @@ -1050,6 +1050,7 @@ NGApp.controller( 'RestaurantCtrl', function ($scope, $http, $routeParams, $root // update if the restaurant is closed or open every 35 seconds var updateStatus = function(){ updateRestaurantStatus = $timeout( function(){ + dateTime.reload(); $scope.restaurant.open(); $scope.restaurant.reloadHours( true, function(){ var open = $scope.restaurant._open; diff --git a/www/assets/js/datetime.js b/www/assets/js/datetime.js index 028b2afb4..d8f49bd5b 100644 --- a/www/assets/js/datetime.js +++ b/www/assets/js/datetime.js @@ -7,8 +7,8 @@ var dateTime = { dateTime.update = function(){ var time = _gmtServer.split( '/' ); dateTime.now = new Date( Number(time[0]), Number(time[1]-1), Number(time[2]), Number(time[3]), Number(time[4]), ( Number(time[5]) + dateTime.timer ) ) ; - dateTime.timer++; - dateTime.gears = setTimeout( function(){ dateTime.update(); } ,1000); + dateTime.timer++; + dateTime.gears = setTimeout( function(){ dateTime.update(); }, 1000 ); } // This method will be called by phonegap at the 'resume' event @@ -28,10 +28,10 @@ dateTime.reload = function(){ _gmtServer = json.gmt; dateTime.timer = 0; if( dateTime.gears ){ - clearTimeout( dateTime.gears ); + clearTimeout( dateTime.gears ); } dateTime.update(); - App.rootScope.$broadcast( 'appResume', false ); + App.rootScope.$broadcast( 'appResume', false ); } ).error( function(){ window.location.reload(); } ); } diff --git a/www/assets/js/restaurant.js b/www/assets/js/restaurant.js index 07bcaf403..e095c1508 100644 --- a/www/assets/js/restaurant.js +++ b/www/assets/js/restaurant.js @@ -203,7 +203,6 @@ var Restaurant = function(id) { var now_time = now.getTime(); // loop to verify if it is open self._open = false; - if( self.hours && self.hours.length > 0 ){ for( x in self.hours ){ self._hasHours = true; @@ -320,6 +319,7 @@ var Restaurant = function(id) { // Check the restaurant cache age and reload the hours if it is necessary self.reloadHours = function( forceLoad, callback ){ + dateTime.reload(); var load = false; var now = ( Math.floor( new Date().getTime() / 1000 ) ); if( forceLoad ){ diff --git a/www/assets/js/services.restaurant.js b/www/assets/js/services.restaurant.js index bed464b99..0eb5aec7e 100644 --- a/www/assets/js/services.restaurant.js +++ b/www/assets/js/services.restaurant.js @@ -206,16 +206,25 @@ NGApp.factory('RestaurantsService', function ($http, $rootScope, PositionsServic } service.reloadAllHours = function( callback ){ - var ids = []; - for ( var x in restaurants ) { - ids.push( restaurants[x].id_restaurant ); + if( service.loadingHours ){ + return; } - if( ids.length > 0 ){ - if( service.loadingHours ){ - return; + var url = null; + if( service.position.pos().lat() && service.position.pos().lon() ){ + url = App.service + 'restaurants/hours/?lat=' + service.position.pos().lat() + '&lon=' + service.position.pos().lon() + '&range=' + (service.position.range || 2 ); + } else { + var ids = []; + for ( var x in restaurants ) { + ids.push( restaurants[x].id_restaurant ); } + if( ids.length > 0 ){ + url = App.service + 'restaurants/hours/' + ids.join( ',' ); + } + + } + dateTime.reload(); + if( url ){ service.loadingHours = true; - var url = App.service + 'restaurants/hours/' + ids.join( ',' ); $http.get( url, { cache: false }).success(function ( hours ) {