File "controllers.js"
Full Path: /srv/www/www.cadoro.it/app/src/js/app/controllers.js
File size: 54.88 KB
MIME-type: text/plain
Charset: utf-8
angular.module('app.app.controllers', [
'ionic',
'ngCordova.plugins.beacon',
'ngCordova.plugins.nativeStorage'
])
.controller('AppController', function(
$rootScope,
$scope,
$http,
$ionicActionSheet,
$ionicHistory,
$ionicLoading,
$ionicModal,
$ionicPlatform,
$ionicPopup,
$location,
$timeout,
//$cordovaGoogleAnalytics,
//localStorageService,
$cordovaNativeStorage,
notifications,
API_END_POINT,
DEBUG
) {
//var user = localStorageService.get('user');
var user = false;
$ionicPlatform.ready(function() {
console.log("C28_get");
$cordovaNativeStorage.getItem('user').then(function (value) {
console.log("C28_get OK");
user = value;
$rootScope.user = user;
}, function(error) {
console.log("C28_get ERROR");
console.log(JSON.stringify(error));
});
});
$scope.doLogout = function () {
var logoutPopup = $ionicPopup.confirm({
title: 'Logout',
template: 'Sei sicuro di voler uscire?',
okText: 'Sì',
cancelText: 'No'
});
logoutPopup.then(function(res) {
if (res) {
$ionicHistory.nextViewOptions({
disableAnimate: false,
disableBack: true
});
//localStorageService.remove('user');
console.log("C50_rm");
$cordovaNativeStorage.remove('user').then(function (value) {
console.log("C50_rm OK");
$location.path('/welcome');
}, function(error) {
console.log("C50_rm ERROR");
console.log(JSON.stringify(error));
$location.path('/welcome');
});
}
});
};
var loadState = function () {
$ionicLoading.show({
template: 'Attendere, aggiornamento dati in corso...'
});
$http({
url: API_END_POINT + '/state',
method: "GET",
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
if (data.user) {
$rootScope.user = data.user;
//localStorageService.set('user', data.user);
console.log("C78_set");
$cordovaNativeStorage.setItem('user', data.user).then(function (value) {
console.log("C78_set OK");
}, function (error) {
console.log("C78_set ERROR");
console.log(JSON.stringify(error));
});
delete data.user;
}
if (data && data.push) {
$rootScope.push = data.push;
}
if (data && data.beacons) {
$rootScope.beacons = data.beacons;
setupBeacons();
}
//localStorageService.set('state', data);
console.log("C94_set");
$cordovaNativeStorage.setItem('state', data).then(function (value) {
console.log("C94_set OK");
$rootScope.$broadcast('ali:state');
}, function (error) {
console.log("C94_set ERROR");
console.log(JSON.stringify(error));
});
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
});
};
$rootScope.$on('ali:state', function () {
//var state = localStorageService.get('state') || {};
//var read = localStorageService.get('read_notifications') || [];
var state = {};
var read = [];
console.log("C109_get");
$cordovaNativeStorage.getItem('state').then(function (value) {
console.log("C109_get OK");
state = value;
console.log("C116_get");
$cordovaNativeStorage.getItem('read_notifications').then(function (value) {
console.log("C116_get OK");
read = value;
$rootScope.menu_pages = state.pages || [];
$rootScope.notifications_count = _.filter(state.notifications, function (n) {
return _.indexOf(read, n.id) == -1;
}).length;
}, function(error) {
console.log("C116_get ERROR");
console.log(JSON.stringify(error));
});
}, function(error) {
console.log("C109_get ERROR");
console.log(JSON.stringify(error));
$rootScope.menu_pages = [];
});
});
$ionicPlatform.ready(function() {
$timeout(function() {
loadState();
}, 300);
});
var modal;
$ionicModal.fromTemplateUrl('templates/carta.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(m) {
modal = m;
});
$scope.hideCarta = function () {
modal.hide();
};
$scope.showCarta = function () {
//$cordovaGoogleAnalytics.trackView('app.carta');
window.FirebasePlugin.setScreenName("app.carta");
window.FirebasePlugin.logEvent("page_view", {page: "app.carta"});
$scope.data = {
card: $rootScope.user.card,
points: $rootScope.user.points,
points_pending: $rootScope.user.points_pending,
};
modal.show();
if ($scope.data.card) {
$('#barcode').barcode($scope.data.card, "ean13", {
barWidth: 2,
barHeight: 50,
bgColor: '#fff',
fontSize: 24,
marginHRI: 12
});
}
};
// push notifications
var modalWelcome;
$ionicModal.fromTemplateUrl('templates/welcome.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(m) {
modalWelcome = m;
});
$scope.hideWelcome = function () {
modalWelcome.hide();
};
$scope.showWelcome = function () {
//$cordovaGoogleAnalytics.trackView('app.welcome');
window.FirebasePlugin.setScreenName("app.welcome");
window.FirebasePlugin.logEvent("page_view", {page: "app.welcome"});
modalWelcome.show();
};
$ionicPlatform.ready(function() {
/**/
if (ionic.Platform.isWebView() && ionic.Platform.isIOS()) {
//var push = localStorageService.get('push');
var push = 0;
console.log("C183_get");
$cordovaNativeStorage.getItem('push').then(function (value) {
console.log("C183_get OK");
push = value;
if (!push) {
var text_msg = 'Vuoi ricevere le notifiche dell’app Cadoro in tempo reale?<br><br>Così resterai sempre aggiornato sulle nuove offerte.';
if(user.first_app) {
text_msg = 'Vuoi ricevere le notifiche dell’app Cadoro in tempo reale?<br><br>Se dai il tuo consenso riceverai 100 punti di benvenuto, e resterai sempre aggiornato sulle nuove offerte.';
}
var confirmPopup = $ionicPopup.confirm({
title: 'Notifiche in tempo reale',
template: text_msg,
okText: 'Sì!',
cancelText: 'No, grazie.'
});
confirmPopup.then(function(res) {
if (res) {
notifications.initialize();
notifications.register(function (token) {
//localStorageService.set('push', 1);
console.log("C204_set");
$cordovaNativeStorage.setItem('push', 1).then(function (value) {
console.log("C204_set OK");
}, function (error) {
console.log("C204_set ERROR");
console.log(JSON.stringify(error));
});
if(user.first_app) {
$scope.showWelcome();
}
});
}
});
} else {
notifications.initialize();
notifications.register();
}
}, function(error) {
console.log("C183_get ERROR");
console.log(JSON.stringify(error));
notifications.initialize();
notifications.register();
});
} else {
notifications.initialize();
notifications.register(function (token) {
//var push = localStorageService.get('push');
var push = 0;
console.log("C231_get");
$cordovaNativeStorage.getItem('push').then(function (value) {
console.log("C231_get OK");
push = value;
if (!push) {
//localStorageService.set('push', 1);
console.log("C238_set");
$cordovaNativeStorage.setItem('push', 1).then(function (value) {
console.log("C238_set OK");
}, function (error) {
console.log("C238_set ERROR");
console.log(JSON.stringify(error));
});
if(user.first_app) {
$scope.showWelcome();
}
}
}, function(error) {
console.log("C231_get ERROR");
console.log(JSON.stringify(error));
//localStorageService.set('push', 1);
console.log("C252_set");
$cordovaNativeStorage.setItem('push', 1).then(function (value) {
console.log("C252_set OK");
}, function (error) {
console.log("C252_set ERROR");
console.log(JSON.stringify(error));
});
if(user.first_app) {
$scope.showWelcome();
}
});
});
}
/**/
});
// iBeacon
var foreground = true;
var didSetupBeacons = false;
$ionicPlatform.on('resume', function(event) {
foreground = true;
loadState();
});
$ionicPlatform.on('pause', function(event) {
foreground = false;
});
$rootScope.beacons = [];
var setupBeacons = function () {
if (didSetupBeacons || !window.cordova || !window.cordova.plugins || !window.cordova.plugins.locationManager) {
return;
}
didSetupBeacons = true;
$ionicPlatform.ready(function() {
var beaconStatus = {};
var delegate = new cordova.plugins.locationManager.Delegate();
delegate.didDetermineStateForRegion = function (pluginResult) {
// didEnterRegion
if (pluginResult.eventType == 'didDetermineStateForRegion' && pluginResult.state == 'CLRegionStateInside') {
if (beaconStatus[pluginResult.region.uuid.toUpperCase()].state != "inside") {
console.log('didEnterRegion: ' + JSON.stringify(pluginResult.region));
beaconStatus[pluginResult.region.uuid.toUpperCase()].state = "inside";
cordova.plugins.locationManager.startRangingBeaconsInRegion(beaconStatus[pluginResult.region.uuid.toUpperCase()].beaconRegion)
.fail(function(e) { console.error(e); })
.done();
// local notification
_.each($rootScope.push || [], function (notification) {
if (notification.target == 2 && _.find(beaconStatus[pluginResult.region.uuid.toUpperCase()].beacons, function (b) { return b.id == notification.target_beacon_id; })) {
var message = {
title: notification.title,
message: notification.message,
data: notification.data
};
cordova.plugins.notification.local.schedule(message);
if (foreground) {
localNotification(message);
}
}
});
}
}
// didExitRegion
else if (pluginResult.eventType == 'didDetermineStateForRegion' && pluginResult.state == 'CLRegionStateOutside') {
if (beaconStatus[pluginResult.region.uuid.toUpperCase()].state == "inside") {
console.log('didExitRegion: ' + JSON.stringify(pluginResult.region));
beaconStatus[pluginResult.region.uuid.toUpperCase()].devices = {};
beaconStatus[pluginResult.region.uuid.toUpperCase()].state = "outside";
cordova.plugins.locationManager.stopRangingBeaconsInRegion(beaconStatus[pluginResult.region.uuid.toUpperCase()].beaconRegion)
.fail(function(e) { console.error(e); })
.done();
// local notification
_.each($rootScope.push || [], function (notification) {
if (notification.target == 3 && _.find(beaconStatus[pluginResult.region.uuid.toUpperCase()].beacons, function (b) { return b.id == notification.target_beacon_id; })) {
var message = {
title: notification.title,
message: notification.message,
data: notification.data
};
cordova.plugins.notification.local.schedule(message);
if (foreground) {
localNotification(message);
}
}
});
}
}
};
// didRangeBeacon
delegate.didRangeBeaconsInRegion = function (pluginResult) {
console.log('didRangeBeaconsInRegion:' + JSON.stringify(pluginResult));
cordova.plugins.locationManager.appendToDeviceLog('didRangeBeaconsInRegion: ' + JSON.stringify(pluginResult));
if (pluginResult.eventType == 'didRangeBeaconsInRegion') {
_.each(pluginResult.beacons, function (b) {
var key = b.uuid.toUpperCase() + "/" + b.major.toString() + "/" + b.minor.toString();
var b_data = {'accuracy': b.accuracy, 'rssi': b.rssi, 'proximity': b.proximity};
if (beaconStatus[pluginResult.region.uuid.toUpperCase()].devices[key] &&
b_data.proximity != beaconStatus[pluginResult.region.uuid.toUpperCase()].devices[key].proximity) {
var target = null;
if (b_data.proximity == 'ProximityImmediate') {
target = 4;
} else if (b_data.proximity == 'ProximityNear') {
target = 5;
} else if (b_data.proximity == 'ProximityFar') {
target = 6;
}
if (target) {
// local notification
_.each($rootScope.push || [], function (notification) {
_.each(beaconStatus[pluginResult.region.uuid.toUpperCase()].beacons, function (beacon) {
if (notification.target == target && notification.target_beacon_id == beacon.id &&
beacon.uuid.toUpperCase() == b.uuid.toUpperCase() && beacon.major == b.major && beacon.minor == b.minor) {
var message = {
title: notification.title,
message: notification.message,
data: notification.data
};
cordova.plugins.notification.local.schedule(message);
if (foreground) {
localNotification(message);
}
}
});
});
}
}
// update status
beaconStatus[pluginResult.region.uuid.toUpperCase()].devices[key] = b_data;
});
}
};
cordova.plugins.locationManager.setDelegate(delegate);
cordova.plugins.locationManager.requestAlwaysAuthorization();
_.each($rootScope.beacons, function (beacon) {
var uuid = beacon.uuid.toUpperCase();
var identifier = beacon.identifier;
var minor = beacon.major;
var major = beacon.minor;
if (!beaconStatus[beacon.uuid.toUpperCase()]) {
var beaconRegion = new cordova.plugins.locationManager.BeaconRegion(beacon.identifier, beacon.uuid.toUpperCase());
beaconStatus[beacon.uuid.toUpperCase()] = {
beacons: [beacon],
beaconRegion: beaconRegion,
state: null,
devices: {}
};
cordova.plugins.locationManager.startMonitoringForRegion(beaconRegion)
.fail(function(e) { console.error(e); })
.done();
} else {
beaconStatus[beacon.uuid.toUpperCase()].beacons.push(beacon);
}
});
});
};
// android permissions
$ionicPlatform.ready(function() {
if (ionic.Platform.isWebView() && ionic.Platform.isAndroid() && window.cordova && window.cordova.plugins && window.cordova.plugins.permissions) {
cordova.plugins.permissions.hasPermission(cordova.plugins.permissions.ACCESS_COARSE_LOCATION, function (status) {
if (!status.hasPermission) {
cordova.plugins.permissions.requestPermission(cordova.plugins.permissions.ACCESS_COARSE_LOCATION, function(status) {
if (!status.hasPermission) {
didSetupBeacons = true;
}
}, null);
}
}, null);
}
});
// local notifications
var localNotification = function (notification) {
if (DEBUG) {
console.log('Local notification', JSON.stringify(notification));
}
if (typeof notification.data == "string") {
notification.data = JSON.parse(notification.data);
}
if (notification.data && notification.data.popup_title) {
var buttons = [];
if (notification.data.popup_button) {
buttons = [{text: (notification.data.popup_button_icon ? '<i class="' + notification.data.popup_button_icon + '"></i> ' : '') +
notification.data.popup_button}];
}
hideSheet = $ionicActionSheet.show({
titleText: notification.data.popup_title,
cancelText: '<i class="fa fa-times red"></i> Close',
cancel: function() {
hideSheet();
},
buttons: buttons,
buttonClicked: function(index) {
if (typeof notification.data == "string") {
notification.data = JSON.parse(notification.data);
}
if (index === 0 && notification.data.location) {
$timeout(function () {
if (notification.data.location.indexOf("cadoro.it") != -1) {
window.open(notification.data.location, '_blank');
} else if (notification.data.location.indexOf("http") === 0) {
window.open(notification.data.location, '_system', 'location=yes');
} else {
$location.path(notification.data.location);
}
}, 10);
}
}
});
} else if (notification.data && notification.data.location) {
if (notification.data.location.indexOf("cadoro.it") != -1) {
window.open(notification.data.location, '_blank');
} else if (notification.data.location.indexOf("http") === 0) {
window.open(notification.data.location, '_system', 'location=yes');
} else {
$location.path(notification.data.location);
}
}
};
$ionicPlatform.ready(function() {
if (window.cordova) {
cordova.plugins.notification.local.on('click', function (notification, state) {
localNotification(notification);
});
$rootScope.openQrReader = function () {
cordova.plugins.barcodeScanner.scan(
function (result) {
//console.log(result.text);
$http({
url: API_END_POINT + '/landing/',
method: "POST",
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
},
data: JSON.stringify({link: result.text}),
})
.success(function(data, status, headers, config) {
if (data && data.landing) {
$location.path('/app/landing/'+data.landing);
} else {
window.open(result.text, '_system');
}
})
.error(function(data, status, headers, config) {
console.log("error");
});
},
function (error) {
console.log("Scanning failed: " + error);
},
{
prompt : "Inquadra il QRcode", // Android
});
};
}
});
})
.controller('AppHomeController', function(
$rootScope,
$scope,
//$cordovaGoogleAnalytics,
$http,
$ionicLoading,
$ionicPopup,
$ionicScrollDelegate,
//localStorageService,
$cordovaNativeStorage,
$timeout,
$location,
API_END_POINT,
DEBUG
) {
var state = {};
var init = function () {
//var state = localStorageService.get('state') || {};
state = {};
console.log("C528_get");
$cordovaNativeStorage.getItem('state').then(function (value) {
console.log("C528_get OK");
state = value;
$scope.magazine = state.magazine;
$scope.store = _.find(state.stores || [], function (s) {
return s.id == $rootScope.user.store;
});
}, function(error) {
console.log("C528_get ERROR");
console.log(JSON.stringify(error));
$scope.magazine = [];
$scope.store = [];
});
$http({
url: API_END_POINT + '/punti-vendita/' + $rootScope.user.store,
method: "GET",
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
$scope.store = data.store;
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
});
};
$scope.$on('$ionicView.beforeEnter', function () {
init();
});
$scope.$on('ali:state', function () {
init();
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.home');
window.FirebasePlugin.setScreenName("app.home");
window.FirebasePlugin.logEvent("page_view", {page: "app.home"});
$timeout(function () {
if (navigator.splashscreen) {
navigator.splashscreen.hide();
}
}, 50);
});
$scope.noSondaggi = function () {
$ionicPopup.alert({
title: 'AVVISO',
template: '<p class="text-center">Al momento non ci sono sondaggi disponibili, ritorna presto per rispondere ad alcune domande sui nostri prodotti e attività. Potrai accedere a tanti vantaggi che Cadoro ti ha riservato.</p>'
});
};
})
.controller('AppListaSpesaController', function(
$rootScope,
$scope,
//$cordovaGoogleAnalytics,
$http,
$ionicLoading,
$ionicPopup,
$location,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
$scope.$on('$ionicView.beforeEnter', function () {
//$scope.lists = localStorageService.get('lists') || [];
$scope.lists = [];
console.log("C643_get");
$cordovaNativeStorage.getItem('lists').then(function (value) {
console.log("C643_get OK");
$scope.lists = value;
}, function(error) {
console.log("C643_get ERROR");
console.log(JSON.stringify(error));
});
$ionicLoading.show({
template: 'Attendere, aggiornamento dati in corso...'
});
$http({
url: API_END_POINT + '/lista-spesa',
method: "GET",
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
//localStorageService.set('lists', data.lists);
console.log("C666_set");
$cordovaNativeStorage.setItem('lists', data.lists).then(function (value) {
console.log("C666_set OK");
}, function (error) {
console.log("C666_set ERROR");
console.log(JSON.stringify(error));
});
$scope.lists = data.lists;
$ionicLoading.hide();
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.lista_spesa');
window.FirebasePlugin.setScreenName("app.lista_spesa");
window.FirebasePlugin.logEvent("page_view", {page: "app.lista_spesa"});
});
$scope.createList = function () {
$scope.data = {};
var myPopup = $ionicPopup.show({
template: '<input type="text" ng-model="data.name">',
title: 'Aggiungi un ingrediente...',
scope: $scope,
buttons: [
{ text: 'Annulla' },
{
text: '<b>AGGIUNGI</b>',
type: 'button-positive',
onTap: function(e) {
if (!$scope.data.name) {
e.preventDefault();
} else {
return $scope.data.name;
}
}
}
]
}).then(function(res) {
if (res) {
$ionicLoading.show({
template: 'Attendere, invio dati in corso...'
});
$http({
url: API_END_POINT + '/lista-spesa',
method: "POST",
data: JSON.stringify({name: res}),
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
if (data.list) {
$scope.lists.splice(0, 0, data.list);
//localStorageService.set('lists', $scope.lists);
console.log("C723_set");
$cordovaNativeStorage.setItem('lists', $scope.lists).then(function (value) {
console.log("C723_set OK");
}, function (error) {
console.log("C723_set ERROR");
console.log(JSON.stringify(error));
});
}
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'ERRORE',
template: '<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'
});
});
}
});
};
$scope.sendList = function () {
$ionicLoading.show({
template: 'Attendere, aggiornamento dati in corso...'
});
$http({
url: API_END_POINT + '/lista-spesa',
data: {email: 1},
method: "POST",
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'CONFERMA',
template: '<p class="text-center">La lista della spesa è stata inviata alla tua email!</p>'
});
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'ERRORE',
template: '<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'
});
});
};
$scope.pdfList = function () {
$ionicLoading.show({
template: 'Attendere, aggiornamento dati in corso...'
});
$http({
url: API_END_POINT + '/lista-spesa',
data: {pdf: 1},
method: "POST",
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
if (data.pdf) {
window.open(data.pdf, '_system');
}
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'ERRORE',
template: '<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'
});
});
};
$scope.deleteList = function (idList) {
$ionicPopup.confirm({
title: 'CONFERMA ELIMINAZIONE',
template: idList ? '<p class="text-center">Sei sicuro di voler eliminare la riga selezionata?</p>' : '<p class="text-center">Sei sicuro di voler eliminare la lista della spesa?</p>',
}).then(function (res) {
if (res) {
$ionicLoading.show({
template: 'Attendere, aggiornamento dati in corso...'
});
$http({
url: API_END_POINT + '/lista-spesa/' + (idList ? idList.toString() : ""),
method: "DELETE",
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
if (idList) {
$scope.lists = _.filter($scope.lists, function (list) {
return list.id != idList;
});
} else {
$scope.lists = [];
}
//localStorageService.set('lists', $scope.lists);
console.log("C826_set");
$cordovaNativeStorage.setItem('lists', $scope.lists).then(function (value) {
console.log("C826_set OK");
}, function (error) {
console.log("C826_set ERROR");
console.log(JSON.stringify(error));
});
$ionicLoading.hide();
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'ERRORE',
template: '<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'
});
});
}
});
};
})
.controller('AppOfferteController', function(
$rootScope,
$scope,
$stateParams,
//$cordovaGoogleAnalytics,
$http,
$ionicLoading,
$ionicPopup,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
var initialized = false;
$scope.$on('$ionicView.beforeEnter', function () {
$scope.points = 0;
$scope.categories = [];
$scope.products = [];
$ionicLoading.show({
template: 'Attendere, aggiornamento dati in corso...'
});
$http({
url: API_END_POINT + '/offerte',
method: "GET",
timeout: 30000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$scope.points = data.points;
$scope.products = data.products;
$scope.categories = _.map(data.categories, function (category) {
category.products = $scope.paginate(_.filter(data.products, function (p) { return p.category_id == category.id; }), 2);
return category;
});
$ionicLoading.hide();
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.offerte');
window.FirebasePlugin.setScreenName("app.offerte");
window.FirebasePlugin.logEvent("page_view", {page: "app.offerte"});
});
$scope.paginate = function(arr, size) {
var pages = [];
size = size || this.length;
while (arr.length) {
pages.push(arr.splice(0, size));
}
return pages;
};
})
.controller('AppPreferitiController', function(
$rootScope,
$scope,
$stateParams,
//$cordovaGoogleAnalytics,
$http,
$ionicLoading,
$ionicPopup,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
var initialized = false;
$scope.$on('$ionicView.beforeEnter', function () {
$scope.favourites = [];
$ionicLoading.show({
template: 'Attendere, aggiornamento dati in corso...'
});
$http({
url: API_END_POINT + '/preferiti',
method: "GET",
timeout: 30000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$scope.favourites = data.favourites;
$ionicLoading.hide();
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.preferiti');
window.FirebasePlugin.setScreenName("app.preferiti");
window.FirebasePlugin.logEvent("page_view", {page: "app.preferiti"});
});
})
.controller('AppPaginaController', function(
$rootScope,
$scope,
$stateParams,
//$cordovaGoogleAnalytics,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
$scope.$on('$ionicView.beforeEnter', function () {
//var state = localStorageService.get('state') || {};
var state = {};
console.log("C957_get");
$cordovaNativeStorage.getItem('state').then(function (value) {
console.log("C957_get OK");
state = value;
$scope.page = _.find(state.pages || [], function (p) {
return p.id == $stateParams.pageId;
});
}, function(error) {
console.log("C957_get ERROR");
console.log(JSON.stringify(error));
$scope.page = [];
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.pagina.' + $scope.page.id.toString());
window.FirebasePlugin.setScreenName('app.pagina.' + $scope.page.id.toString());
window.FirebasePlugin.logEvent("page_view", {page: 'app.pagina.' + $scope.page.id.toString()});
});
})
.controller('AppImpostazioniController', function(
$rootScope,
$scope,
//$cordovaGoogleAnalytics,
$http,
$ionicLoading,
$ionicPopup,
$ionicScrollDelegate,
$timeout,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
$scope.$on('$ionicView.beforeEnter', function () {
$scope.notifications = {value: !!$rootScope.user.app_notifications};
//var state = localStorageService.get('state') || {};
//$scope.privacy_intro = state.privacy_intro || "";
//$scope.privacy_text = state.privacy_text || "";
var state = {};
$scope.privacy_intro = "";
$scope.privacy_text = "";
console.log("C999_get");
$cordovaNativeStorage.getItem('state').then(function (value) {
console.log("C999_get OK");
state = value;
$scope.privacy_intro = state.privacy_intro || "";
$scope.privacy_text = state.privacy_text || "";
}, function(error) {
console.log("C999_get ERROR");
console.log(JSON.stringify(error));
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.impostazioni');
window.FirebasePlugin.setScreenName('app.impostazioni');
window.FirebasePlugin.logEvent("page_view", {page: 'app.impostazioni'});
});
$scope.toggleExpand = function () {
$scope.expand = !$scope.expand;
$timeout(function () {
$ionicScrollDelegate.resize();
}, 50);
};
$scope.$watch('notifications', function (newValue, oldValue) {
if (newValue.value == $rootScope.user.app_notifications) {
return;
}
$ionicLoading.show({
template: 'Attendere, aggiornamento dati in corso...'
});
//var data = localStorageService.get('notifications') || {};
var data = {};
console.log("C1029_get");
$cordovaNativeStorage.getItem('notifications').then(function (value) {
console.log("C1029_get OK");
data = value;
data.app_notifications = newValue.value;
$http({
url: API_END_POINT + '/token',
method: "POST",
data: JSON.stringify(data),
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
$rootScope.user.app_notifications = newValue.value;
//localStorageService.set('user', $rootScope.user);
console.log("C1049_set");
$cordovaNativeStorage.setItem('user', $rootScope.user).then(function (value) {
console.log("C1049_set OK");
}, function (error) {
console.log("C1049_set ERROR");
console.log(JSON.stringify(error));
});
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'ERRORE',
template: '<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'
});
});
}, function(error) {
console.log("C1029_get ERROR");
console.log(JSON.stringify(error));
$ionicLoading.hide();
});
}, true);
})
.controller('AppAssistenzaController', function(
$rootScope,
$scope,
//$cordovaGoogleAnalytics,
$http,
$ionicLoading,
$ionicPopup,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
$scope.$on('$ionicView.beforeEnter', function () {
//var state = localStorageService.get('state') || {};
var state = {};
console.log("C1088_get");
$cordovaNativeStorage.getItem('state').then(function (value) {
console.log("C1088_get OK");
state = value;
$scope.subjects = state.subjects;
}, function(error) {
console.log("C1088_get ERROR");
console.log(JSON.stringify(error));
$scope.subjects = [];
});
$scope.data = {
subject: null,
message: null,
card: $rootScope.user.card,
email: $rootScope.user.email,
firstname: $rootScope.user.firstname,
lastname: $rootScope.user.lastname
};
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.assistenza');
window.FirebasePlugin.setScreenName('app.assistenza');
window.FirebasePlugin.logEvent("page_view", {page: 'app.assistenza'});
});
$scope.send = function (data) {
$ionicLoading.show({
template: 'Attendere, invio dati in corso...'
});
$http({
url: API_END_POINT + '/assistenza',
method: "POST",
data: JSON.stringify(data),
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'CONFERMA',
template: '<p class="text-center">Il messaggio è stato inviato correttamente, ti contatteremo il prima possibile!</p>'
});
$scope.data.subject = null;
$scope.data.message = null;
$scope.data.email = false;
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'ERRORE',
template: '<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'
});
});
};
})
.controller('AppAssistenzaTourController', function(
$rootScope,
$scope,
//$cordovaGoogleAnalytics,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
$scope.$on('$ionicView.beforeEnter', function () {
//var state = localStorageService.get('state') || {};
var state = {};
$scope.banners = [];
console.log("C1159_get");
$cordovaNativeStorage.getItem('state').then(function (value) {
console.log("C1159_get OK");
state = value;
$scope.banners = state.tour;
}, function(error) {
console.log("C1159_get ERROR");
console.log(JSON.stringify(error));
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.assistenza.tour');
window.FirebasePlugin.setScreenName('app.assistenza.tour');
window.FirebasePlugin.logEvent("page_view", {page: 'app.assistenza.tour'});
});
})
.controller('AppProfiloController', function(
$rootScope,
$scope,
//$cordovaGoogleAnalytics,
$http,
$ionicLoading,
$ionicPopup,
$ionicScrollDelegate,
$timeout,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
$scope.$on('$ionicView.beforeEnter', function () {
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.profilo');
window.FirebasePlugin.setScreenName('app.profilo');
window.FirebasePlugin.logEvent("page_view", {page: 'app.profilo'});
});
})
.controller('AppProfiloModificaController', function(
$rootScope,
$scope,
//$cordovaGoogleAnalytics,
$http,
$ionicHistory,
$ionicLoading,
$ionicPopup,
$timeout,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
$scope.$on('$ionicView.beforeEnter', function () {
$scope.user = _.clone($rootScope.user);
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.profilo_modifica');
window.FirebasePlugin.setScreenName('app.profilo_modifica');
window.FirebasePlugin.logEvent("page_view", {page: 'app.profilo_modifica'});
});
$scope.update = function (user) {
$http({
url: API_END_POINT + '/profilo',
method: "PUT",
data: JSON.stringify(user),
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicHistory.goBack(-1);
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'ERRORE',
template: '<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'
});
});
};
})
.controller('AppNotificheController', function(
$rootScope,
$scope,
//$cordovaGoogleAnalytics,
$http,
$ionicLoading,
$ionicPopup,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
var initialized = false;
$scope.$on('$ionicView.beforeEnter', function () {
$scope.notifications = [];
$ionicLoading.show({
template: 'Attendere, aggiornamento dati in corso...'
});
$http({
url: API_END_POINT + '/notifiche',
method: "GET",
timeout: 30000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
//var read = localStorageService.get('read_notifications') || [];
var read = [];
$scope.notifications = [];
console.log("C1272_get");
$cordovaNativeStorage.getItem('read_notifications').then(function (value) {
console.log("C1272_get OK");
read = value;
$scope.notifications = _.map(data.notifications, function (n) {
n.read = (_.indexOf(read, n.id) != -1);
return n;
});
}, function(error) {
console.log("C1272_get ERROR");
console.log(JSON.stringify(error));
});
$ionicLoading.hide();
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.notifiche');
window.FirebasePlugin.setScreenName('app.notifiche');
window.FirebasePlugin.logEvent("page_view", {page: 'app.notifiche'});
});
$scope.read = function (notification) {
//var read = localStorageService.get('read_notifications') || [];
var read = [];
console.log("C1298_get");
$cordovaNativeStorage.getItem('read_notifications').then(function (value) {
console.log("C1298_get OK");
read = value;
if (_.indexOf(read, notification.id) == -1) {
read.push(notification.id);
//localStorageService.set('read_notifications', read);
console.log("C1306_set");
$cordovaNativeStorage.setItem('read_notifications', read).then(function (value) {
console.log("C1306_set OK");
}, function (error) {
console.log("C1306_set ERROR");
console.log(JSON.stringify(error));
});
}
}, function(error) {
console.log("C1298_get ERROR");
console.log(JSON.stringify(error));
});
$rootScope.$broadcast('ali:state');
window.open(notification.url, '_system');
};
})
.controller('AppPuntiVenditaController', function(
$rootScope,
$scope,
$http,
$ionicLoading,
$ionicPopup,
//$cordovaGoogleAnalytics,
$timeout,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG,
utilities
) {
$scope.$on('$ionicView.beforeEnter', function () {
//var state = localStorageService.get('state') || {};
var state = {};
console.log("C1340_get");
$cordovaNativeStorage.getItem('state').then(function (value) {
console.log("C1340_get OK");
state = value;
$scope.stores = state.stores || [];
}, function(error) {
console.log("C1340_get ERROR");
console.log(JSON.stringify(error));
$scope.stores = [];
});
$scope.stores_results = [];
$scope.provinces = [];
$scope.cities = [];
$scope.data = {
province: null,
city: null,
};
$http({
url: API_END_POINT + '/punti-vendita',
method: "GET",
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
$scope.stores = state.stores = data.stores;
$scope.filter();
//localStorageService.set('state', state);
console.log("C1373_set");
$cordovaNativeStorage.setItem('state', state).then(function (value) {
console.log("C1373_set OK");
}, function (error) {
console.log("C1373_set ERROR");
console.log(JSON.stringify(error));
});
var current_position = function () {
navigator.geolocation.getCurrentPosition(
function (position, force) {
var stores = _.map($scope.stores, function (s) {
var d = position ? utilities.geodistance(s.lat, s.lng, position.coords.latitude, position.coords.longitude) : null;
s.distance = parseInt(d);
return s;
});
$timeout(function (stores) {
return function () {
$scope.stores = _.sortBy(stores, function (e) { return e.distance; });
$scope.filter();
};
}(stores));
}
, function (error) {
if (error.code == 1 && !$rootScope.punti_vendita_nogeo) {
$rootScope.punti_vendita_nogeo = 1;
$ionicPopup.alert({
title: 'AVVISO',
template: '<p class="text-center">Per trovare il supermercato più vicino a te, abilita la localizzazione nelle impostazioni del tuo smartphone.</p>',
});
}
}
, {timeout: 10000, enableHighAccuracy: false, maximumAge: 600000}
);
};
if (ionic.Platform.isWebView() && ionic.Platform.isAndroid() && window.cordova && window.cordova.plugins && window.cordova.plugins.permissions) {
cordova.plugins.permissions.hasPermission(cordova.plugins.permissions.ACCESS_FINE_LOCATION, function (status) {
if (!status.hasPermission) {
cordova.plugins.permissions.requestPermission(cordova.plugins.permissions.ACCESS_FINE_LOCATION, function(status) {
current_position();
}, null);
} else {
current_position();
}
}, null);
} else {
current_position();
}
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'ERRORE',
template: '<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'
});
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.punti_vendita');
window.FirebasePlugin.setScreenName('app.punti_vendita');
window.FirebasePlugin.logEvent("page_view", {page: 'app.punti_vendita'});
});
$scope.filter = function () {
$scope.stores_results = [];
$scope.provinces = [];
$scope.cities = [];
_.each($scope.stores, function (s) {
if (!_.find($scope.provinces, function (p) { return p == s.province; })) {
$scope.provinces.push(s.province);
}
if ((!$scope.data.province || $scope.data.province == s.province) &&
(!$scope.data.city || $scope.data.city == s.city)) {
$scope.stores_results.push(s);
if (!_.find($scope.cities, function (p) { return p == s.city; })) {
$scope.cities.push(s.city);
}
}
});
};
$scope.$watch('data', function (newValue, oldValue) {
$scope.filter();
}, true);
})
.controller('AppPuntiVenditaDettaglioController', function(
$rootScope,
$scope,
$http,
$ionicLoading,
//$cordovaGoogleAnalytics,
$ionicHistory,
$ionicNavBarDelegate,
$ionicPopup,
$ionicScrollDelegate,
$ionicPlatform,
$state,
$stateParams,
$timeout,
//localStorageService,
$cordovaNativeStorage,
API_END_POINT,
DEBUG
) {
$scope.$on('$ionicView.beforeEnter', function () {
//var state = localStorageService.get('state') || {};
var state = {};
$ionicPlatform.ready(function() {
console.log("C1318_get");
$cordovaNativeStorage.getItem('state').then(function (value) {
console.log("C1318_get OK");
state = value;
$scope.store = _.find(state.stores || [], function (s) {
return s.id == $stateParams.id;
});
}, function(error) {
console.log("C1318_get ERROR");
console.log(JSON.stringify(error));
});
$scope.view = 1;
$timeout(function(){
$http({
url: API_END_POINT + '/punti-vendita/' + $stateParams.id,
method: "GET",
timeout: 10000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$ionicLoading.hide();
$scope.store = data.store;
//localStorageService.set('state', state);
console.log("C1343_set");
$cordovaNativeStorage.setItem('state', state).then(function (value) {
console.log("C1343_set OK");
}, function (error) {
console.log("C1343_set ERROR");
console.log(JSON.stringify(error));
});
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
$ionicPopup.alert({
title: 'ERRORE',
template: '<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'
});
});
}, 1000);
$ionicNavBarDelegate.showBackButton(false);
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.punti_vendita_dettaglio');
$ionicPlatform.ready(function() {
window.FirebasePlugin.setScreenName('app.punti_vendita_dettaglio');
window.FirebasePlugin.logEvent("page_view", {page: 'app.punti_vendita_dettaglio'});
});
});
$scope.$on('$ionicView.leave', function () {
$ionicNavBarDelegate.showBackButton(false);
});
$scope.setView = function (v) {
$scope.view = v;
$timeout(function () {
if (v == 2) {
var store = $scope.store
, options = {
zoom: 13
, mapTypeId: google.maps.MapTypeId.ROADMAP
, disableDefaultUI: true
, zoomControl: true
};
var map = new google.maps.Map(document.getElementById("gmap-" + $scope.store.id.toString()), options);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(store.lat, store.lng)
, map: map
, title: store.title
});
map.setCenter(new google.maps.LatLng(store.lat, store.lng));
map.setZoom(13);
}
$ionicScrollDelegate.resize();
}, 100);
};
$scope.goBack = function () {
if ($ionicHistory.backView()) {
$ionicHistory.goBack();
} else {
$ionicHistory.nextViewOptions({
disableBack: true
});
if (!$scope.store || $scope.store.id == $rootScope.user.store) {
$state.go('app.home');
} else {
$state.go('app.punti_vendita');
}
}
};
})
.controller('AppMagazineController', function(
$rootScope,
$scope,
$http,
$ionicLoading,
//$cordovaGoogleAnalytics,
$ionicHistory,
$ionicNavBarDelegate,
$ionicPopup,
$ionicScrollDelegate,
$state,
$stateParams,
$timeout,
//localStorageService,
$cordovaNativeStorage,
$sce,
API_END_POINT,
DEBUG
) {
var initialized = false;
$scope.$on('$ionicView.beforeEnter', function () {
//var state = localStorageService.get('state') || {};
var state = {};
$scope.magazine = [];
console.log("C1585_get");
$cordovaNativeStorage.getItem('state').then(function (value) {
console.log("C1585_get OK");
state = value;
$scope.magazine = state.magazine;
}, function(error) {
console.log("C1585_get ERROR");
console.log(JSON.stringify(error));
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.magazine');
window.FirebasePlugin.setScreenName('app.magazine');
window.FirebasePlugin.logEvent("page_view", {page: 'app.magazine'});
});
$scope.trustAsHtml = function(string) {
return $sce.trustAsHtml(string);
};
})
.controller('AppLandingController', function(
$rootScope,
$scope,
$http,
$ionicLoading,
//$cordovaGoogleAnalytics,
$ionicHistory,
$ionicNavBarDelegate,
$ionicPopup,
$ionicScrollDelegate,
$state,
$stateParams,
$timeout,
//localStorageService,
$cordovaNativeStorage,
$location,
$sce,
API_END_POINT,
DEBUG
) {
var id = $stateParams.id;
console.log('id: '+id);
$scope.$on('$ionicView.beforeEnter', function () {
$http({
url: API_END_POINT + '/landing/' + id,
method: "GET",
timeout: 30000,
headers: {
'Authorization': 'Basic ' + btoa($rootScope.user.id + ':' + $rootScope.user.card),
'Content-Type': 'application/json'
}
})
.success(function(data, status, headers, config) {
$scope.landing = data.landing;
$ionicLoading.hide();
})
.error(function(data, status, headers, config) {
$ionicLoading.hide();
});
});
$scope.$on('$ionicView.enter', function () {
//$cordovaGoogleAnalytics.trackView('app.landing');
window.FirebasePlugin.setScreenName('app.landing');
window.FirebasePlugin.logEvent("page_view", {page: 'app.landing'});
if (navigator.splashscreen) {
navigator.splashscreen.hide();
}
});
$scope.trustAsHtml = function(string) {
return $sce.trustAsHtml(string);
};
});